No puedo encontrar el archivo de configuración en "/ etc / ansible /" en Mac OS X

15

Estoy en Mac OS X y soy nuevo en Ansible . Olvidé cómo lo instalé. Pienso a través de pip:

$ pip freeze
altgraph==0.12
ansible==1.9.2

En cualquier caso, de lo que estoy leyendo debería haber un archivo de configuración /etc/ansible/, pero el contenido de ese directorio es solo:

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

Tampoco parece que haya una variable de entorno definida:

$ echo $ANSIBLE_CONFIG
# blank line

Ansible funciona hasta donde puedo decir (sin un local ansible.cfg, y no hay nada en la ansiblecarpeta en el directorio de usuario), pero estoy confundido.

¿Alguien puede explicar lo que no entiendo aquí?

MikeiLL
fuente

Respuestas:

14

Por lo que sé, el archivo de configuración Ansible ( ansible.cfg) podría estar ubicado aquí para la configuración de nivel de usuario:

~/.ansible.cfg

Además de la configuración de todo el sistema que se encuentra aquí; donde dice que no puede encontrar ningún archivo de este tipo:

 /etc/ansible/ansible.cfg

Si de alguna manera tiene múltiples usuarios en su sistema, ¿quizás haya un ~/.ansible.cfgflotante en uno de sus directorios de usuarios que haya olvidado?

Usted declara que podría haberlo instalado usando pip, pero al verificar la fórmula de Homebrew para Ansible , fue recientemente eliminado de la versión 1.9.2 a 1.9.3 el 4 de septiembre . Entonces, ¿quizás lo instaló a través de Homebrew?

Y su principal preocupación parece ser si ansible.cfges necesario:

Ansible funciona hasta donde puedo decir (sin un local ansible.cfg, y no hay nada en la ansiblecarpeta en el directorio de usuario), pero estoy confundido.

¿Alguien puede explicar lo que no entiendo aquí?

Sí, debería funcionar bien sin una configuración. Para la mayoría de las piezas de software, todo lo que hace un archivo de configuración es anular los valores predeterminados del sistema central. Entonces, si ansible.cfgfalta, Ansible aún funcionaría, pero solo usaría los valores predeterminados del sistema central. Como se explica en la documentación oficial de Ansible :

Ciertas configuraciones en Ansible son ajustables a través de un archivo de configuración. La configuración de stock debería ser suficiente para la mayoría de los usuarios, pero puede haber razones por las que desee cambiarlas.

Los cambios se pueden realizar y utilizar en un archivo de configuración que se procesará en el siguiente orden:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
JakeGould
fuente
No en ningún lugar. y soy el único usuario Supongo que podría copiarlo del repositorio de git y colocarlo en uno de esos directorios.
MikeiLL
Buena llamada. No se instaló a través de homebrew, pero era la versión 1.9.2. reinstalar a través de pip en este momento ...
MikeiLL
ahora en 1.9.3 pero aún no puede encontrar un directorio de configuración en ninguna de las ubicaciones anteriores. Hay ~/.ansible/cp, y /etc/ansible/con el mismo contenido.
MikeiLL
Gracias. Tiene sentido. Simplemente no estaba seguro de si la configuración de stock se almacenaba normalmente en uno de los ansible.cfgarchivos referenciados .
MikeiLL
1
@ MikeiLL Nah, no te preocupes por eso. Mi última edición fue cuando finalmente entendí tus preocupaciones. Sinceramente, no puedo pensar en una pieza de software bien conocida que no funcione según la lógica de "Tendré valores predeterminados centrales, pero si encuentro un archivo de configuración de usuario que anulará los valores predeterminados". El gran riesgo de seguridad / estabilidad que tiene cuando todo su sistema depende de un archivo de configuración externo es si ese archivo desaparece, ¿todo el sistema colapsa? No es un buen plan. Feliz ahora comprende que si falta el archivo de configuración, no pasa nada malo.
JakeGould
13

La homebrewfórmula sustituye la cadena /etc/ansibleen constants.pycon /usr/local/etc/ansible. Me parece un mal juju.

No tuve /usr/local/etc/ansibledespués brew install ansible. Sin embargo, confirme que si pones una válida ansible.cfgallí, será honrada (por ahora).

Mis recomendaciones:

  1. No utilices brewpara instalar Ansible.
  2. Sea explícito acerca de su configuración, no depende de las variables globales del entorno del sistema, como /etc/ansible/ansible.cfg.

Código de referencia:

reemplazo de fórmula ansible de preparación # 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
fuente
homebrew funciona en el espacio del usuario, por lo que todo está en / usr / local. Esto esta bien.
Gagarine
3

En OSX, instalé ansible usando pip y descubrí que ansible.cfg no está presente en / etc / ansible o en mi directorio de inicio.

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

pip generalmente no instala archivos de configuración y pip con ansible no es diferente. Si solo desea probar ansible, generalmente funciona sin un archivo ansible.cfg. (Debe especificar un inventario, pero puede hacerlo en la línea de comando en lugar de un archivo si lo desea). Si desea obtener un archivo de configuración de muestra para adaptar, puede obtenerlo desde el tarball o el repositorio de origen aquí: https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg

Los archivos de inventario se explican aquí: http://docs.ansible.com/ansible/intro_inventory.html Para especificar hosts para el inventario en la línea de comando, simplemente haga algo como esto:

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

Si desea especificar un único host a través de la línea de comando, utilice una coma final en la cadena de inventario:

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

He descubierto que Homebrew no creará un /etc/ansibledirectorio, ni creará una configuración o un archivo host. Sin embargo, si crea el /etc/ansibledirectorio y copia la configuración del repositorio de github en el /etc/ansibledirectorio, lo reconocerá como una configuración.

También es posible que desee ingresar a esa configuración y descomentar la línea que especifica la ubicación del inventario para:

inventario = / etc / ansible / hosts

Al hacer esto, ansible funcionará de la misma manera con una instalación homebrew que con cualquier otra instalación y la documentación que encuentre en línea se puede utilizar con la versión homebrew.

Guardius
fuente
/ usr / local / etc / no fue reconocido. Intenté crear el directorio / etc / ansible / y moví hosts y ansible.cfg funcionó bien.
aelkz