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
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
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: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)]
install
server: python > 2.6
clientes: python > 2.4
configurar autenticación basada en
SSH-KEYGEN
facts
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»
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]:
variables
[all:vars]
[<GRUPO>:vars]
comandos
adhoc
help
playbooks
.yaml
name: ...
gather_facts: No # ignorar recogida de variables
hosts: clientes # mirar patrones
user: root
tasks:
- name: Install Yum Instal
copy:
src: /etc/sudoers
dest: /etc/sudoers.edit
patrones
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'"
ansible clientes -v -a "id"
ansible clientes -vv -a "id"
ansible clientes -vvv -a "id"
ansible cliente12 -m user -a "name=miercoles16 password=`echo '$6$8fCcohUEdyTjoXDd$gbqpwJzxU08YS6nhZwy6zwFCncBgpTxNHClS.MSKYOR1eQ7N68vCHCENpNnK83KbTo9LFEbvtoZYqiPF9mcDh/'` update_password=always state=present"
# asdasd
ansible cliente12 -m shell -a "cat /etc/passwd | grep miercoles16"
ansible cliente12 -m user -a "name=miercoles16 state=absent"
Módulos
copy
lineinfile
k8s