Estoy usando Ansible y tengo esta configuración en mi inventario / todo:
[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[all:children]
master
slave
No quiero repetir todos los parámetros para cada nueva instancia. ¿Cómo puedo configurarlos en un solo lugar? ¿Hay algún archivo con estos parámetros?
~/.ssh/config
Respuestas:
Puede agregar la siguiente sección a su archivo de inventario:
Nota: Antes de Ansible 2.0
ansible_user
eraansible_ssh_user
.fuente
[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
ansible_port
, por lo que no necesita especificarlo explícitamente a menos que sea diferente. Interesado si alguien sabe cómo aplicar variables a más de un grupo a la vez (pero no 'todos'), la separación por coma no parece funcionar.Variables de grupo
Puede establecer variables que se apliquen a todos los hosts utilizando el diseño del libro de jugadas especificado en el documento de Mejores prácticas de Ansible y creando un
group_vars/all
archivo donde los defina .[editar] Aunque estoy confundido con lo que estás tratando de hacer. No debería necesitar especificar el usuario o la contraseña de Ansible en el inventario. Si está utilizando Vagrant, definitivamente no lo hace, y si está llamando a Ansible desde la línea de comandos, puede especificar el usuario con
--user=vagrant
y pedirle que solicite la contraseña--ask-pass
.fuente
group_vars/all/main.yml
o simplementegroup_vars/all
?sshpass
-"you must install the sshpass program"
group_vars/all
.Creo que es mejor usar la instalación de la clave ssh en todos los servidores a través de la extracción. Debe ejecutar ssh-copy-id solo por nodo e instalar su clave ssh en todas partes para que Ansible pueda iniciar sesión con su clave ssh. Será más seguro no guardar contraseñas en el libro de jugadas / inventario.
Para hacer esto, debe generar su par de claves ssh y ejecutar ssh-copy-id para todos los servidores después.
fuente
Añadir a continuación a los hosts de inventario.
Para Ansible <2.0:
Para Ansible> = 2.0 :
fuente
ansible_ssh_pass
, noansible_pass
.Descargo de responsabilidad: solo he probado esto en OSX. Según los diversos documentos, espero que funcione en otras plataformas.
"directorio del proyecto" se refiere al directorio base del proyecto Vagrant, el directorio que contiene
Vagrantfile
.Archivo de inventario Ansible generado automáticamente por Vagrant:
Vagrant crea un archivo de inventario con los valores de conexión Ansible predeterminados. Búscalo en
<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.Vagrant regenerará este archivo según sea necesario, por lo que se sobrescribirán las ediciones manuales. Sin embargo, de acuerdo con los documentos de Vagrant, puede especificar varias máquinas, grupos de variables, etc.,
Vagrantfile
y se agregarán a este archivo de inventario.Configure Ansible como predeterminado para este archivo de inventario:
Para hacer que este archivo sea el predeterminado que usa el
ansible
comando cuando está en el directorio del proyecto (en el host), agregue unansible.cfg
archivo en el directorio del proyecto con estos contenidos, cambiando la ruta según sea necesario:Para confirmar que este archivo de inventario se está utilizando, búsquelo como el predeterminado informado por ansible:
(desde dentro del directorio del proyecto)
$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or
Para confirmar sus anfitriones:
$ ansible all --list-hosts hosts (2): master slave
Usando Ansible con estos hosts:
Desde el directorio del proyecto, debería poder usarlo
ansible
normalmente con los hosts que definióVagrantfile
.Por ejemplo:
fuente