Как создать экземпляр AWS EC2 и назначить его ELB с помощью Ansible?

Я пытаюсь использовать Ansible, чтобы создать экземпляр EC2, настроить веб-сервер и затем зарегистрировать его в балансировщике нагрузки. У меня нет проблем с созданием экземпляра EC2 или с настройкой веб-сервера, но все попытки зарегистрировать его с существующим балансировщиком нагрузки не с меняющимися ошибками в зависимости от используемого кода.

Кто-нибудь имел успех в этом?

Вот ссылки на документацию Ansible для модулей ec2 и ec2_elb:

http://docs.ansible.com/ec2_module.html

http://docs.ansible.com/ec2_elb_module.html

В качестве альтернативы, если невозможно зарегистрировать экземпляр EC2 против создания сообщения ELB, я бы согласился на другую "игру", которая собирает все экземпляры EC2 с определенным именем и проходит через них, добавляя их в ELB.

2 ответа

Вот что я делаю:

- name: Add machine to elb
 local_action:
 module: ec2_elb
 aws_access_key: "{{lookup('env', 'AWS_ACCESS_KEY')}}"
 aws_secret_key: "{{lookup('env', 'AWS_SECRET_KEY')}}"
 region: "{{ansible_ec2_placement_region}}"
 instance_id: "{{ ansible_ec2_instance_id }}"
 ec2_elbs: "{{elb_name}}"
 state: present

Самая большая проблема заключалась в доступе и секретных ключах. Модуль ec2_elb, похоже, не использует переменные среды или читает ~/.boto, поэтому мне пришлось передавать их вручную.

Переменные ansible_ec2_* доступны, если вы используете модуль ec2_facts. Вы можете сами заполнить эти параметры самостоятельно.


Нижеприведенная пьеса должна работать для создания сервера ec2 и регистрации ее в локте. Удостоверьтесь, что у вас есть переменные, установленные правильно, или вы можете жестко закодировать значения переменных в playbook.

- name: Creating webserver
 local_action:
 module: ec2
 region: "{{ region }}"
 key_name: "{{ key }}"
 instance_type: t1.micro
 image: "{{ ami_id }}"
 wait: yes
 assign_public_ip: yes
 group_id: ["{{ sg_webserver }}"]
 vpc_subnet_id: "{{ PublicSubnet }}"
 instance_tags: '{"Name": "webserver", "Environment": "Dev"}
 register: webserver
- name: Adding Webserver to ELB
 local_action: 
 module: ec2_elb
 ec2_elbs: "{{ elb_name }}"
 instance_id: "{{ item.id }}"
 state: 'present'
 region: "{{ region }}"
 with_items: nat.instances

licensed under cc by-sa 3.0 with attribution.