Назад | Перейти на главную страницу

Как настроить сеть на инстансе EC2, запущенном Vagrant?

Это моя установка 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 изменение с вашим