2016-05-27 24 views
5

Utilizzo di Ansible Ho riscontrato un problema nella registrazione di una variabile nel modo desiderato. Usando l'implementazione qui sotto dovrò sempre chiamare .stdout sulla variabile - c'è un modo per fare meglio?Registro Variabile ansare proprietà

Il mio libro di gioco: Nota l'uso indesiderato di .stdout: voglio solo essere in grado di utilizzare direttamente la variabile senza chiamare una proprietà ...?

--- 
- name: prepare for new deployment 
    hosts: all 
    user: ser85 

    tasks: 

    - name: init deploy dir 
    shell: echo ansible-deploy-$(date +%Y%m%d-%H%M%S-%N) 
    # http://docs.ansible.com/ansible/playbooks_variables.html 
    register: deploy_dir 

    - debug: var=deploy_dir 

    - debug: var=deploy_dir.stdout 

    - name: init scripts dir 
    shell: echo {{ deploy_dir.stdout }}/scripts 
    register: scripts_dir 

    - debug: var=scripts_dir.stdout 

L'uscita quando eseguo il playbook:

TASK [init deploy dir] ********************************************************* 
changed: [123.123.123.123] 

TASK [debug] ******************************************************************* 
ok: [123.123.123.123] => { 
    "deploy_dir": { 
     "changed": true, 
     "cmd": "echo ansible-deploy-$(date +%Y%m%d-%H%M%S-%N)", 
     "delta": "0:00:00.002898", 
     "end": "2016-05-27 10:53:38.122217", 
     "rc": 0, 
     "start": "2016-05-27 10:53:38.119319", 
     "stderr": "", 
     "stdout": "ansible-deploy-20160527-105338-121888719", 
     "stdout_lines": [ 
      "ansible-deploy-20160527-105338-121888719" 
     ], 
     "warnings": [] 
    } 
} 

TASK [debug] ******************************************************************* 
ok: [123.123.123.123] => { 
    "deploy_dir.stdout": "ansible-deploy-20160527-105338-121888719" 
} 

TASK [init scripts dir] ******************************************************** 
changed: [123.123.123.123] 

TASK [debug] ******************************************************************* 
ok: [123.123.123.123] => { 
    "scripts_dir.stdout": "ansible-deploy-20160527-105338-121888719/scripts" 
} 

Qualsiasi aiuto o approfondimenti apprezzato - voi :) grazie

risposta

5

se ho capito bene si desidera assegnare deploy_dir.stdout a una variabile che è possibile utilizzare senza la chiave stdout. Può essere fatto con il modulo set_fact:

tasks: 
    - name: init deploy dir 
    shell: echo ansible-deploy-$(date +%Y%m%d-%H%M%S-%N) 
    # http://docs.ansible.com/ansible/playbooks_variables.html 
    register: deploy_dir 

    - set_fact: my_deploy_dir="{{ deploy_dir.stdout }}" 

    - debug: var=my_deploy_dir 
+0

Grazie, funziona! Ho effettivamente riutilizzato il nome della variabile {{deploy.dir}} dove hai usato {{my_deploy_dir}} senza problemi. Mi chiedo se Ansible usa la stessa posizione per memorizzare fatti e variabili definiti dall'utente ... Inutile, funziona - grazie :) –

Problemi correlati