加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用Vagrant的多个EC2实例

发布时间:2020-12-17 02:06:47 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Vagrant在AWS中配置一个具有多个EC2实例的环境(使用 vagrant-aws个插件)并使用JSON配置文件来读取Vgrant.以下是JSON文件: macp-3:vagrant-aws sans$cat scripts/aws.json{ "env": "dops","access_key": "XXXXXXXXXXXXXXXX","secret_key": "hf
我正在尝试使用Vagrant在AWS中配置一个具有多个EC2实例的环境(使用 vagrant-aws个插件)并使用JSON配置文件来读取Vgrant.以下是JSON文件:

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","tags": {
                "Name": "dops-nag-001","Role": "monitoring","ServiceType": "controller","NopeType": "nagios","CostCentre": "QA"
            }
        }
    }
}

这是我提出的Vagrantfile:

# -*- 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

它工作正常,但尝试并行旋转盒子,而不是一个接一个:

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中循环有一些问题?有人能告诉我这里会发生什么事吗?最好!

解决方法

这个问题已经是 answered in a Google Group了.

解:

– [no-] parallel – 如果提供商支持,则将多台计算机并行启动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读