Einrichten von asg mit Ansible und keine Möglichkeit, ec2.py für die Bestandsaufnahme zu verwenden

Einrichten von asg mit Ansible und keine Möglichkeit, ec2.py für die Bestandsaufnahme zu verwenden

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.pyund ec2.iniDateien 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:

  1. 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.

  2. 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

verwandte Informationen