【发布时间】: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