2016-04-04 32 views
6

Ho problemi con le variabili di ambiente di un host remoto. Ad esempio, quando provo {{lookup ('env', 'PATH')}} questo restituisce il percorso della mia macchina ospite non dell'host remoto.Come ottenere le variabili di ambiente dell'host remoto

Come rilevare/modificare le variabili di ambiente dell'host remoto?

mia playbook:

--- 
- name : playbook 
    hosts : webservers 
    gather_facts: yes 
    remote_user: user1 
    vars: 
    Path: "{{lookup('ansible_env','PATH')}}" 
    roles : 
- task1 
- task2 
- task3 

che di restituire il percorso della mia macchina non il percorso di host remoto denominato User1 io sono un principiante in ansible bisogno di aiuto. Grazie in anticipo.

+0

perché cercare, provare solo con {{ansible_env.PATH}} ----------> Percorso: "{{ansible_env.PATH}}" –

risposta

7

Il comportamento della funzione lookup è documented explicitly:

plugin consentono l'accesso di dati in Ansible da fonti esterne. Questi plugin sono valutati sulla macchina di controllo Ansible ...

C'è un FAQ in materia di accesso alle variabili di ambiente remota:

Ansible 1.4 farà anche variabili d'ambiente remoto disponibile via fatti nel 'ansible_env 'variabile:

{{ ansible_env.SOME_VARIABLE }} 

Nota che i fatti a distanza (come ansible_env sono disponibili solo se infatti la raccolta è ena bled (che è il comportamento predefinito di ansible, ma può essere disabilitato nel file di configurazione o nei playbook).

Se si desidera modificare l'ambiente dell'host remoto, è ancora una volta guarda a the documentation che descrive la direttiva environment:

Ansible rende facile per voi di configurare l'ambiente utilizzando l' 'ambiente ' parola chiave. Ecco un esempio:

- hosts: all 
    remote_user: root 

    tasks: 

    - apt: name=cobbler state=installed 
     environment: 
     http_proxy: http://proxy.example.com:8080 

Questi insiemi di una variabile d'ambiente per questo specifico compito. Non è una modifica persistente.

+0

ho provato a usare '{{ansible_env.PATH}}' ma mi restituisco lo stesso percorso della mia macchina locale. ho provato ad ottenere altre variabili come "emty" ancora restituito "" o restituire il valore della variabile se definita nel mio computer locale. e ho provato a scoprire tutte le variabili ansible_env nell'host remoto con il comando 'ansible all -m setup' non riesco a trovare tutte le variabili definite nell'host remoto – mndhr

0

In base alla documentazione here, non è possibile utilizzare lookup per macchine remote, quella parola chiave funziona solo per la macchina locale.

Invece, si desidera utilizzare {{ ansible_env.PATH}}.

+0

ho provato a usare '{{ansible_env.PATH} } 'ma restituisco sempre lo stesso percorso della mia macchina locale. ho provato ad ottenere altre variabili come "emty" ancora restituito "" o restituire il valore della variabile se definita nel mio computer locale. – mndhr