Возможно, вам понравится эта примерная книжка, она создаст для вас экземпляр (ы), а затем запустит задачи/роли в этих созданных экземплярах все в одном, он также добавит ip вновь созданных экземпляров в хост-файл (предположим, он находится в том же каталоге, откуда вы работаете этот сборник пьес):
---
- name: Provision an EC2 Instance
hosts: local
connection: local
gather_facts: False
tags: provisioning
# Necessary Variables for creating/provisioning the EC2 Instance
vars:
instance_type: t1.micro
security_group: test-sg
image: ami-98aa1cf0
region: us-east-1
keypair: ansible
count: 1
# Task that will be used to Launch/Create an EC2 Instance
tasks:
- name: Create a security group
local_action:
module: ec2_group
name: "{{ security_group }}"
description: Security Group for Servers
region: "{{ region }}"
rules:
- proto: tcp
type: ssh
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 6800
to_port: 6800
cidr_ip: 0.0.0.0/0
rules_egress:
- proto: all
type: all
cidr_ip: 0.0.0.0/0
- name: Launch the new EC2 Instance
local_action: ec2
group={{ security_group }}
instance_type={{ instance_type}}
image={{ image }}
wait=true
region={{ region }}
keypair={{ keypair }}
count={{count}}
register: ec2
- name: Add the newly created EC2 instance(s) to the local host group
local_action: lineinfile
dest="./hosts"
regexp={{ item.public_ip }}
insertafter="[ec2server]" line={{ item.public_ip }}
with_items: ec2.instances
- name: Wait for SSH to come up
local_action: wait_for
host={{ item.public_ip }}
port=22
state=started
with_items: ec2.instances
- name: Add tag to Instance(s)
local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present
with_items: ec2.instances
args:
tags:
Name: test
- name: SSH to the EC2 Instance(s)
add_host: hostname={{ item.public_ip }} groupname=ec2server
with_items: ec2.instances
- name: Install these things on Newly created EC2 Instance(s)
hosts: ec2server
sudo: True
remote_user: ubuntu
gather_facts: True
# Run these tasks
tasks:
- include: tasks/upgrade.yml
И ваш хост файл будет выглядеть следующим образом:
[local]
localhost
[ec2server]
Надежда, это поможет вам , Спасибо
Вы читаете http://docs.ansible.com/guide_aws.html и http://docs.ansible.com/intro_dynamic_inventory.html? Если да, объясните, почему эти статьи не затрагивают ваш вопрос. – Mxx
@Mxx я не видел эту статью, и это интересно. то, что я на самом деле пытаюсь понять, - это когда я настраиваю свою инфраструктуру с помощью плейбуков, лучше всего настраивать серверы и иметь другую playbook для создания новых экземпляров сервера. Я не уверен в лучшей практике, и это то, что я действительно надеюсь, что кто-то проливает свет. – user3329500
Все зависит от вашего конкретного случая использования, потребностей, набора навыков. Это очень личное предпочтение. Можно сказать, что идеальное видение - это единственная коллекция игровых автоматов, которая делает абсолютно все, от воспитания серверов до развертывания кода. Другим может быть совершенно нормально иметь отдельные игровые книги для обеспечения, настройки и развертывания. Но есть также http://docs.ansible.com/playbooks_best_practices.html – Mxx