Видео

Playbooks

Я уже ни раз упоминал о Ansible Playbook в своих статьях ранее, и я думаю если вы читали то уже в целом поняли что это такое.

Ansible Playbook - это основной файл вашего проекта Ansible. Именно в нём вы прописываете какие роли или задачи вы хотите выполнять и на каких конечных хостах.

Для примера рассмотрим создание Ansible Playbook для установки nginx на всех хостах в группе web.

vim install_nginx_playbook.yml
- name: Install and start Nginx
  hosts: web
  become: yes
  vars:
    app_for_install: "nginx"

  tasks:

    - name: Install app
      yum:
        name: "{{ app_for_install }}"
        state: latest

    - name: Start app
      service:
        name: "{{ app_for_install }}"
        state: started
ansible-playbook -i inventory/static.yml install_nginx_playbook.yml

Play

Play - это собственно то, что внутри Ansible Playbook. Ansible Playbook состоит из одного или множества play. Т.е когда мы пишем какие-либо задачи (tasks) мы помещаем их в play.

Рассмотрим тот же пример что и с Ansible Playbook, только поделим один play на 2.

vim install_nginx_plays.yml
#Play1 started
- name: Install Nginx
  hosts: web
  become: yes
  vars:
    app_for_install: "nginx"

  tasks:

    - name: Install app
      yum:
        name: "{{ app_for_install }}"
        state: latest

#Play2 started
- name: Start Nginx
  hosts: web
  become: yes
  vars:
    app_for_start: "nginx"

  tasks:

    - name: Start app
      service:
        name: "{{ app_for_start }}"
        state: started
ansible-playbook -i inventory/static.yml install_nginx_plays.yml

Это просто демонстрация примера, понятно, что в production не нужно делить 2 однотипных задачи (tasks) на 2 разных play.