Это моя установка AWS:
Экземпляр EC2 имеет сетевое подключение к внешнему миру (проверено с помощью ping 8.8.8.8
). Это таблица маршрутизации:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default ip-10-0-0-1.eu- 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
instance-data.e * 255.255.255.255 UH 0 0 0 eth0
Экземпляр EC2 также может подключаться к экземпляру RDS.
Я хочу запустить второй инстанс EC2 (Amazon Linux AMI 2014.03.1 64bit) изнутри первого инстанса EC2 с помощью Vagrant. Второй экземпляр EC2 должен находиться в той же подсети VPC, но его фактический IP-адрес не имеет большого значения. Также не требуется общедоступный эластичный IP-адрес. Требуется подключение к внешнему миру, чтобы установить программное обеспечение с помощью yum
.
Это мое Vagrantfile
:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "dummy"
config.vm.provider :aws do |aws, override|
aws.access_key_id = "ACCESS_KEY_ID"
aws.secret_access_key = "SECRET_ACCESS_KEY"
aws.keypair_name = "KEYPAIR_NAME"
aws.ami = "ami-2918e35e"
aws.instance_type = "m1.small"
aws.region = "eu-west-1"
aws.subnet_id = "subnet-SUBNETID"
aws.security_groups = "sg-SECURITYGROUPID"
override.ssh.username = "ec2-user"
override.ssh.private_key_path = "PRIVATE_KEY.pem"
end
config.ssh.pty = true
config.vm.provision "shell", path: "provision.sh"
end
В сценарии оболочки provision.sh
Я устанавливаю какое-то программное обеспечение:
yum install -y subversion
Это не удается, потому что yum
не может подключиться к внешней сети.
Когда я делаю vagrant ssh
и проверьте IP-адрес, он находится в диапазоне 10.0.0.0/24, и я могу пинговать в любом направлении между двумя экземплярами EC2 (ICMP был разрешен в группе безопасности). Я не могу ping 8.8.8.8
и я не могу yum install
программное обеспечение, потому что экземпляр не может получить доступ к репозиториям. Я проверил route
и он идентичен первому экземпляру.
Кроме того, в веб-консоли AWS второй экземпляр не имеет общедоступного IP-адреса.
Когда я добавляю эту строку в свой Vagrantfile
:
aws.associate_public_ip = true
тогда я получаю следующую ошибку vagrant up --provider=aws --provision
:
There are errors in the configuration of this machine. Please fix
the following errors and try again:
AWS Provider:
* The following settings shouldn't exist: associate_public_ip
и экземпляр не запускается.
Итак, мой вопрос: как я могу предоставить бродячему экземпляру сетевое соединение без использования эластичного IP-адреса?
в моей установке этого параметра не было, но есть
aws.elastic_ip = true
с той же целью.
Чтобы найти настоящие поля, используемые в ваших плагинах, проверьте этот файл
~/.vagrant.d/gems/gems/vagrant-aws-0.4.1/lib/vagrant-aws/config.rb
конечно у меня есть vagrant-aws-0.4.1 изменение с вашим