【问题标题】:Vagrant AWS error when specifying a VPC指定 VPC 时出现 Vagrant AWS 错误
【发布时间】:2015-10-22 23:37:45
【问题描述】:

我正在使用 Vagrant & ChefSolo 在 AWS 中设置服务器。设置经典实例时它工作正常,但是当我尝试指定 VPC(通过子网 ID)并指定仅在 VPC 中可用的 ec2 实例类型时,vagrant up 调用会导致以下错误。有谁知道如何让 Vagrant 使用 VPC?

==> default: Launching an instance with the following settings...
==> default:  -- Type: t2.micro
==> default:  -- AMI: ami-96401ce1
==> default:  -- Region: eu-west-1
==> default:  -- Keypair: vagrant-key-pair-eu-west-1
==> default:  -- IAM Instance Profile Name: DEV-config-ipython
==> default:  -- Security Groups: ["ssh-only-from-anywhere", "http-from-me"]
==> default:  -- Block Device Mapping: []
==> default:  -- Terminate On Shutdown: false
==> default:  -- Monitoring: false
==> default:  -- EBS optimized: false
==> default:  -- Assigning a public IP address in a VPC: false
There was an error talking to AWS. The error message is shown
below:

VPCResourceNotSpecified => The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request.

我的 Vagrant 文件如下...

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu_aws"
  config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"

  #config.vm.synced_folder "../.", "/vagrant", id: "vagrant-root"

  config.omnibus.chef_version = :latest

  config.vm.provider :aws do |aws, override|
    aws.region = "eu-west-1"
    aws.security_groups = [ 'ssh-only-from-me', 'http-from-me' ]
    aws.access_key_id = ENV['AWS_ACCESS_KEY_ID']
    aws.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
    aws.keypair_name = ENV['AWS_KEYPAIR_NAME']
    #aws.instance_type = "m3.medium"
    aws.instance_type = "t2.micro"

    aws.ami = "ami-96401ce1"  ## Ubuntu 14 LTS on HVM

    subnet_id = "subnet-ed9cd588" # vagrantVPC publicSubnet
    associate_public_ip = true


    override.ssh.username = "ubuntu"
    override.ssh.private_key_path = ENV['MY_PRIVATE_AWS_SSH_KEY_PATH']

    aws.iam_instance_profile_name = 'DEV-config-ipython'

  aws.tags = {
      'Name' => 'ipython',
      'env' => 'DEV',
      'application' => 'test',
     }
  end

  config.vm.provision :chef_solo do |chef|
    config.berkshelf.enabled = true
    chef.data_bags_path = "./data_bags"
    chef.custom_config_path = "Vagrantfile.chef"

    chef.json = {

       'java' => {
         "install_flavor" => "oracle",
         "jdk_version" => "8",
            "oracle" => {
                "accept_oracle_download_terms" => true
            }
       }
    }

    chef.add_recipe "apt"
    chef.add_recipe "build-essential"
    #chef.add_recipe "serverTest"
    chef.add_recipe "java"
    chef.add_recipe "gson"
    chef.add_recipe "log4j"
    chef.add_recipe "maven"
    chef.add_recipe "aws-sdk-cookbook"
    chef.add_recipe "cron"
    chef.add_recipe "awscli"
    chef.add_recipe "maven"
  end

end

【问题讨论】:

    标签: amazon-web-services amazon-ec2 vagrant


    【解决方案1】:

    应该是:

    aws.subnet_id = "subnet-ed9cd588" # vagrantVPC publicSubnet
    aws.associate_public_ip = true
    

    【讨论】:

    • 是的,就是这样!感谢并原谅我,而我在尴尬中打了自己一巴掌
    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多