===== Ansible =====
Es una herramienta de orquestación que automatiza la gestión de configuraciones y el despliegue de aplicaciones. Nos permitirá gestionar nuestros servidores sin necesidad de agente de forma sencilla y funcionando en paralelo.
Para poder usar ansible sólo se necesita un equipo controlador con ansible instalado y conexión ssh con los equipos a gestionar , y en los nodos remotos tener instalado python .
Utiliza [[https://es.wikipedia.org/wiki/YAML|YAML]] para describir las acciones a realizar en los diferentes nodos remotos.
==== Instalación en Centos ====
Instalación en Centos yum install ansible
Para comprobar si todo está correcto ejecutamos ansible --version
==== Conceptos básicos ====
* Inventario . Archivo donde agrupamos una lista de servidores. Por defecto en /etc/ansible/hosts
* Playbooks. Es un archivo donde listamos las tareas que de deben ejecutar. Se escribe en formato YAML
* Task. Un bloque dentro del Playbook , en el que definimos una acción concreta a realizar.
* Includes
* Roles
{{tag>ansible}}
==== Comandos básicos ====
=== Configurar el acceso a los clientes ===
Verificar que tenemos acceso a los clientes ansible -i miinventario -m ping all
Generamos nuestras llaves ssh ssh-keygen
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LXpEhlOQ04nsA3CF/nKfPB3GgDJv0JBw2TZNwgGF1kI root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| o+E&*Oo. |
| oX @++ |
| o Bo+o |
| = =+.. |
| * .So. |
| . =o .+ |
| +.o.+ . |
| .= . |
| . |
+----[SHA256]-----+
[root@localhost ~]#
Una vez finalizado el proceso de generación disponemos de 2 ficheros: ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub
El siguiente paso sería copiar nuestro fichero de llave pública al cliente
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ipcliente
si todo ha ido bien ahora deberiamos de poder acceder desde nuestro servidor de ansible al equipo cliente ejecutando
ssh ip_maquina_cliente
=== Configurar nuestra lista de clientes ===
El fichero que viene por defecto para indicar los clientes es **/etc/ansible/hosts** aunque nosotros podemos definir distintos ficheros según nuestas necesidades.
Editamos es fichero por defecto y definimos los equipos clientes
vi /etc/ansible/hosts
[centos]
hostcliente.midominio.local
hostcliente2.midominio.net
Para comprobar que todos nuestros nodos reponden podemos realizar un ping.
ansible all -m ping
Si por ejemplo queremos ejecutar un comando en todos nuestros nodos:
ansible all -a "/etc/init.d/httpd start"
===== Referencias =====
* [[https://github.com/ansible/ansible-examples|Ejemplos]]
* https://www.ssh.com/ssh/copy-id
* https://voragine.net/linux/acceso-ssh-seguro-servidor-autenticacion-clave-publica
* https://blog.deiser.com/es/primeros-pasos-con-ansible
* https://www.maquinasvirtuales.eu/docker-swarm-instalar-ansible-awx/