Aquesta és una revisió antiga del document
DevOps Sesión 11 (2022-03-16) Ansible
Documentación relacionada
- ./4-Topic 704 Configuration Management
- ./Material Curso Ansible/DO407-AUTOMATION WITH ANSIBLE I.pdf
- ./Material Curso Ansible/Introduccion Ansible.txt
- ./Material Curso Ansible/Curso Ansible 2020.pdf
Ansible
- ./Material Curso Ansible/DO407-AUTOMATION WITH ANSIBLE I.pdf
vagrant up vagrant ssh master-ansible su - ansible all -m ping
- agentless
- no permite deshacer (deberías crear otro playbook para deshacer y hay errores que no se pueden deshacer)
- no instalación base
- no monitoriza cambios
- otras herramientas
- puppet
- chet
- ansible
- salt
- nodo control, hosts administrados
- nodo control: tiene ansible (solo Linux)
- gestión hosts fichero txt
- /etc/ansible/hosts
- gestión a través de ssh (claves público-privadas)
defs
- Controller Machine: el equipo donde está instalado Ansible, es el responsable de ejecutar el aprovisionamiento en los servidores de destino
- Inventory: el fichero que contiene la información de los servidores que gestiona Ansible
- Playbook: el Sistema de aprovisionamiento de servidores, el cual está definido en un fichero con formato YAML
- Task: el bloque que define el procedimiento a realizar en el servidor de destino:modificar un fichero, instalar un paquete, etc…
- Module: es una capa abstracta de las tareas del Sistema, como crear o modidicar un fichero
- Role: es una forma de organizar nuestros PlayBooks para poder reusar código
- Play: es la ejecución de un aprovisionamiento, en pocas palabras: es lanza un PlayBook
- Facts: variables globales que contienen información del sistema
- Handlers: se usa para cambiar el estado de los servicios, como podría ser reiniciar, parar, etc un servicio
ansible --version config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /bin/ansible python version = 2.7.5 (default, Jun 20 2019, 20:27:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
- /etc/ansible/ansible.cfg
- fichero configuración básica
- 4 módulos básicos
install
- server: python 2.6 >
- clientes: python 2.4 >
- configurar autenticación basada en SSH-KEYGEN
facts
- variables globales que contienen información del sistema
ansible clientes -m setup | grep ansible_
inventory
- listado de hosts (estático)
- un host puede pertener a varios grupos (o no)
- recomendación crear inventarios por entornos
- dejar el inventario por defecto vacío (o dejar en blanco la variable de ansible.cfg)
ansible -i /etc/ansible/desarrollo clientes -a «yum remove mc -y»- cambio fichero inventario
ansible all –list-hosts- [grupo:children]: capacidad de añadir grupos al grupo
- variables sobre los hosts del inventario
- ansible_connection: tipo de conexión al host
- ansible_host: nombre del host, si es diferente del alias
- ansible_port: si no es el 22
- ansible_user:
- ansible_ssh_pass
- ansible_become: ansible_sudo, ansible_su, escalada de privilegios
- ansible_become_method
- ansible_become_user
- rangos [START:END]:
- 192.168.[4:7].[0:255]
- server[01:20].example.com
variables
- [all:vars]
- [<GRUPO>:vars]
comandos
adhoc
- comando adhoc (no módulo):
ansible clientes -m command -a «yum remove mc -y»- se puede obviar el -m command porque es comando por defecto
help
ansible-doc <MODULO>ansible-doc -s <MODULO>: sumarizado
playbooks
.yaml
gather_facts: no
lab
ansible --version ansible clientes -m setup | grep ansible_ ansible all --list-hosts ansible clientes -m ping ansible all -a "df -h /" ansible all -a "cat /etc/redhat-release" ansible --limit 192.168.33.12 all -a "cat /etc/redhat-release" ansible clientes -m yum -a "name=nginx state=present" ansible clientes -m yum -a "name=nginx state=absent" ansible clientes -s -m shell -a "tail /var/log/messages | grep ansible-command | wc -l" ansible clientes -m shell -a "tail /var/log/messages | grep ansible-command | wc -l" ansible all -m shell -a "rpm -qa | egrep 'vim-enhanced|wget|unzip|mc'"