Guión del libro de jugadas de Ansible

1. Descripción general de YAML

■ YAML es un lenguaje sin marcas, un lenguaje que se usa para escribir archivos de configuración, muy conciso y poderoso

■ La sintaxis YAML es similar a la de otros lenguajes y también puede expresar estructuras de datos como tablas hash y escalares.

■ La estructura se muestra con espacios, los elementos de configuración en la secuencia se representan mediante -, los valores clave en el Mapa están separados por :, y la extensión de YAML es yaml

1.1, reglas gramaticales básicas

■ Sensible a mayúsculas y minúsculas

■ Use sangría para indicar relaciones jerárquicas

■ La tecla de tabulación no está permitida al sangrar, solo se permiten espacios

■ El número de espacios con sangría no es importante, siempre que los elementos del mismo nivel estén alineados a la izquierda

1.2 Estructura de datos soportada por YAML

1.2.1, objeto

Objeto: una colección de pares clave-valor, también conocida como mapeo / hash / diccionario
Por ejemplo: nombre: desarrollador de ejemplo

1.2.2, matriz

Matriz: un conjunto de valores dispuestos en orden, también conocido como secuencia / lista.
Por ejemplo:

- Apple
- Orange

1.2.3, escalar

Escalar: un valor único e indivisible
Por ejemplo:

number: 12.30
sure: true

2. Guión del guión-libro de jugadas de Ansible

■ Llame a la plantilla ansible a través de la tarea para organizar varias jugadas y ejecutarlas en un solo libro de jugadas

2.1, composición de libros de jugadas

■ Tareas: tareas, es decir, una operación que se completa llamando al módulo

■ Variables: variable

■ Plantillas: plantillas

■ Controladores: los controladores, cuando se cumple una determinada condición, activan la ejecución de la operación.

■ Roles: roles

2.2, comandos suplementarios

ansible-playbook nginx.yaml -- syntax-check      #检查yaml文件的语法是否正确
ansible-playbook nginx.yaml --list-hosts         #检查生效的主机
ansible-playbook nginx.yaml --list-task          #检查tasks任务
ansible-playbook nginx.yaml --start-at-task='Copy Nginx.conf' #指定从某 个task开始运行

3. Análisis práctico

3.1. Definir un usuario de ejecución remota para cada usuario (comparación entre usuarios normales y usuarios root)

3.1.1, cree una contraseña establecida por el usuario en el servidor del nodo

[root@webserver ~]# useradd lisi
[root@webserver ~]# passwd lisi
[root@webserver ~]# id lisi

Inserte la descripción de la imagen aquí

3.1.2, crear un libro de jugadas

[root@ansible ~]# vim demo1.yuml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo.yaml --syntax-check #检查语法

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo.yaml     #执行剧本

Inserte la descripción de la imagen aquí

3.1.3, modificar al usuario root

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo.yaml     #执行剧本

Inserte la descripción de la imagen aquí
Resumen: cuando se ejecuta el script, también se deben considerar los permisos y el usuario que realiza la tarea

3.2, especifique el usuario del conmutador sudo del host remoto

[root@ansible ~]# vim demo.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo.yaml --syntax-check

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo.yaml 

Inserte la descripción de la imagen aquí

[root@webserver ~]# cd /home/lisi
[root@webserver lisi]# ll /

Inserte la descripción de la imagen aquí

[root@ansible ~]# vim demo.yaml    

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo.yaml 

Inserte la descripción de la imagen aquí

[root@webserver lisi]# ll

Inserte la descripción de la imagen aquí

3.3. Crear un caso de instalación de apache, apagar el firewall y visitar la página de inicio

[root@ansible ~]# vim demo1.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check

Inserte la descripción de la imagen aquí

[root@webserver ~]# rpm -q httpd
[root@webserver ~]# systemctl status httpd

Inserte la descripción de la imagen aquí

3.3.1, acceso al navegador

Inserte la descripción de la imagen aquí

3.4, lista de tareas y acción

■ La parte principal de Play es la lista de tareas. Las tareas de la lista de tareas se ejecutan en los hosts especificados en los hosts una por una en orden, es decir, la primera tarea se completa en todos los hosts antes de que comience la segunda cuando el El libro de jugadas se está ejecutando (de Ejecutar de arriba a abajo). Si un host no ejecuta una tarea, se revertirán todas las tareas. Corrija el error en el libro de jugadas y ejecútelo nuevamente. El propósito de Task es ejecutar el módulo con los parámetros especificados, y las variables se pueden usar en los parámetros del módulo. El módulo es idempotente cuando se ejecuta, lo que significa que las ejecuciones múltiples son seguras porque los resultados son consistentes.

■ Cada tarea debe tener un nombre, de modo que cuando se esté ejecutando el libro de jugadas, se pueda distinguir fácilmente de la información de ejecución de la tarea a la que pertenece.

■ Para definir una tarea, el formato común: "módulo: opciones" Por ejemplo: yum: nombre = httpd

■ En los propios módulos de ansible, el módulo de comando y el módulo de shell no necesitan usar el formato clave = valor

