Linux

Instalar y configurar Ansible Master

[renzo@ansible ansible_demo]$ cat ansible.cfg
[defaults]
remote_user   = renzo 
roles_path    = ./roles
inventory     = ./hosts
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
[renzo@ansible ansible_demo]$ 

Variables a nivel de inventario

group_vars
host_Vars

Ansible vault para encriptar y guardar información sensible

ansible-vault create nodes.yml

ansible-vault edit nodes.yml 
ansible_ssh_user: rlujan
ansible_ssh_pass: rlujan
ansible_ssh_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

Ansible Modules

ansible -m win_ping windows --ask-vault-pass
  • Facters:
ansible -m setup nodes

ansible -m setup -a "filter=*ipv4*" nodes
ansible -m setup -a "filter=ansible_hostname" nodes
  • Ejecutar modulos Ad-hoc:
ansible -m service -a "name=crond state=stopped" centos
ansible -m service -a "name=crond state=stopped" centos -b
ansible -m service -a "name=crond state=started" centos -b

Playbooks

[renzo@ansible ansible_demo]$ pwd
/etc/ansible_demo
[renzo@ansible ansible_demo]$ ls -l ansible.cfg hosts
-rw-r--r-- 1 root root 184 May 24 01:03 ansible.cfg
-rw-r--r-- 1 root root  14 May 21 12:30 hosts
[renzo@ansible ansible_demo]$ 

ansible-playbook playbooks/motd.yml --check
ansible-playbook playbooks/motd.yml
  • Idempotencia: es la propiedad para realizar una acción determinada varias veces y aun así conseguir el mismo resultado que se obtendría si se realizase una sola vez.

Roles

ansible-galaxy init apache
  • Componentes de un rol:

    • defaults: Data sobre el rol / aplicación (variables por defecto).
    • files: Poner ficheros estáticos aquí. Ficheros que copiaremos a los clientes.
    • handlers: Tareas que se basan en algunas acciones. Disparadores (Triggers). Ex: si cambias httpd.conf -> reinicia el servicio. (https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers-running-operations-on-change)
    • meta: Metadatos/Información sobre el rol (Autor, plataformas soportadas, dependencias, etc).
    • tasks: Core lógico o código. Ex: Instala paquetes, copia ficheros, configura, etc.
    • templates: similar a files pero soportan modificaciones (ficheros dinámicos no estáticos) -> Jinja2 template language.
    • vars: Tanto vars como defaults guardan variables pero las variables en vars tienen mayor prioridad.
    • Todos tienen el main.yml que es donde inicia la lectura de cada código.
  • Rol run:

ansible-playbook masterplaybooks/masterplaybook_apache.yml --extra-vars="hosts=centos" --tags=install --check 
ansible-playbook masterplaybooks/masterplaybook_apache.yml --extra-vars="hosts=centos" --tags=install

ansible-playbook masterplaybooks/masterplaybook_apache.yml --extra-vars="hosts=centos"
  • Validar que funciona, abrir navegador:
http://localhost/