Tabla de contenido
- 1. Descripción general de YAML
- 2. Guión del guión-libro de jugadas de Ansible
- 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.2, especifique el usuario del conmutador sudo del host remoto
- 3.3. Crear un caso de instalación de apache, apagar el firewall y visitar la página de inicio
- 3.4, lista de tareas y acción
- 3.5. Realizar diferentes tareas para dos nodos diferentes
- 3.6 Introducción a los manipuladores
- 3.7, prueba de condición
- 3.8, juicio de múltiples condiciones
- 3.9. Juicio de la condición del grupo
- 4. Iteración
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
3.1.2, crear un libro de jugadas
[root@ansible ~]# vim demo1.yuml
[root@ansible ~]# ansible-playbook demo.yaml --syntax-check #检查语法
[root@ansible ~]# ansible-playbook demo.yaml #执行剧本
3.1.3, modificar al usuario root
[root@ansible ~]# ansible-playbook demo.yaml #执行剧本
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
[root@ansible ~]# ansible-playbook demo.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo.yaml
[root@webserver ~]# cd /home/lisi
[root@webserver lisi]# ll /
[root@ansible ~]# vim demo.yaml
[root@ansible ~]# ansible-playbook demo.yaml
[root@webserver lisi]# ll
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
[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check
[root@webserver ~]# rpm -q httpd
[root@webserver ~]# systemctl status httpd
3.3.1, acceso al navegador
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
[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo1.yaml
[root@webserver ~]# yum -y remove httpd #先删除httpd,再进行剧本测试
[root@webserver ~]# rpm -q httpd
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
[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo1.yaml
3.5. Realizar diferentes tareas para dos nodos diferentes
[root@ansible ~]# vim demo2.yaml
[root@ansible ~]# ansible-playbook demo2.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo2.yaml
[root@mysql ~]# cd /opt
[root@mysql opt]# ll
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
[root@ansible ~]# ansible-playbook demo1.yaml --syntax-check
[root@ansible ~]# ansible-playbook demo1.yaml
3.6.2, pasar variables a través del comando ansible
[root@ansible ~]# vim demo1.yaml
[root@ansible ~]# ansible-playbook demo1.yaml -e "aaa=httpd"
3.6.3, variables fijas de ansible de referencia
[root@ansible ~]# vim test.yaml
[root@ansible ~]# ansible-playbook test.yaml --syntax-check
[root@ansible ~]# ansible-playbook test.yaml
[root@mysql opt]# ll
[root@mysql opt]# cat addr.txt
3.6.4, variables del lenguaje principal de referencia
Agregar después del host del grupo MySQL
[root@ansible ~]# vim test.yaml
[root@ansible ~]# ansible-playbook test.yaml
[root@mysql opt]# cat addr.txt
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
[root@ansible ~]# ansible-playbook when.yml --syntax-check
[root@ansible ~]# ansible-playbook when.yml
3.8, juicio de múltiples condiciones
[root@ansible ~]# vim when.yml
[root@ansible ~]# ansible-playbook when.yml --syntax-check
[root@ansible ~]# ansible-playbook when.yml
3.9. Juicio de la condición del grupo
[root@ansible ~]# vim when2.yml
[root@ansible ~]# ansible-playbook when2.yml --syntax-check
[root@ansible ~]# ansible-playbook when2.yml
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
[root@ansible ~]# ansible-playbook b.yml --syntax-check
[root@ansible ~]# ansible-playbook b.yml
[root@webserver ~]# rpm -q httpd
[root@webserver ~]# rpm -q tomcat
4.1. Iteración (personalizada)
[root@ansible ~]# vim c.yml
[root@ansible ~]# ansible-playbook c.yml --syntax-check
[root@ansible ~]# ansible-playbook c.yml
[root@mysql ~]# id test1
[root@mysql ~]# id test2
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.