Подготовка проекта Ansible с использованием Git

AnsibleBeginner
Практиковаться сейчас

Введение

Работать с Ansible гораздо проще, когда каждая задача автоматизации находится в четко структурированном каталоге проекта. При подготовке к экзамену RHCE также важно придерживаться правил контроля версий, так как плейбуки, инвентарные файлы, переменные и роли — это текстовые файлы, которые со временем меняются.

В этой лабораторной работе вы создадите небольшой проект Ansible в директории /home/labex/project/rhce-ansible, инициализируете его как репозиторий Git, добавите первый инвентарный файл и зафиксируете базовую структуру. Проект будет намеренно небольшим, но его структура соответствует той, что используется на протяжении всего курса подготовки.

Создание рабочей области проекта

На этом этапе вы создадите каталог проекта и первый набор папок, используемых в проектах Ansible. Опция -p указывает команде mkdir создавать отсутствующие родительские каталоги и не выдавать ошибку, если каталог уже существует.

Перейдите в стандартную рабочую область LabEx.

cd /home/labex/project

Создайте каталог проекта с общими подкаталогами для инвентаря, плейбуков, переменных, файлов, шаблонов и ролей.

mkdir -p rhce-ansible/{inventory,playbooks,group_vars,host_vars,roles,files,templates}

Названия каталогов являются общепринятыми, а не обязательными. Их использование на раннем этапе поможет вам ориентироваться, где в будущих лабораторных работах будут размещаться инвентарные файлы, переменные, код переиспользуемых ролей и исходные файлы, которые плейбуки будут копировать или использовать в качестве шаблонов.

Выведите структуру нового проекта. В выводе должны отобразиться только что созданные каталоги.

find rhce-ansible -maxdepth 2 -type d | sort

Команда find выводит каталоги в дереве проекта, а sort упорядочивает их. На данный момент каталоги пусты, но их наличие — это базовая структура, которую вы зафиксируете позже.

Инициализация Git и настройка локальной идентификации

На этом этапе вы превратите проект в репозиторий Git. Git хранит историю изменений в скрытом каталоге .git. Настройка идентификации локально делает эту лабораторную работу автономной и позволяет избежать изменения глобальных настроек пользователя.

Перейдите в каталог проекта.

cd /home/labex/project/rhce-ansible

Инициализируйте репозиторий.

git init

Git создает скрытый каталог .git внутри проекта. Этот каталог является базой данных репозитория; видимые файлы Ansible остаются в обычном дереве проекта.

Установите локальное имя автора и адрес электронной почты для коммитов в этом репозитории.

git config user.name "LabEx RHCE Learner"
git config user.email "learner@example.com"

Проверьте статус репозитория. Git должен сообщить, что вы находитесь в ветке, где еще нет отслеживаемых файлов.

git status --short

Краткий формат статуса намеренно компактен. Пустые каталоги не отслеживаются Git, поэтому это нормально, если команда ничего не выводит, пока вы не добавите реальные файлы.

Добавление примечаний к проекту и правил игнорирования

На этом этапе вы добавите два простых файла проекта. Файл README.md объясняет назначение проекта, а .gitignore предотвращает попадание временных файлов в историю Git.

Перед выполнением команд на этом этапе вернитесь в каталог проекта, чтобы относительные пути указывали на проект Ansible.

cd /home/labex/project/rhce-ansible

Используйте here-document для создания README.md. Текст между маркерами EOF будет записан в файл в точности так, как показано.

cat > README.md <<'EOF'
## RHCE Ansible Practice Project

This repository contains guided Ansible practice files for RHCE-style automation.
EOF

Создайте небольшой файл .gitignore для типичных временных артефактов Ansible.

cat > .gitignore <<'EOF'
*.retry
.artifacts/
__pycache__/
EOF

Шаблон *.retry охватывает файлы повторных попыток из старых рабочих процессов Ansible, .artifacts/ — это общее место для сгенерированных выходных данных, а __pycache__/ предотвращает попадание байт-кода Python в историю вашего проекта.

Выведите содержимое обоих файлов, чтобы подтвердить их корректность перед отслеживанием.

sed -n '1,20p' README.md .gitignore

Создание первого инвентаря

На этом этапе вы создадите небольшой статический инвентарь. Инвентарь содержит список систем, которыми может управлять Ansible. Для первой лабораторной работы хост с именем control использует ansible_connection=local, что означает, что Ansible будет выполнять задачи на этой же виртуальной машине без использования SSH.

Перед выполнением команд на этом этапе вернитесь в каталог проекта.

cd /home/labex/project/rhce-ansible

Создайте inventory/hosts.

cat > inventory/hosts <<'EOF'
[control]
control ansible_connection=local
EOF

Строка [control] в скобках определяет группу. Следующая строка определяет псевдоним хоста control, а ansible_connection=local указывает Ansible не использовать SSH для этого первого проекта.

Используйте ansible-inventory для разбора файла. Эта команда проверяет синтаксис инвентаря перед его использованием в плейбуке.

ansible-inventory -i inventory/hosts --graph

Граф должен включать группу control и хост control.

Фиксация базового проекта

На этом этапе вы добавите базовые файлы в Git и создадите первый коммит. Коммит — это именованная контрольная точка, которую вы сможете просмотреть позже.

Перед выполнением команд на этом этапе вернитесь в каталог проекта.

cd /home/labex/project/rhce-ansible

Добавьте файлы в индекс (staging). Это указывает Git, какие изменения должны быть включены в следующий коммит.

git add README.md .gitignore inventory/hosts

Создайте базовый коммит.

git commit -m "Create Ansible project baseline"

В выводе коммита должны быть указаны файлы, добавленные в репозиторий. Если Git сообщает, что нечего коммитить, повторно выполните git status --short и убедитесь, что README.md, .gitignore и inventory/hosts были добавлены в индекс.

Проверьте финальный статус и последний коммит. Чистый статус означает, что все отслеживаемые изменения зафиксированы.

git status --short
git log --oneline -1

Команда git status --short теперь должна быть пустой, а git log --oneline -1 должна показать сообщение о новом коммите. Это дает вам надежную контрольную точку перед тем, как в следующих лабораторных работах будет добавлено больше контента Ansible.

Резюме

Вы создали чистую рабочую область проекта Ansible, инициализировали Git, добавили базовый инвентарь и зафиксировали первую контрольную точку. Эти навыки работы с проектами облегчат управление будущими плейбуками, переменными, шаблонами, ролями и файлами проверки.