Aquesta és una revisió antiga del document


playbooks

  • lista de jugadas (tareas) en una lista de servidores
  • configuraciones y variables
  • formato YAML:
    playbook.yml
    ---
    - name: Mi primer playbook
      hosts: all
      remote_user: <usuario>
      become: true # a nivel de playbook, se podría hacer a nivel de tarea
      tasks:
        - name: copiar ficheros hosts
          copy: src=/etc/hosts dest=/etc/host
        - name: ...
          service: ...
    • cada guión es un playbook, puede haber varios en un fichero
    • name es opcional, pero recomendado
  • ansible-play [-i inventario] [ociones] playbook.yml
  • hosts: lista de servidores a administrar (grupos o servidores)
    • si se quieren separar, usar :
    • se puede usar & para que estén en 2 grupos a la vez
    • se puede usar !
hosts: serweb # un grupo, afecta a todas las máquinas
hosts: serweb:&barcelona # dos grupos, solo los que pertenecen a los dos grupos a la vez se verán afectados
hosts: serweb:!madrid # 2 grupos, solo los que pertenezcan al primero y no estén en el segundo se verán afectados
hosts: serweb:dbweb # afecta a los dos grupos
# usamos el inventario del directorio inventarios
# usamos el fichero miPlaybook.yml
# usamos --lists-hosts para ver a que servidores afectará
ansible-playbook -i inventarios/ miPlaybook.yml --list-hosts
 
# solo serweb+barcelona
ansible-playbook -i --limit 'serweb:&barcelona' inventarios/ miPlaybook.yml --list-hosts
  • remote_user: <usuario>
  • become: [True|False] | [1|0]
  • become_user: <usuario> (que queremos usar)
  • become_method: sudo/su/pbrun/ksu
  • check_mode: [True|False] → simulación

ansible-playbook [opiones] fichero.yml

  • opciones:
    • -i : especificar un inventario (fuera de /etc/ansible/hosts)
    • –syntax-check
    • –list-tasks
    • –list-hosts
    • –step : confirmar cada una de las tareas, cada uno de los playbooks
    • –start-at-task=<tarea> : permite saltarse tareas, le indicamos a partir de cual
    • –forks|[-f]=# : número de tareas en paralelo a ejecutar (por defecto, 5)
    • -v | -vv | -vvv : más verbosidad
  • dinamización de tareas
  • pueden ser definidas en:
    • facts : obtenidos del servidor (sobre el que aplicamos la configuración)
    • playbook
    • línea de comandos : -e → clave=valor
  • se pueden usar en:
    • tareas
    • plantillas (lógica)
    • otros (condiciones, bucles, roles, etc..)
  • uso:''{{variable}}'' (con dobles comillas, dobles llaves)

template sencillo, definimos una variable propia y las otras dos las da el propio servidor

hosts.j2
{{ miip }} {{ ansible_hostname}} {{ ansible_fqdn }}
playbook.yml
- name: crear ficher usando variables
  hosts: localhost
  connection: local
  vars:
    - miip: "1.2.3.4"
  tasks:
    - name: Crear fichero hosts
      template: src=hosts.j2 dest=/tmp/hosts 
ejecución
ansible-playbook playbook.yml
# el módulo template se encarga de buscar el fichero que necesita y hacer las sustituciones
lista de variables disponibles en el server
ansible localhost -m setup | grep -e ansible_hostname -e ansible_fqdn
sobreescribiendo las variables del playbook
ansible-playbook -e miip="5.6.7.8" playbook.yml
  • formato YAML:
    • simplifica definición playbooks
    • diferentes opciones para mejorar la legbilidad
  • partir línea de configuración larga:
ejemplo línea larga
- name: copiar fichero
  copy: src=/etc/hosts dest=/etc/hosts owner=root group=root mode=0644
ejemplo mejorado
- name: copiar fichero
  copy:
    src: /etc/hosts
    dest: /etc/hosts
    owner: root
    group: root
    mode: 0644
  • definir lista de variables:
lista de variables
- instalar:
  - apache
  - php5
  - mariadb
- instalar: ["apache","php5","mariadb"]
  • definir diccionario:
diccionario
- instalar:
  web: apache2
  bd: mariadb
  script: php5
-instalar: {web:"apache", bd:"mariadb",script:"php5"}

para hacer referencia, se usará instalar.web o instalar.script

  • texto / líneas de texto largas
texto largo
- texto_largo: |
    primera linea
    segunda linea
- linea_larga: >
    primera parte
    segunda parte
  • módulo debug : muestra un texto o un valor de una variable
debug
- debug: var=miip
- debug: var=texto_largo
- debug: linea_larga
- debug: instalar.web

es una tarea que se ejecuta solo cuando la llama otra tarea

- tasks:
  - name: configurar sshd.config
    copy: src=sshd_config dest=/etc/sshd.config
    notify: reiniciar_sshd
- handlers:
  - name: reinicar_sshd
    service: name=sshd state=restarted

los handlers se ejecutan al final de las tareas del playbook

  • info/cursos/udemy/ansible/playbooks.1536319381.txt.gz
  • Darrera modificació: 07/09/2018 04:23
  • per mate