2016-05-18 5 views
1

Derzeit habe ich folgende Textbuch:Wie kann ich mein Playbook strukturieren, um mehr Sinn zu machen?

- hosts: "{{env}}_{{product}}" 
    name: "tools" 
    sudo: yes 
    vars_prompt: 
    product: "Which product would you like to deploy [all|proxy|query|rest]?" 
    env: "Which environment should we deploy to [dev|qa|test|prod]?" 
    roles: 
    - { role: proxy, when: "product == 'all' or product == 'proxy'" } 
    - { role: query, when: "product == 'all' or product == 'query'" } 
    - { role: rest, when: "product == 'all' or product == 'rest'" } 

Alle meine Gruppen in einer einzigen ./inventory/all Datei gespeichert werden, zB ,:

# ----------------------------------------------------------------------------------- 
# -------------- 
# ### DEV ### 
# -------------- 
# ----------------------------------------------------------------------------------- 

[dev_all:children] 
dev_redis 
dev_query 
dev_rest 
dev_proxy 

[dev_redis] 
.hosts 

[dev_query] 
.hosts 

[dev_rest] 
.hosts 

[dev_proxy:children] 
dev_proxy-dc1 
dev_proxy-dc2 
dev_proxy-dc3 

[dev_proxy-dc1] 
.hosts 

[dev_proxy-dc2] 
.hosts 

[dev_proxy-dc3] 
.hosts 


# ----------------------------------------------------------------------------------- 
# -------------- 
# ### PROD ### 
# -------------- 
# ----------------------------------------------------------------------------------- 

[prod_all:children] 
prod_redis 
prod_query 
prod_rest 
prod_proxy 


[prod_redis] 
.hosts 

[prod_query] 
.hosts 

[prod_rest] 
.hosts 

[prod_proxy:children] 
prod_proxy-dc1 
prod_proxy-dc2 
prod_proxy-dc3 

[prod_proxy-dc1] 
.hosts 

[prod_proxy-dc2] 
.hosts 

[prod_proxy-dc3] 
.hosts 

ich kann nicht helfen, aber ich fühle mich wie ich bin macht dies jedoch zu komplex. Ich versuche zu vermeiden, dass Personen Tags oder Inventardateien übergeben. Aber jetzt bin ich mir nicht sicher, was der beste Weg ist, um Deploits für Dinge wie redis Hosts zuzulassen, die nicht wirklich das sind, was wir als "Produkt" betrachten würden, aber immer noch eine eigene Gruppe, da sie auf ihrem eigenen Set gehostet wird Gastgeber. Ich könnte es nur zur aktuellen Liste hinzufügen, [all|proxy|query|rest|redis], aber ... es scheint, als sollte es eine Möglichkeit geben, redisund ein weiteres product anzugeben, aber zur gleichen Zeit nicht beide erfordern ... Ich weiß nicht wie obwohl.

Ich wollte etwas haben, wo Sie

redis die ich proxy-dev, bereitstellen möchten, und lassen Sie aktualisieren, während wir dabei sind“ sagen konnte

- ist das möglich mit meinem aktuellen Setup?

Antwort

1

Dies ist nicht der beste Weg, um damit umzugehen.

Stattdessen würde ich meine Playbooks individuell so strukturieren, dass sie auf bestimmte Rollen abzielen, und ich würde meine Inventare auch so einstellen, dass sie nur eine bestimmte Umgebung abdecken und nicht alles.

Wenn Sie es so machen wollen, dass die Leute nicht in der Inventardatei oder der spezifischen Playbook übergeben müssen, dann würde ich die ansible-playbook Befehl (en) in irgendeiner Form von Wrapper-Skript umbrechen.

Dies ermöglicht es Benutzern, Ihre Playbooks viel granularer und flexibler zu verwenden, wie Sie es benötigen, aber dennoch die gleiche Möglichkeit bieten, Presets über Ihr Wrapper-Skript anzubieten.

Verwandte Themen