
Ich habe eine lokale Konfiguration und eine Amazon Auto-Scaling-Gruppe erstellt. Mit diesem Code.
---
-
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"
Ich verwende ec2.py
und ec2.ini
Dateien zur Bestandsaufnahme.
Nachdem die lokale Konfiguration und die Auto-Scaling-Gruppe erstellt wurden und entsprechend der von uns definierten gewünschten Kapazität zwei Instanzen gestartet wurden.
Jetzt möchte ich Aufgaben auf diesen beiden Instanzen ausführen.
Dafür verwende ich diese YAML-Datei.
---
- 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
Wenn ich diese Datei ausführe, erhalte ich die folgende Fehlermeldung:
Eine oder mehrere nicht definierte Variablen: „ec2_publicIp“ ist nicht definiert
Fragen:
Ich möchte Aufgaben wie den Neustart von Nginx ausführen und einer von der Amazon Auto-Scaling-Gruppe gestarteten Instanz ein Tag hinzufügen.
Mache ich das richtig? Es sieht so aus, als müsste ich nicht einmal etwas zum Host hinzufügen, wenn ich nur eine Aufgabe auf einer von ASG gestarteten Instanz ausführen möchte.
Antwort1
Über Ihrer Aufgabe „EP2-Instanzen zur Hostgruppe hinzufügen“ verwenden Sie
- debug: var=ec2
um zu sehen, was die Variable enthält. Wenn Sie sich die Variablen für jede Instanz ansehen, werden Sie wahrscheinlich feststellen, dass Sie ec2_publicIP falsch geschrieben haben oder es sich an einer anderen Stelle in der Variable befindet.
Antwort2
Da ich nur den Befehl auf der von ASG gestarteten Instanz ausführen möchte.
---
# 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