Lote Ansible Hay dos formas de realizar tareas adhoc
y playbook
, al ejecutar comandos simples, puede usar adhoc
, cuando ejecutar comandos complejos que involucran múltiples módulos / condiciones, se recomienda usarplaybook
módulo módulo
ansible
La capa inferior es python
, pero ansible
no necesitamos escribir un python
script cuando lo usamos , pero podemos llamar directamente al módulo.
Los módulos son scripts desarrollados por funcionarios de Red Hat u otros socios o entusiastas del desarrollo. Podemos ejecutar los comandos correspondientes llamando al módulo.
Ver todos los módulos ansible
ansible-doc -l
Ver la ayuda del módulo especificado
ansible-doc ping
Módulos comunes
Módulos relacionados con archivos
- copiar Copiar archivos locales al host administrado
- conjunto de archivos permisos y atributos de archivos
- lineinfile establece el contenido del archivo
- sincronizar Utilice rsync para sincronizar contenido
Módulos relacionados con la gestión de paquetes
- paquete Seleccionar automáticamente el paquete de software de administración de herramientas de acuerdo con el sistema operativo del host administrado
- Yum usa la herramienta de administración de paquetes yum para administrar paquetes de software
- apt utiliza la herramienta de administración de paquetes APT para administrar paquetes de software
- dnf utiliza la herramienta de administración de paquetes DNF para administrar paquetes de software
- gestión de gemas Gemas de rubí
- pip gestiona paquetes de Python a través de PyPI
Módulos relacionados con el sistema
- firewalld Utilice firewalld para administrar firewalls
- reiniciar reiniciar la máquina
- servicio de gestión de servicios
- usuario de gestión de usuarios
ad hoc
formato
ansible" host-pattern" -m "module" -a"module argument" -i "inventroy-path"
parámetro
-m
Si el módulo no se especifica-m
, elcommand
módulo se utiliza de forma predeterminada , y elcommand
módulo puede ejecutarLinux
comandos directamente en el host administrado-a
Parámetros del módulo-u
usuario_remoto-i
ruta de inventario
Ejemplo
[root@localhost ~]# ansible all -m ping
servera.lab.example.com | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
libro de jugadas
playbook
Es un yaml
archivo de formato con el sufijo .yml
o.yaml
contenido del archivo del libro de jugadas
En un playbook
archivo puede contener múltiples, play
una play
serie de operaciones debe ejecutarse en el host especificado en una play
se puede especificar hosts
(que se ejecuta en el host) y tasks
(qué ejecución de comando) tasks
puede contener múltiples task
, cada una task
está en una llamada de módulo
Ejemplo de archivo de libro de jugadas
# YAML文件以---开头
---
# - 表示列表
# 第一个play 名称是Configure web server
- name: Configure web server
# hosts指定第一个play在哪些主机上执行
hosts: servera.lab.example.com
# tasks指定第一个play中都执行哪些内容
tasks:
# 第一个task,调用service模块,启动httpd服务并设置开机启动
- name: start and enabled httpd
service:
name: httpd
enabled: true
state: started
# 第二个play
- name: import test play file and set the variable
import_playbook: plays/test.yml
vars:
url: "http://servera.lab.example.com"
Sintaxis del archivo YAML
- Cuerda
- La cadena ordinaria puede ser sin comillas, comillas simples, comillas dobles.
Si desea citar una variable y la variable está al principio, debe usar comillas dobles para encerrar toda la línea. - Cuerda multilínea
- | El texto es en realidad varias líneas, y el retorno de carro se reemplaza automáticamente con
\n
- \> El texto es en realidad una línea y los retornos de carro no se procesarán
- La cadena ordinaria puede ser sin comillas, comillas simples, comillas dobles.
- La lista está
en la misma sangría, use-
para especificar la lista
Uso de diccionariokey: value
para especificar el diccionario
Ejemplo
# 字符串
name: This is a string
name: "This is a string"
name: 'This is a string'
# 列表
hosts:
- servera
- serverb
- serverc
# 字典
name: httpd
port: 443
Ejecutar el libro de jugadas
gramática
ansible-playbook webserver.yml -e "user=root"
parámetro
--limit=serverc
Ejecutar solo en serverc--syntax-check
Compruebe si hay errores de sintaxis-e
Especificar variables-C
Pretender correr es inútil
Salida y resultados del libro de jugadas
El libro de jugadas suele ser idempotente, es decir, el mismo libro de jugadas, no importa cuántas veces se ejecute, el resultado final es el mismo. Si el host controlado se ha cambiado antes, no se cambiará cuando se vuelva a ejecutar el libro de jugadas.
El resultado de la ejecución del libro de jugadas.
El siguiente es un playbook
ejemplo del resultado de la ejecución
[root@localhost ~]# ansible-playbook copy-file.yml
# 执行的PLAY的名称
PLAY [Using the copy module] **********************************************************************************************
# 执行的TASK名称 以及该TASK在哪些主机上执行及执行结果
TASK [Gathering Facts] ****************************************************************************************************
ok: [serverb.lab.example.com]
ok: [servera.lab.example.com]
TASK [copy files/user.txt to remote host] *********************************************************************************
changed: [serverb.lab.example.com]
changed: [servera.lab.example.com]
# PLAY的执行结果概述
PLAY RECAP ****************************************************************************************************************
servera.lab.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverb.lab.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Descripción
TASK
Resultados de
Resultado general
ok
Ejecución exitosa, sin cambioschanged
La ejecución fue exitosa y se realizaron los cambios.unreachable
El host controlado es inalcanzablefailed
La ejecución falló
Relacionados con el control de procesos
skipped
No cumpla las condiciones de ejecución, omita la tarea y no ejecuterescued
Enblock
ejecución cuando fallaignored
La ejecución falló pero se ignoró el error