2017-07-19 3 views
0

Ich habe ein einfaches Spielbuch master.yml geschrieben, die Hauptfunktion besteht darin, die Rollen zu suchen und eine als Eingabe für das zweite Playbook einzugeben. Aber es fragt nicht nach den Variablen, obwohl ich die Rolle var_prompt verwendet habe.Kann var_prompt in einer Rolle enthalten sein?

--- #master.yml 

- name: show roles. 
    hosts: nodes 
    connection: ssh 
    gather_facts: no 
    tasks: 
    - include: showroles.yml 

- name: createdb and map roles. 
    hosts: nodes 
    connection: ssh 
    gather_facts: no 
    roles: 
    - vars_prompt_role 
    tasks: 
    - include: createdb.yml 

Meine Auswahl wie folgt strukturiert:

/playbooks/createdbandmaprole/ 
[[email protected] createdbandmaprole]$ ls 
createdb.yml hosts master.yml roles script.sql.j2 showroles.yml 
[[email protected] createdbandmaprole]$cd roles 
[[email protected] roles]$ ls 
var_prompt_role 
[[email protected] roles]$ cd var_prompt_role/ 
[[email protected] var_prompt_role]$ ls 
defaults handlers library main.yml meta tasks vars 
[[email protected] var_prompt_role]$ vim main.yml 
vars_prompt: 
- name: "database" 
    prompt: "enter the name of database" 
    private: no 
- name: "role" 
    prompt: "enter the name of role" 
    private: no 
- name: "ad_group" 
    prompt: "enter the AD_Group" 
    private: no 
[[email protected] createdbandmaprole]$ ansible-playbook master.yml -i hosts --check 

fordert aber nicht für Vars

+0

Wie bezieht sich die Frage im Titel auf den Inhalt? – techraf

Antwort

1

vars_prompt sollte von der obersten Ebene des Textbuch, nicht eine Aufgabe aufgerufen werden:

Here is a most basic example:

--- 
- hosts: all 
    remote_user: root 

    vars: 
    from: "camelot" 

    vars_prompt: 
    - name: "name" 
     prompt: "what is your name?" 
    - name: "quest" 
     prompt: "what is your quest?" 
    - name: "favcolor" 
     prompt: "what is your favorite color?" 

Sie möchten vielleicht tatsächlich vars_prompt wie abov aufgerufen werden e, nach this page.

Wenn Sie eine Rolle haben, die vars_prompt aufgerufen wird, würde sie in einer eigenen Datei unter einem roles/ Verzeichnis definiert werden, das auf der gleichen Ebene wie Ihr Playbook leben sollte. In Ihrem Fall könnte es so aussehen:

--- #master.yml 

... 
- name: createdb and map roles. 
    hosts: nodes 
    roles: 
     - vars_prompt_role 
... 

Dann in roles/vars_prompt_role/tasks/main.yml, würden Sie die vars_prompt_role Rolle Aufgaben definieren. Weitere Informationen zu Rollen finden Sie unter this page oder unter this page für die besten Vorgehensweisen bei der Organisation von Inhalten. Diese

ist, wie Ihr roles/ Verzeichnis aussehen sollte:

roles/ 
    var_prompt_role/ 
    files/ 
    templates/ 
    tasks/ 
     main.yml 
    handlers/ 
    vars/ 
    defaults/ 
    meta/ 

Wo main.yml ist die wichtigste Aufgabe, die Sie für diese Rolle ausführen wollen.

+0

Vielen Dank @McGlothlin. Ich habe Ihren Vorschlag ausprobiert, dass er nach Variablen gefragt hat, aber er hat bereits vor der Ausführung des ersten Playbooks eine Variable angefordert. Gibt es eine Methode, bei der ich die Variablen nach der Ausgabe des ersten Playbooks eingeben kann? – Nanda

+0

Sie haben die Rolle im zweiten Playbook referenziert, richtig? Spiele werden in der von Ihnen angegebenen Reihenfolge von oben nach unten ausgeführt. Siehe hier für weitere Informationen: http://docs.ansible.com/ansible/latest/playbooks_intro.html#playbook-language-example – McGlothlin

+0

@Nanda Shoot, ich habe nicht realisiert, dass 'vars_prompt' ein Abschnitt war und keine Rolle (Entschuldigung, es ist eine Weile her). Meine Antwort wurde entsprechend aktualisiert. – McGlothlin

Verwandte Themen