3.4.1, ejemplo de reversión

[root@ansible ~]# vim demo1.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo1.yaml 

Inserte la descripción de la imagen aquí

[root@webserver ~]# yum -y remove httpd   #先删除httpd,再进行剧本测试
[root@webserver ~]# rpm -q httpd

Inserte la descripción de la imagen aquí
Resumen: aunque hay un error, el comando no se puede ejecutar, pero el comando anterior se ejecutó con éxito y apache se instaló correctamente sin regresar, lo que indica que las tareas se revierten y el error debe corregirse antes de que la ejecución pueda continuar.

3.4.2. Ignore el error y fuerce una prueba exitosa

[root@ansible ~]# vim demo1.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo1.yaml 

Inserte la descripción de la imagen aquí

3.5. Realizar diferentes tareas para dos nodos diferentes

[root@ansible ~]# vim demo2.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo2.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo2.yaml 

Inserte la descripción de la imagen aquí

[root@mysql ~]# cd /opt
[root@mysql opt]# ll

Inserte la descripción de la imagen aquí

3.6 Introducción a los manipuladores

Los Handlers también son una lista de algunas tareas, y no hay diferencia con las tareas ordinarias
. La notificación la realiza el notificador. Si no se notifica, los Handlers no se ejecutarán. Si se notifica, los Handlers no se ejecutarán importa cuántas notificaciones haya. La persona ha notificado, y después de que se ejecuten todas las tareas en juego, los controladores solo se ejecutarán una vez

3.6.1, introducir variables

[root@ansible ~]# vim demo1.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo1.yaml 

Inserte la descripción de la imagen aquí

3.6.2, pasar variables a través del comando ansible

[root@ansible ~]# vim demo1.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook demo1.yaml -e "aaa=httpd"

Inserte la descripción de la imagen aquí

3.6.3, variables fijas de ansible de referencia

[root@ansible ~]# vim test.yaml
[root@ansible ~]# ansible-playbook test.yaml --syntax-check

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook test.yaml

Inserte la descripción de la imagen aquí

[root@mysql opt]# ll
[root@mysql opt]# cat addr.txt

Inserte la descripción de la imagen aquí

3.6.4, variables del lenguaje principal de referencia

Agregar después del host del grupo MySQL
Inserte la descripción de la imagen aquí

[root@ansible ~]# vim test.yaml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook test.yaml 

Inserte la descripción de la imagen aquí

[root@mysql opt]# cat addr.txt

Inserte la descripción de la imagen aquí
Resumen: Escenario de uso variable
1: El nombre del servicio utilizado por el script, Datos
2: Prueba de dirección IP del comando
3: El valor del parámetro del sistema de hosts del nodo

3.7, prueba de condición

Si necesita usar variables, hechos (configuración) o el resultado de ejecución de la tarea anterior como requisito previo para la ejecución de una tarea, debe usar pruebas condicionales. En el Playbook, use la cláusula when y agregue la cláusula when después la tarea. Prueba condicional: cuando la cláusula admite la expresión o gramática jinjia2
Por ejemplo:

[root@ansible ~]# vim when.yml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook when.yml --syntax-check
[root@ansible ~]# ansible-playbook when.yml

Inserte la descripción de la imagen aquí

3.8, juicio de múltiples condiciones

[root@ansible ~]# vim when.yml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook when.yml --syntax-check
[root@ansible ~]# ansible-playbook when.yml

Inserte la descripción de la imagen aquí

3.9. Juicio de la condición del grupo

[root@ansible ~]# vim when2.yml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook when2.yml --syntax-check
[root@ansible ~]# ansible-playbook when2.yml

Inserte la descripción de la imagen aquí

4. Iteración

Cuando hay tareas que deben realizarse de forma repetitiva (ciclos), se puede utilizar un mecanismo iterativo. Su formato de uso es definir el contenido que se iterará como referencias de variable de elemento y especificar los elementos que se iterarán a través de la declaración with items.

[root@ansible ~]# vim b.yml 

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook b.yml --syntax-check
[root@ansible ~]# ansible-playbook b.yml

Inserte la descripción de la imagen aquí

[root@webserver ~]# rpm -q httpd
[root@webserver ~]# rpm -q tomcat

Inserte la descripción de la imagen aquí

4.1. Iteración (personalizada)

[root@ansible ~]# vim c.yml

Inserte la descripción de la imagen aquí

[root@ansible ~]# ansible-playbook c.yml --syntax-check
[root@ansible ~]# ansible-playbook c.yml

Inserte la descripción de la imagen aquí

[root@mysql ~]# id test1
[root@mysql ~]# id test2

Inserte la descripción de la imagen aquí

4.2. Resumen

Los libros de jugadas son la base de una gestión de configuración muy simple y un sistema de implementación de múltiples máquinas, y un sistema que es muy adecuado para implementar aplicaciones complejas.

Supongo que te gusta

Origin blog.csdn.net/weixin_50344814/article/details/112601659
Recomendado
Clasificación