2016-07-21 3 views
0

Ich baue ein System, um eine gesamte Umgebung in AWS zu implementieren. Im Falle eines Fehlers möchte ich jedoch alles abreißen, was bereits gebaut wurde. Da ich mehrere verschiedene Umgebungen bereitstellen wollte, dachte ich mir, dass es besser wäre, eine laufende Liste von dem zu führen, was ich bis dahin in AWS gemacht habe.Ansible - Wie pflegen Sie eine dynamische Liste von Daten

Also ich möchte eine Möglichkeit, nur ein einfaches Array der Namen jeder Komponente zu speichern, die Namen anfügt, wie jedes Teil wird abwechselnd gedreht, so dass in der Fehlerphase kann ich einfach alles beenden, aber das ist was mich ziemlich kratzt.

Wie es aussieht, sieht mein Code so etwas wie dieses:

Top-Level-Textbuch

- hosts: localhost 
    connection: local 
    roles: 
    - { role: make_ec2, when: "ansible_failed_task is undefined" } 
     --Fails Here-- 
    - { role: make_ec2, when: "ansible_failed_task is undefined" } 
    - { role: make_ec2, when: "ansible_failed_task is undefined" } 
    post_tasks: 
    - name: "do a teardown" 
     *iterate through list and tear down environment* 
     when: ansible_failed_task is defined 

make_ec2 (Dies ist in einem Block/Rettung)

--- 
- name: "spin up EC2 
    --all the variables you need to spin up the EC2" 
    register: EC2 

- name: "Append List" 
- set_fact: 
    ec2_list: "{{ ec2_list | default | -Append ec2.string.value- }}" 

Darüber hinaus, wenn es irgendwelche besseren Möglichkeiten gibt, das Abreißen zu machen, lass es mich auch wissen!

+0

ohne zu wissen, wie Ihre Rollen konfiguriert sind, können Sie nicht in einem der Module, die Sie für die Bereitstellung der folgenden Aktionen verwenden .. bis: "etwas passiert gut", Wiederholungen: 20, Verzögerung: 10? ? Wenn Sie dies bereits tun, dann ignorieren Sie meinen Kommentar :) – linuxdynasty

+0

Für die Systeme, die dies erfordern, habe ich bereits etwas in der Art :) Das Problem ist meist nur versuchen, eine Art von Variablen zu speichern, um Daten zu speichern, sobald ich Holen Sie es zurück. – ExaExcellion

Antwort

0

Deshalb möchte ich eine Möglichkeit, nur eine einfache Anordnung der Namen zu speichern jedes Komponente, die Namen anhängt, da jeder Teil nach oben wiederum gesponnen wird ....

Sie können ein erstellen Temp-Datei in pre_task und schreiben Sie Daten in, so wenn etwas fehlgeschlagen ist, wissen Sie, was Sie löschen müssen. Alternativ können Sie Datei mit DB ersetzen, aber die Mechanik wäre immer noch die gleiche.

wenn es irgendwelche besseren möglichkeiten gibt, die reißen, lassen sie mich bitte auch wissen!

Ich persönlich würde das Rad nicht neu erfinden und würde einfach CloudFormation verwenden, was eine Vorlage für Ihre AWS-Ressourcen ist. Sie können Bibliotheken wie troposphere verwenden, um Ihnen bei der Verwaltung der JSON-Struktur zu helfen. Mit anderen Worten: Wenn etwas fehlgeschlagen ist, wird die Cloud-Technologie es zurückstellen und alle Ressourcen bereinigen.

+0

Aus verschiedenen Gründen ist die Verwendung von CloudFormation hier wirklich keine Option. Ich dachte über die Verwendung einer Datei, aber ich dachte, da ich nur ~ 30 Komponenten Tops hätte, ist das Speichern eines lokalen Array von 30 Elementen besser als alle damit verbundenen Datei I/O. Ist Datei die Standardpraxis? – ExaExcellion

Verwandte Themen