Введение
Работать с 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, добавили базовый инвентарь и зафиксировали первую контрольную точку. Эти навыки работы с проектами облегчат управление будущими плейбуками, переменными, шаблонами, ролями и файлами проверки.


