Я довольно новичок в Ansible, поэтому я мог неправильно настроить что-то
[У меня есть контейнер Docker, в котором работает служба Ansible.
У меня есть репозиторий Ansible, содержащий файлы Ansible (это репозиторий .Git).
Моя воля состояла в том, чтобы автоматически возвращать каждую лабораторию на сервере vCenter к определенному моментальному снимку
Итак, я (с помощью ansible-roles-explained-with-examples guide):
- Создал роль с
ansible-галактика init
имя команды vcenter
(см. дерево каталогов ниже)
- Создал несколько файлов задач vcenter внутри
задачи
папку (см. дерево каталогов ниже). Вот пример rever.yml
файл задания:
- имя: Вернуться к снимку
vmware_guest_snapshot:
имя хоста: "{{ vcenter_hostname }}"
имя пользователя: "{{ vcenter_username }}"
пароль: "{{ vcenter_password }}"
центр обработки данных: "{{ datacenter_name }}"
состояние: вернуться
имя_снимка: ЧИСТЫЙ
делегат_к: локальный
- Предоставленные учетные данные vCenter в
vcenter\vars\main.yml
файл, например:
# файл vars для vcenter
vcenter_hostname: vcenter.foo.com
vcenter_username: [email protected]
vcenter_password: f#0$o#1$0o
- Включены задания в
задачи\main.yml
файл с импорт-задача
ключ, вот так:
---
# файл задач для roles/vcenter
- import_tasks: poweroff.yml
- import_tasks: poweron.yml
- import_tasks: revert.yml
- import_tasks: shutdown.yml
- Создал
revert_lab.yml
playbook, который включает в себя роль, как это
---
- имя: восстановить локальную лабораторию
хозяева: все
роли:
- центр
Прежде чем выполнить плейбук, чтобы вернуть все машины в лабораторию, я провел небольшую проверку.
синтаксиса плейбука:
ansible-playbook playbooks/revert_lab.yml --syntax-check
Ошибка, которую я получил, была:
[ПРЕДУПРЕЖДЕНИЕ]: Ansible запускается в доступном для записи каталоге (/ansible), игнорируя его как источник ansible.cfg. Для получения дополнительной информации см.
https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
[ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕНИИ]: Ansible потребует Python 3.8 или новее на контроллере, начиная с Ansible 2.12. Текущая версия: 3.6.8 (по умолчанию, 16 ноября 2020 г., 16:55:22) [GCC
4.8.5 20150623 (Red Hat 4.8.5-44)]. Эта функция будет удалена из ansible-core в версии 2.12. Предупреждения об устаревании можно отключить, установив
deprecation_warnings=False в файле ansible.cfg.
[ВНИМАНИЕ]: Инвентаризация не проанализирована, доступен только неявный локальный хост.
[ВНИМАНИЕ]: предоставленный список хостов пуст, доступен только локальный хост. Обратите внимание, что неявный локальный хост не соответствует «всем»
ОШИБКА! роль «vcenter» не найдена в /ansible/playbooks/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/ansible/playbooks
Ошибка, по-видимому, находится в «/ansible/playbooks/revert_lab.yml»: строка 5, столбец 5, но может
быть в другом месте файла в зависимости от конкретной проблемы синтаксиса.
Оскорбительная строка выглядит так:
роли:
- центр
^ здесь
я решил добавить ansible.cfg
в мой репозиторий с a путь_ролей
ключ:
[по умолчанию]
инвентарь = /ansible/inventories
roles_path = /доступный/роли
# roles_path = ./roles:..~/ansible/roles
Я снова побежал --syntax-check
команду, но получил ту же ошибку. Я пробовал разные виды ролевых путей - и получил ту же ошибку. Конечно ansible-playbook
команда не сработала (с тем же сообщением об ошибке):
ansible-playbook playbooks/revert_lab.yml -i inventory/test/onpremis/domain.com/lab_r.yml
Так,
Как заставить ansible распознавать мою роль?
Как мне сделать так, чтобы мой playbook успешно запускался?
Относится ли ansible.cfg к «истории» или нет?
Мой репозиторий:
С:.
ââââансибль
✓ ansible.cfg
ââââзапасы
â–––тест
â â ââââоблако
â â â–––на территории
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ домен.com
â â â lab_j.yml
â â â lab_r.yml
â â ââââgroup_vars
â â all.yml
ââââplaybooks
✓ ✓ revert_lab.yml
ââââроли
â ââââvcenter
ââââзадачи
â â main.yml
✓ poweroff.yml
✓ poweron.yml
â â revert.yml
❏ shutdown.yml
â ââââварс
✓ main.yml