首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vagrant的多个EC2实例

使用Vagrant的多个EC2实例
EN

Stack Overflow用户
提问于 2014-06-24 11:09:21
回答 1查看 1.5K关注 0票数 4

我正在试用Vagrant,以便在AWS中提供一个具有多个EC2实例的环境(使用流浪汉-aws插件),并使用一个JSON文件来读取流浪汉-aws。下面是JSON文件:

代码语言:javascript
复制
macp-3:vagrant-aws sans$ cat scripts/aws.json
{
    "env": "dops",
    "access_key": "XXXXXXXXXXXXXXXX",
    "secret_key": "hfgy5ejfkprg2432432beqo2r",
    "region": "eu-west-1",
    "availability_zone": "a",
    "subnet_id": "subnet-0b766860",
    "security_groups": [
        "sg-53t48c34",
        "sg-11668f7e",
        "sg-4a6c8525",
        "sg-75168c1e"
    ],
    "ssh_username": "ubuntu",
    "keypair": "Xdops_testKey",
    "ssh_private_key": "/Users/sans/.ssh/id_rsa",
    "ec2s": {
        "dops-agg-001": {
            "ami_id": "ami-838675f7",
            "instance_type": "m3.medium",
            "elastic_ip": "ture",
            "tags": {
                "Name": "dops-agg-001",
                "Role": "sql-aggr",
                "ServiceType": "database",
                "NopeType": "mem_master",
                "CostCentre": "QA"
            }
        },
        "dops-nag-001": {
            "ami_id": "ami-838675f7",
            "instance_type": "m3.medium",
            "elastic_ip": "ture",
            "tags": {
                "Name": "dops-nag-001",
                "Role": "monitoring",
                "ServiceType": "controller",
                "NopeType": "nagios",
                "CostCentre": "QA"
            }
        }
    }
}

这是我想出的Vagrantfile

代码语言:javascript
复制
# -*- mode: ruby -*-
# vi: set ft=ruby :

aws_cfg = (JSON.parse(File.read("scripts/aws.json")))

Vagrant.configure("2") do |config|

    config.vm.box = "dummy"
    config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"

    aws_cfg['ec2s'].each do |node|
        node_name  = node[0]
        node_value = node[1]

        # Node specific configuration
        config.vm.define node_name do |config2|
            ec2_tags = node_value['tags']

            # Spining up EC2 instances
            config2.vm.provider :aws do |ec2, override|
                ec2.access_key_id = aws_cfg['access_key']
                ec2.secret_access_key = aws_cfg['secret_key']
                ec2.keypair_name = aws_cfg['keypair']
                ec2.region = aws_cfg['region']
                ec2.availability_zone = aws_cfg['region']+aws_cfg['availability_zone']
                ec2.subnet_id = aws_cfg['subnet_id']
                ec2.security_groups = aws_cfg['security_groups']
                #
                ec2.ami = node_value['ami_id']
                ec2.instance_type = node_value['instance_type']
                ec2.elastic_ip = node_value['elastic_ip']
                #
                ec2.tags = {
                    'Name'         => ec2_tags['Name'],
                    'Role'         => ec2_tags['Role'],
                    'ServiceType'  => ec2_tags['ServiceType'],
                    'NopeType'     => ec2_tags['NopeType'],
                    'CostCentre'   => ec2_tags['CostCentre']
                }
                #
                override.ssh.username = "ubuntu"
                override.ssh.private_key_path = "/Users/sans/.ssh/id_rsa"
            end

            # Final Puppet provisioning
            #config2.vm.provision :puppet do |ppt|
            #    ppt.options = "--verbose --debug"
            #    ppt.manifests_path = "puppet/manifests"
            #    ppt.manifest_file  = "nodes.pp"
            #    ppt.module_path = "puppet/modules"
            #end
        end
    end
end

它运行得很好,但试图并行地旋转盒子,而不是一个接一个地旋转:

代码语言:javascript
复制
macp-3:vagrant-aws sans$ vagrant up --provider=aws
Bringing machine 'dops-agg-001' up with 'aws' provider...
Bringing machine 'dops-mon-001' up with 'aws' provider...
[fog][WARNING] Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.
==> dops-mon-001: HandleBoxUrl middleware is deprecated. Use HandleBox instead.
==> dops-mon-001: This is a bug with the provider. Please contact the creator
==> dops-agg-001: HandleBoxUrl middleware is deprecated. Use HandleBox instead.
==> dops-mon-001: of the provider you use to fix this.
....
....

我相信在Vagrantfile文件中循环有问题吗?有人能告诉我这是怎么回事吗?最好的!

EN

回答 1

Stack Overflow用户

发布于 2015-01-28 10:29:14

这个问题一直是在谷歌集团中回答

解决方案:

--[no-]parallel --如果提供程序支持多台机器,则并行地启动它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24385079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档