Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Següent revisió | Revisió prèvia | ||
| info:cursos:pue:devops2022:s11 [09/02/2022 09:18] – creat mate | info:cursos:pue:devops2022:s11 [21/03/2022 10:23] (actual) – [playbooks] mate | ||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| - | = DevOps Sesión | + | = DevOps Sesión |
| == Documentación relacionada | == Documentación relacionada | ||
| - | == Clase | + | <callout type=" |
| - | == TODO | + | * ./4-Topic 704 Configuration Management |
| - | <callout type=" | + | * ./Material Curso Ansible/ |
| + | * ./Material Curso Ansible/ | ||
| + | * ./Material Curso Ansible/ | ||
| + | </ | ||
| + | |||
| + | == Ansible | ||
| + | <callout type=" | ||
| + | * ./Material Curso Ansible/ | ||
| + | * [[https:// | ||
| + | </ | ||
| + | <code bash> | ||
| + | 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 | ||
| + | * / | ||
| + | * 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: | ||
| + | * 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, | ||
| + | * 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 | ||
| + | <code bash> | ||
| + | config file = / | ||
| + | configured module search path = [u'/ | ||
| + | ansible python module location = / | ||
| + | executable location = / | ||
| + | python version = 2.7.5 (default, Jun 20 2019, 20:27:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] | ||
| + | </ | ||
| + | * **/ | ||
| + | * fichero configuración básica | ||
| + | * 4 módulos/ | ||
| + | |||
| + | === 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 | ||
| + | * '' | ||
| + | |||
| + | == 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**) | ||
| + | * '' | ||
| + | * cambio fichero inventario | ||
| + | * '' | ||
| + | * **[grupo: | ||
| + | * variables sobre los hosts del inventario | ||
| + | * ansible_connection: | ||
| + | * ansible_host: | ||
| + | * ansible_port: | ||
| + | * ansible_user: | ||
| + | * ansible_ssh_pass | ||
| + | * [[https:// | ||
| + | * ansible_become: | ||
| + | * ansible_become_method | ||
| + | * ansible_become_user | ||
| + | * rangos [START: | ||
| + | * 192.168.[4: | ||
| + | * server[01: | ||
| + | |||
| + | === variables | ||
| + | * **[all: | ||
| + | * **[< | ||
| + | |||
| + | == comandos | ||
| + | === adhoc | ||
| + | * comando adhoc (no módulo): '' | ||
| + | * se puede obviar el **-m command** porque es comando por defecto | ||
| + | === help | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | == playbooks | ||
| + | * libro de jugadas | ||
| + | * nodos afectados | ||
| + | * lista de tareas | ||
| + | * formato YAML | ||
| + | * recomendable empezar con **---** y acabar con *...* el fichero (para debug errores) | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * idempotencia: | ||
| + | * Si se produce un error en una de las jugadas (a menos que se indique lo contrario **ignore_errors: | ||
| + | === .yaml | ||
| + | <code yaml> | ||
| + | name: ... | ||
| + | gather_facts: | ||
| + | hosts: clientes | ||
| + | user: root | ||
| + | </ | ||
| + | <code yaml> | ||
| + | tasks: | ||
| + | - name: Install Yum Instal | ||
| + | copy: | ||
| + | src: / | ||
| + | dest: / | ||
| + | |||
| + | </ | ||
| + | |||
| + | === patrones | ||
| + | * separados por puntos o comas | ||
| + | * negar con **!** | ||
| + | * AND (ha de pertener a todos los grupos indicados): **&** | ||
| + | |||
| + | === lab | ||
| + | <code bash> | ||
| + | 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 / | ||
| + | ansible --limit 192.168.33.12 all -a "cat / | ||
| + | ansible clientes -m yum -a " | ||
| + | ansible clientes -m yum -a " | ||
| + | ansible clientes -s -m shell -a "tail / | ||
| + | ansible clientes -m shell -a "tail / | ||
| + | ansible all -m shell -a "rpm -qa | egrep ' | ||
| + | ansible clientes -v -a " | ||
| + | ansible clientes -vv -a " | ||
| + | ansible clientes -vvv -a " | ||
| + | </ | ||
| + | * [[https:// | ||
| + | < | ||
| + | ansible cliente12 -m user -a " | ||
| + | # asdasd | ||
| + | ansible cliente12 -m shell -a "cat /etc/passwd | grep miercoles16" | ||
| + | ansible cliente12 -m user -a " | ||
| + | </ | ||
| + | |||
| + | == Módulos | ||
| + | * se pueden indicar los parámetros en 1 línea o indentando en líneas separadas | ||
| + | === copy | ||
| + | [[https:// | ||
| + | |||
| + | ===lineinfile | ||
| + | [[https:// | ||
| + | |||
| + | == Extra | ||
| + | * [[https:// | ||
| + | === k8s | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||