Luego de investigar en diferentes repositorios y páginas webs de internet al concluir dimos con la solución que te enseñamos ahora.
Cuando ejecuta Ansible a través de un comando ad hoc o ejecutando un libro de jugadas, debe elegir contra qué nodos o grupos administrados desea ejecutar. Los patrones le permiten ejecutar comandos y libros de jugadas contra hosts y / o grupos específicos en su inventario. Un patrón de Ansible puede referirse a un solo host, una dirección IP, un grupo de inventario, un conjunto de grupos o todos los hosts de su inventario. Los patrones son muy flexibles: puede excluir o requerir subconjuntos de hosts, usar comodines o expresiones regulares, y más. Ansible se ejecuta en todos los hosts de inventario incluidos en el patrón.
- Usando patrones
- Patrones comunes
- Limitaciones de patrones
-
Opciones de patrón avanzadas
- Usar variables en patrones
- Usar la posición del grupo en patrones
- Usar expresiones regulares en patrones
- Patrones y banderas de ansible-playbook
Usando patrones
Usas un patrón casi siempre que ejecutas un comando ad hoc o un libro de jugadas. El patrón es el único elemento de una comando ad hoc que no tiene bandera. Suele ser el segundo elemento:
ansible>-m >-a " >"
Por ejemplo:
ansible webservers -m service -a "name=httpd state=restarted"
En un libro de jugadas, el patrón es el contenido del hosts:
línea para cada obra:
-name:>hosts: >
Por ejemplo:
-name: restart webservers hosts: webservers
Dado que a menudo desea ejecutar un comando o un libro de jugadas contra varios hosts a la vez, los patrones a menudo se refieren a grupos de inventario. Tanto el comando ad hoc como el libro de jugadas anterior se ejecutarán en todas las máquinas en el webservers
grupo.
Patrones comunes
En esta tabla, se enumeran los patrones comunes para la segmentación de grupos y hosts de inventario.
Descripción |
Patrones) |
Objetivos |
---|---|---|
Todos los anfitriones |
todos (o *) |
|
Un anfitrión |
host1 |
|
Varios hosts |
host1: host2 (o host1, host2) |
|
Un grupo |
servidores web |
|
Varios grupos |
servidores web: dbservers |
todos los hosts en servidores web más todos los hosts en dbservers |
Excluyendo grupos |
servidores web:! atlanta |
todos los hosts en los servidores web excepto los de atlanta |
Intersección de grupos |
servidores web: y puesta en escena |
cualquier host en servidores web que también estén en fase de preparación |
Nota
Puede usar una coma (,
) o dos puntos (:
) para separar una lista de hosts. Se prefiere la coma cuando se trata de rangos y direcciones IPv6.
Una vez que conozca los patrones básicos, puede combinarlos. Este ejemplo:
webservers:dbservers:&staging:!phoenix
apunta a todas las máquinas de los grupos ‘webservers’ y ‘dbservers’ que también están en el grupo ‘staging’, excepto las máquinas del grupo ‘phoenix’.
Puede usar patrones comodín con FQDN o direcciones IP, siempre que los hosts estén nombrados en su inventario por FQDN o dirección IP:
192.0.* *.example.com *.com
Puede mezclar grupos y patrones de comodines al mismo tiempo:
one*.com:dbservers
Limitaciones de patrones
Los patrones dependen del inventario. Si un anfitrión o grupo no está incluido en su inventario, no puede usar un patrón para orientarlo. Si su patrón incluye una dirección IP o un nombre de host que no aparece en su inventario, verá un error como este:
[WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: Could not match supplied host pattern, ignoring: *.not_in_inventory.com
Su patrón debe coincidir con la sintaxis de su inventario. Si define un host como alias:
atlanta:host1:http_port:80maxRequestsPerChild:808host: 127.0.0.2
debe utilizar el alias en su patrón. En el ejemplo anterior, debe utilizar host1
en tu patrón. Si usa la dirección IP, una vez más obtendrá el error:
[WARNING]: Could not match supplied host pattern,ignoring: 127.0.0.2
Opciones de patrón avanzadas
Los patrones comunes descritos anteriormente satisfarán la mayoría de sus necesidades, pero Ansible ofrece varias otras formas de definir los hosts y grupos a los que desea dirigirse.
Usar variables en patrones
Puede utilizar variables para habilitar el paso de especificadores de grupo a través del -e
argumento para ansible-playbook:
webservers:! excluded :& required
Usar la posición del grupo en patrones
Puede definir un host o un subconjunto de hosts por su posición en un grupo. Por ejemplo, dado el siguiente grupo:
[webservers] cobweb webbing weber
puede usar subíndices para seleccionar hosts individuales o rangos dentro del grupo de servidores web:
webservers[0]# == cobweb webservers[-1]# == weber webservers[0:2]# == webservers[0],webservers[1]# == cobweb,webbing webservers[1:]# == webbing,weber webservers[:3]# == cobweb,webbing,weber
Usar expresiones regulares en patrones
Puede especificar un patrón como una expresión regular comenzando el patrón con ~
:
~(web|db).*.example.com
Patrones y banderas de ansible-playbook
Puede cambiar el comportamiento de los patrones definidos en los libros de jugadas mediante las opciones de la línea de comandos. Por ejemplo, puede ejecutar un libro de jugadas que defina hosts: all
en un solo host especificando -i 127.0.0.2,
(tenga en cuenta la coma final). Esto funciona incluso si el host al que se dirige no está definido en su inventario. También puede limitar los hosts a los que se dirige en una ejecución en particular con el --limit
bandera:
ansible-playbook site.yml --limit datacenter2
Finalmente, puedes usar --limit
para leer la lista de hosts de un archivo prefijando el nombre del archivo con @
:
ansible-playbook site.yml --limit @retry_hosts.txt
Si RETRY_FILES_ENABLED se establece en True
, a .retry
El archivo se creará después de la ansible-playbook
ejecución que contiene una lista de hosts fallidos de todas las jugadas. Este archivo se sobrescribe cada vez ansible-playbook
termina de correr.
ansible-playbook site.yml –limit @ site.retry
Para aplicar su conocimiento de patrones con los comandos y los libros de jugadas de Ansible, lea Introducción a los comandos ad hoc y Introducción a los libros de jugadas.
Ver también
- Introducción a los comandos ad hoc
-
Ejemplos de comandos básicos
- Trabajar con libros de jugadas
-
Aprender el lenguaje de gestión de la configuración de Ansible
- Lista de correo
-
¿Preguntas? ¿Ayudar? Ideas? Pasa por la lista de Grupos de Google
- irc.freenode.net
-
#ansible canal de chat de IRC
Si te ha sido de provecho nuestro post, sería de mucha ayuda si lo compartieras con otros juniors de este modo nos ayudas a difundir esta información.