Создание своего первого playbook
Начнем с создания простого Ansible playbook (плейбука Ansible), который создаст директорию и файл на локальной машине. Это поможет вам понять базовую структуру playbook и как его выполнить.
Сначала создадим новый файл с именем first_playbook.yml
в директории /home/labex/project
:
nano /home/labex/project/first_playbook.yml
Эта команда открывает текстовый редактор nano. Если вы не знакомы с nano, не беспокойтесь - это простой текстовый редактор. Вы можете вводить текст прямо в него.
Теперь добавьте следующее содержимое в файл:
---
- name: My First Playbook
hosts: localhost
connection: local
tasks:
- name: Create a directory
file:
path: /home/labex/project/test_directory
state: directory
mode: "0755"
- name: Create a file
copy:
content: "Hello from Ansible!"
dest: /home/labex/project/test_directory/hello.txt
Разберем этот playbook, чтобы понять каждую его часть:
- Символы
---
вверху файла отмечают начало файла в формате YAML. YAML - это формат, используемый для Ansible playbooks.
name: My First Playbook
- это описательное имя для этого play (этапа выполнения). Это помогает вам понять, что делает этот playbook.
hosts: localhost
указывает, что этот playbook будет выполняться на локальной машине. В реальной ситуации вы можете указать здесь удаленные хосты.
connection: local
сообщает Ansible выполнить playbook локально, а не использовать SSH. Это полезно для тестирования и для задач, которые должны выполняться непосредственно на узле управления Ansible.
tasks:
за которым следует список задач, которые должны быть выполнены. Каждая задача представляет собой действие, которое вы хотите, чтобы Ansible выполнил.
- Каждая задача имеет
name
для описания. Это помогает вам понять, что делает каждая задача и упрощает устранение неполадок.
- В задачах используются модули Ansible:
- Модуль
file
используется для создания директории.
- Модуль
copy
используется для создания файла с определенным содержимым.
Не беспокойтесь, если вы еще не понимаете все модули. По мере продвижения вы узнаете о многих других модулях и их применении.
Сохраните и выйдите из редактора. В nano вы можете сделать это, нажав Ctrl+X
, затем Y
, а затем Enter
.
Теперь запустим этот playbook. В терминале введите:
ansible-playbook /home/labex/project/first_playbook.yml
Эта команда сообщает Ansible выполнить playbook, который мы только что создали. Вы должны увидеть вывод, похожий на следующий:
PLAY [My First Playbook] ******************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Create a directory] ******************************************************
changed: [localhost]
TASK [Create a file] ***********************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Этот вывод показывает, что Ansible успешно выполнил наши задачи. Статус "changed" указывает, что Ansible внес изменения в систему (создал директорию и файл).
Если вы хотите вручную проверить результаты, вы можете использовать следующие команды:
ls -l /home/labex/project/test_directory
cat /home/labex/project/test_directory/hello.txt
Первая команда должна показать директорию, которую мы создали, а вторая - содержимое файла, который мы создали.