Impossibile trovare il file di configurazione in “/ etc / ansible /” su Mac OS X


15

Sono su Mac OS X e sono nuovo su Ansible . Ho dimenticato come l'ho installato. Penso tramite pip:

$ pip freeze
altgraph==0.12
ansible==1.9.2

Ad ogni modo, da quello che sto leggendo dovrebbe esserci un file di configurazione /etc/ansible/, ma il contenuto di quella directory è solo:

$ ls -a /etc/ansible/
.       ..      .hosts.swp  hosts       roles

Non sembra nemmeno che sia definita una variabile d'ambiente:

$ echo $ANSIBLE_CONFIG
# blank line

Ansible funziona per quanto posso dire (senza un locale ansible.cfg, e non c'è niente nella ansiblecartella nella directory dell'utente), ma sono confuso.

Qualcuno può spiegare cosa non sto arrivando qui?

Risposte:


14

Da quello che so il file di configurazione Ansible ( ansible.cfg) potrebbe trovarsi qui per le impostazioni di configurazione a livello di utente:

~/.ansible.cfg

Così come la configurazione a livello di sistema che si trova qui; dove dichiari di non poter trovare alcun file simile:

 /etc/ansible/ansible.cfg

Se in qualche modo hai più utenti sul tuo sistema, forse c'è una ~/.ansible.cfgvariabile in una delle loro directory utente che hai dimenticato?

Afferma che potresti averlo installato usando pip, ma controllando la formula di Homebrew per Ansible , è stato solo recentemente aggiornato dalla versione 1.9.2 a 1.9.3 il 4 settembre . Quindi forse l'hai installato tramite Homebrew?

E la tua preoccupazione principale sembra essere se ansible.cfgsia necessario:

Ansible funziona per quanto posso dire (senza un locale ansible.cfg, e non c'è niente nella ansiblecartella nella directory dell'utente), ma sono confuso.

Qualcuno può spiegare cosa non sto arrivando qui?

Sì, dovrebbe funzionare bene senza una configurazione. Per la maggior parte dei software tutto ciò che fa un file di configurazione è sovrascrivere i valori predefiniti del sistema principale. Quindi, se ansible.cfgmanca, Ansible funzionerebbe comunque, ma userebbe solo i valori predefiniti del sistema principale. Come spiegato nella documentazione ufficiale di Ansible :

Alcune impostazioni in Ansible sono regolabili tramite un file di configurazione. La configurazione stock dovrebbe essere sufficiente per la maggior parte degli utenti, ma potrebbero esserci delle ragioni per cui vorresti cambiarli.

Le modifiche possono essere apportate e utilizzate in un file di configurazione che verrà elaborato nel seguente ordine:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

non in nessuno dei due posti. e sono l'unico utente. immagino che potrei semplicemente copiarlo dal repository git e inserirlo in una di quelle directory.
MikeiLL,

Ottima scelta. Non è stato installato tramite homebrew, ma era la versione 1.9.2. reinstallazione tramite pip al momento ...
MikeiLL

ora a 1.9.3 ma non riesco ancora a trovare una directory di configurazione in nessuna delle posizioni precedenti. C'è ~/.ansible/cpe /etc/ansible/con gli stessi contenuti.
MikeiLL,

Grazie. Ha senso. Non ero sicuro che la configurazione dello stock fosse normalmente memorizzata in uno dei ansible.cfgfile di riferimento .
MikeiLL,

1
@MikeiLL Nah, non preoccuparti. La mia ultima modifica è stata quando ho finalmente capito le tue preoccupazioni. Onestamente non riesco a pensare a un software ben noto che non funziona secondo la logica di "Avrò i valori predefiniti di base, ma se trovo un file di configurazione utente che sostituirà i valori predefiniti". Il grande rischio di sicurezza / stabilità che si ottiene quando l'intero sistema dipende da un file di configurazione esterno è che se quel file è sparito, l'intero sistema collassa? Non è un buon piano. Felice ora capisci che se manca il file di configurazione, non succede nulla di male.
Jake Gould,

13

La homebrewformula sostituisce la stringa /etc/ansiblein constants.pycon /usr/local/etc/ansible. Mi sembra un cattivo juju.

Non ho avuto /usr/local/etc/ansibledopo brew install ansible. Tuttavia, ho confermato che se ne metti uno valido ansible.cfg, sarà onorato (per ora).

I miei consigli:

  1. Non utilizzare brewper l'installazione Ansible.
  2. Sii esplicito sulla tua configurazione non dipende da ambienti di sistema globali, come ad esempio /etc/ansible/ansible.cfg.

Rif. Codice:

brew ansible formula ricambio # 475: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb#L475

ansible constants.py # 61: https://github.com/ansible/ansible/blob/v1.9.3-1/lib/ansible/constants.py#L61


homebrew lavora nello spazio utente, quindi tutto è sotto / usr / local. Questo va bene.
gagarine,

3

Su OSX, avevo installato ansible usando pip e ho scoperto che ansible.cfg non è presente in / etc / ansible o nella mia home directory.

Fonte: https://github.com/ansible/ansible/issues/18512

pip generalmente non installa i file di configurazione e pip con ansible non è diverso. Se vuoi solo provare ansible, generalmente funziona senza un file ansible.cfg. (È necessario specificare un po 'di inventario, ma è possibile farlo sulla riga di comando anziché su un file, se lo si desidera). Se si desidera ottenere un file di configurazione di esempio da adattare, è possibile ottenerlo dal tarball o dal repository di origine qui: https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg

I file di inventario sono spiegati qui: http://docs.ansible.com/ansible/intro_inventory.html Per specificare gli host per l'inventario sulla riga di comando, basta fare qualcosa del genere:

ansible -i 'host1,host2,host3'  all -m command -a 'hostname'

Se si desidera specificare un singolo host tramite la riga di comando, utilizzare una virgola finale nella stringa di inventario:

ansible -i 'host1,' all -m command -a 'hostname'

2

Ho scoperto che Homebrew non creerà una /etc/ansibledirectory, né creerà un file di configurazione o host. Tuttavia, se si crea la /etc/ansibledirectory e si copia la configurazione dal repository github nella /etc/ansibledirectory, la riconoscerà come una configurazione.

Potresti anche voler entrare in quella configurazione e decommentare la riga che specifica anche la posizione dell'inventario per:

inventario = / etc / ansible / hosts

In questo modo, ansible funzionerà allo stesso modo con un'installazione homebrew come qualsiasi altra installazione e la documentazione che trovi online può essere utilizzata con la versione homebrew.


/ usr / local / etc / non è stato riconosciuto. Ho provato a creare la directory / etc / ansible / e ho spostato gli host e ansible.cfg ha funzionato bene!
aelkz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.