Я получил основной анзибль пьес, как так:анзибль EC2 только предоставление требуются серверы
---
- name: Provision ec2 servers
hosts: 127.0.0.1
connection: local
roles:
- aws
- name: Configure {{ application_name }} servers
hosts: webservers
sudo: yes
sudo_user: root
remote_user: ubuntu
vars:
- setup_git_repo: no
- update_apt_cache: yes
vars_files:
- env_vars/common.yml
- env_vars/remote.yml
roles:
- common
- db
- memcached
- web
со следующей инвентаризации:
[localhost]
127.0.0.1 ansible_python_interpreter=/usr/local/bin/python
Положение EC2 серверов задач делает то, что вы ожидаете , Он создает экземпляр ec2; он также создает группу хостов [webservers] и добавляет к нему созданный экземпляр экземпляра.
Затем настраивается сервер Configure {{application_name}}, который настраивает этот сервер, устанавливая все, что мне нужно.
Пока все хорошо, все это делает именно то, что я хочу, и все работает.
Вот, где я застрял. Я хочу иметь возможность запускать экземпляр ec2 для разных ролей. В идеале я бы создал dbserver, веб-сервер и, возможно, сервер memcached. Я хотел бы иметь возможность развернуть любую часть (-ы) этой инфраструктуры отдельно, например. создавать и предоставлять только серверы db
Единственные способы, которые я могу придумать, чтобы сделать эту работу ... ну, они не работают.
Я попытался просто объявляя группы компьютеров без хозяев в инвентаре:
[webservers]
[dbservers]
[memcachedservers]
но это ошибка синтаксиса.
я бы хорошо с явно инициализации каждого сервера и объявить принимающей группы это для, например, так:
- name: Provision webservers
hosts: webservers
connection: local
roles:
- aws
- name: Provision dbservers
hosts: dbservers
connection: local
roles:
- aws
- name: Provision memcachedservers
hosts: memcachedservers
connection: local
roles:
- aws
, но эти группы не не существует до тех пор, после того, как соответствующий шаг завершен, поэтому я не Думаю, это тоже сработает.
Я видел много о динамических запасах, но я не мог понять, как это мне поможет. Я также просмотрел бесчисленные примеры незавершенных проектов обеспечения ec2, они все равно либо предоставляют ранее существовавшие экземпляры ec2, либо просто создают один экземпляр и устанавливают на нем все.
Вы можете найти модуль [ 'add_host'] (http://docs.ansible.com/add_host_module.html) полезно. Вы можете создать экземпляр EC2, зарегистрировать свой IP-адрес для переменной, добавить его в инвентарь в памяти с помощью 'add_host', а затем запустить свои задачи обеспечения. –
@Ben Whaley. У меня уже есть эта часть, которую я боюсь (она скрыта в роли aws). Моя проблема заключается не в добавлении экземпляров к узлам, а в том, чтобы создавать экземпляры только для соответствующих групп хостов (те, которые выбраны шаблоном -limit). Я на самом деле закончил то, что хотел сделать, и сейчас невозможно и по-другому. Я скоро отправлю ответ. –