Impossible de trouver le fichier de configuration dans «/ etc / ansible /» sous Mac OS X

15

Je suis sur Mac OS X et je suis nouveau sur Ansible . J'oublie comment je l'ai installé. Je pense via pip:

$ pip freeze
altgraph==0.12
ansible==1.9.2

En tout cas, d'après ce que je lis, il devrait y avoir un fichier de configuration /etc/ansible/, mais le contenu de ce répertoire est juste:

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

Il ne semble pas y avoir de variable d'environnement définie non plus:

$ echo $ANSIBLE_CONFIG
# blank line

Ansible fonctionne pour autant que je sache (sans local ansible.cfg, et il n'y a rien dans le ansibledossier dans le répertoire utilisateur), mais je suis confus.

Quelqu'un peut-il expliquer ce que je n'obtiens pas ici?

MikeiLL
la source

Réponses:

14

D'après ce que je sais, le fichier de configuration Ansible ( ansible.cfg) peut être situé ici pour les paramètres de configuration au niveau de l'utilisateur:

~/.ansible.cfg

Ainsi que la configuration à l'échelle du système située ici; où vous déclarez que vous ne pouvez pas trouver un tel fichier:

 /etc/ansible/ansible.cfg

Si vous avez plusieurs utilisateurs sur votre système, peut-être y a-t-il un ~/.ansible.cfgflottant dans l'un de leurs répertoires d'utilisateurs que vous avez oublié?

Vous déclarez que vous l'avez peut-être installé à l'aide pip, mais en vérifiant la formule Homebrew pour Ansible , il a été récemment transféré de la version 1.9.2 à 1.9.3 le 4 septembre . Alors peut-être que vous l'avez installé via Homebrew?

Et votre principale préoccupation semble être de savoir si ansible.cfgcela est nécessaire:

Ansible fonctionne pour autant que je sache (sans local ansible.cfg, et il n'y a rien dans le ansibledossier dans le répertoire utilisateur), mais je suis confus.

Quelqu'un peut-il expliquer ce que je n'obtiens pas ici?

Oui, cela devrait fonctionner correctement sans configuration. Pour la plupart des logiciels, un fichier de configuration ne fait que remplacer les valeurs par défaut du système principal. Donc, s'il ansible.cfgest manquant, Ansible fonctionnerait toujours mais n'utiliserait que les valeurs par défaut du système principal. Comme expliqué dans la documentation officielle d'Ansible :

Certains paramètres dans Ansible sont réglables via un fichier de configuration. La configuration du stock devrait être suffisante pour la plupart des utilisateurs, mais il peut y avoir des raisons pour lesquelles vous voudriez les changer.

Des modifications peuvent être apportées et utilisées dans un fichier de configuration qui sera traité dans l'ordre suivant:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
JakeGould
la source
pas dans l'un ou l'autre endroit. et je suis le seul utilisateur. je suppose que je pourrais simplement le copier à partir du dépôt git et le placer dans l'un de ces répertoires.
MikeiLL
Bon appel. Il n'a pas été installé via homebrew, mais c'était la version 1.9.2. réinstaller via pip en ce moment ...
MikeiLL
maintenant à 1.9.3 mais ne trouve toujours pas de répertoire de configuration dans aucun des emplacements ci-dessus. Il y a ~/.ansible/cp, et /etc/ansible/avec le même contenu.
MikeiLL
Merci. Logique. Je ne savais simplement pas si la configuration des stocks était normalement stockée dans l'un des ansible.cfgfichiers référencés .
MikeiLL
1
@MikeiLL Nah, ne t'en fais pas. Mon dernier montage était quand j'ai finalement compris vos préoccupations. Honnêtement, je ne peux pas penser à un logiciel bien connu qui ne fonctionne pas selon la logique "J'aurai des valeurs par défaut de base, mais si je trouve un fichier de configuration utilisateur qui remplacera les valeurs par défaut". Le gros risque de sécurité / stabilité que vous obtenez lorsque tout votre système dépend d'un fichier de configuration externe est que si ce fichier a disparu, le système entier s'effondre? Pas un bon plan. Heureux que vous compreniez maintenant que si le fichier de configuration est manquant, rien de mal ne se produit.
JakeGould
13

La homebrewformule remplace la chaîne /etc/ansibleen constants.pyavec /usr/local/etc/ansible. On dirait du mauvais juju pour moi.

Je n'en ai pas eu /usr/local/etc/ansibleaprès brew install ansible. Cependant, j'ai confirmé que si vous mettez un valide ansible.cfglà-bas, il sera honoré (pour l'instant).

Mes recommandations:

  1. Ne pas utiliser brewpour installer Ansible.
  2. Soyez explicite sur votre configuration ne dépend pas des globaux de l'environnement système, tels que /etc/ansible/ansible.cfg.

Références de code:

remplacement de la formule ansible d'infusion # 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

Mike D
la source
homebrew fonctionne dans l'espace utilisateur, donc tout est sous / usr / local. C'est bon.
gagarine
3

Sur OSX, j'avais installé ansible à l'aide de pip et constaté que ansible.cfg n'était pas présent dans / etc / ansible ou dans mon répertoire personnel.

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

pip n'installe généralement pas les fichiers de configuration et pip avec ansible n'est pas différent. Si vous voulez simplement essayer ansible, il fonctionne généralement sans fichier ansible.cfg. (Vous devez spécifier un inventaire, mais vous pouvez le faire sur la ligne de commande plutôt que sur un fichier si vous le souhaitez). Si vous souhaitez obtenir un exemple de fichier de configuration à adapter, vous pouvez l'obtenir à partir de l'archive tar ou du référentiel source ici: https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg

Les fichiers d'inventaire sont expliqués ici: http://docs.ansible.com/ansible/intro_inventory.html Pour spécifier des hôtes pour l'inventaire sur la ligne de commande, faites plutôt quelque chose comme ceci:

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

Si vous souhaitez spécifier un seul hôte via la ligne de commande, utilisez une virgule de fin dans la chaîne d'inventaire:

ansible -i 'host1,' all -m command -a 'hostname'
vaichidrewar
la source
2

J'ai trouvé que Homebrew ne créera pas de /etc/ansiblerépertoire, ni ne créera de fichier de configuration ou d'hôte. Cependant, si vous créez le /etc/ansiblerépertoire et copiez la configuration du référentiel github dans le /etc/ansiblerépertoire, il le reconnaîtra comme une configuration.

Vous pouvez également entrer dans cette configuration et décommenter la ligne qui spécifie également l'emplacement de l'inventaire pour:

inventaire = / etc / ansible / hosts

En faisant cela, ansible fonctionnera de la même manière avec une installation homebrew que depuis n'importe quelle autre installation et la documentation que vous trouvez en ligne peut être utilisée avec la version homebrew.

Guardius
la source
/ usr / local / etc / n'a pas été reconnu. J'ai essayé de créer le répertoire / etc / ansible / et les hôtes déplacés et ansible.cfg ont bien fonctionné!
aelkz