// Ansible se utiliza para la configuración o provisión // de la siguiente infraestructura de VM Vagrant 
// Instalación desde “Archivo de paquetes personales (PPA)” sudo -s apt-get install software-properties-common apt-add-repository ppa:ansible/ansible apt-get update apt-get install ansible
// Verificación ansible –version ansible-playbook –version ansible-galaxy –help
// Creación de un archivo ‘hosts’ o ‘inventory’ propio // para la configuración del entorno ‘dev’ cd ~ mkdir ansible cd ansible vi dev 
// Creación de un archivo de configuración propio (ansible.cfg) // Referencia al archivo inventory (hosts) cd ~/ansible vi ansible.cfg [defaults] inventory=./dev 
// Visualización de los hosts del archivo ‘inventory’ (dev) cd ~/ansible ansible –list-hosts all 
// Llamada a los grupos individuales (hosts) del archivo inventory ansible –list-hosts all ansible –list-hosts “*” ansible –list-hosts webserver ansible –list-hosts loadbalancer ansible –list-hosts db01 ansible –list-hosts “db*” ansible –list-hosts webserver:databases ansible –list-hosts webserver[0] ansible –list-hosts webserver[1] ansible –list-hosts \!webserver
// Probar el acceso SSH p. ej. lb01 (192.168.10.2) ssh vagrant@192.168.10.2
// Hacer ping a todos los hosts ansible -m ping all 
// Crear playbook cd ~/ansible mkdir playbooks cd playbooks vi test.yml
// Ejecutar playbook cd ~/ansible ansible-playbook playbooks/test.yml
// Ejemplos: Playbook Loadbalancer Playbook Webserver Playbook de base de datos
// Crear estructura de roles (se carga desde el repositorio de Ansible) mkdir roles cd roles ansible-galaxy init haproxy ansible-galaxy init apache2 ansible-galaxy init mysql
// La estructura generada con init se ve así 
cd ~/.ansible touch haproxy.yml touch apache2.yml touch mysql.yml
// Referenciar los roles en la estructura de roles creada cd ~/.ansible atom haproxy.yml 
// Listar las ‘Playbook Tasks’ dentro de los roles cd ~/ansible/roles/haproxy/tasks/ vi haproxy.yml 
// Ejecutar el playbook a través de los roles (roles) ansible-playbook haproxy.yml # en lugar de ansible-playbook ./playbooks/lb0x.yml
// Roles https://github.com/netperformance/ansible/tree/master/roles
// Ej. ‘haproxy Tasks’ dentro del rol ‘haproxy’ https://github.com/netperformance/ansible/blob/master/roles/haproxy/tasks/main.yml
// Unir y ejecutar todos los roles en un archivo mediante (include) cd ~/.ansible atom site.yml ansible-playbook site.yml 
// Invocar roles definidos ansible-playbook site.yml –limit app01
// Roles externos a través de https://galaxy.ansible.com ansible-galaxy install < nam_der_rolle >
// Obtener información de la VM (facts) ansible -m setup lb01
// Variables en lugar de valores codificados estáticamente // Situación inicial dentro de las tasks vi /home/vagrant/ansible/roles/haproxy/tasks/main.yml 
// Listado de variables dentro de la carpeta ‘defaults’ vi /home/vagrant/ansible/roles/haproxy/defaults/main.yml repository: ppa:vbernat/haproxy-1.7 
// Uso de la variable vi /home/vagrant/ansible/roles/haproxy/tasks/main.yml “{{ repository }}” 
// Acelerar la ejecución desactivando ‘apt-get update’ // dentro de un periodo x y ‘gather_facts’ — - hosts: all become: true gather_facts: false tasks: - name: update apt cache apt: update_cache=yes cache_valid_time=10000 
// Aceleración habilitando SSH pipelining sudo visudo vi ~/ansible/ansible.cfg 
// Listado de etiquetas ansible-playbook site.yml –list-tags
// Ejecutar etiquetas específicas ansible-playbook site.yml –tags “haproxy”
// Omitir etiquetas ansible-playbook site.yml –skip-tags “haproxy”
