===== 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/