
Eu criei a configuração local e o grupo Amazon Auto-scaling. Usando este código.
---
-
local_action:
image_id: ami-61f9324
instance_type: t2.micro
module: ec2_lc
name: nice-lc
region: us-west-2
security_groups: launch-wizard-1
name: "Create lc"
-
local_action:
desired_capacity: 2
health_check_period: 5
health_check_type: ELB
launch_config_name: nice-lc
load_balancers: nice-lb1
max_size: 10
min_size: 2
module: ec2_asg
name: nice-asg
region: us-west-2
name: "Create asg"
Estou usando ec2.py
e ec2.ini
arquivos para inventário.
Então agora a configuração local e o grupo de escalonamento automático criados e de acordo com a capacidade desejada que definimos, 2 instâncias são lançadas.
Agora quero executar tarefas nessas duas instâncias.
Para isso estou usando este arquivo yaml.
---
- name: Example of provisioning servers
hosts: 127.0.0.1
connection: local
tasks:
- name: Add EP2 instances to host group
local_action: add_host hostname={{ ec2_publicIp }} groupname=launch-wizard-1
with_items: ec2.instances
- name: Add tag to instances
local_action: ec2_tag resource={{ item.id }} region=us-west-2 state=present
with_items: ec2.instances
args:
tags:
Name: nice-ec2
- name: Wait for SSH to be available
pause: minutes=1
- name: Configure provisioned servers
hosts: tag_aws_autoscaling_groupName_nice_asg
user: ubuntu
sudo: True
gather_facts: True
tasks:
- name: restart nginx
service: name=nginx state=restarted
Quando executo este arquivo, recebo o erro:
Uma ou mais variáveis indefinidas: 'ec2_publicIp' é indefinido
Questões:
Quero executar tarefas como reiniciar o nginx e adicionar tag na instância iniciada pelo grupo de escalonamento automático da Amazon.
Estou fazendo certo? Parece que nem preciso adicionar ao host se quiser apenas executar alguma tarefa na instância iniciada pelo asg.
Responder1
Acima da tarefa 'Adicionar instâncias EP2 ao grupo host', use
- debug: var=ec2
para ver o que a variável contém. Se você observar as variáveis de cada instância, provavelmente descobrirá que escreveu ec2_publicIP errado ou que está em um local diferente na variável.
Responder2
Como eu só quero executar o comando na instância iniciada pelo asg.
---
# I have removed that code and just using this.
# This works with instance launched by asg.
- name: Configure provisioned servers
hosts: tag_aws_autoscaling_groupName_nice_asg
user: ubuntu
sudo: True
gather_facts: True
tasks:
- name: restart nginx
service: name=nginx state=restarted