Я новичок в Ansible, так что могу настроить кое-что) неправильно
[У меня есть контейнер Docker, в котором запущена служба Ansible
У меня есть репозиторий Ansible, включающий файлы Ansible (это репозиторий .Git]
Мой будет автоматически возвращать каждую лабораторию на сервере vCenter к определенному моментальному снимку
Итак, я (с помощью ansible-ролевого руководства с примерами ):
ansible-galaxy init
имя команды vcenter
(см. дерево каталогов ниже) tasks
(см. дерево каталогов ниже ). Он Это пример файла задачи rever.yml
: - name: Revert to a snapshot
vmware_guest_snapshot:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
datacenter: "{{ datacenter_name }}"
state: revert
snapshot_name: CLEAN
delegate_to: localhost
vcenter \ vars \ main.yml
, например: # vars file for vcenter
vcenter_hostname: vcenter.foo.com
vcenter_username: hiddai@foo.com
vcenter_password: f#0$o#1$0o
tasks \ main.yml
с ключом import-task
, например: ---
# tasks file for roles/vcenter
- import_tasks: poweroff.yml
- import_tasks: poweron.yml
- import_tasks: revert.yml
- import_tasks: shutdown.yml
] revert_lab.yml
playbook, который включает роль, как этот ---
- name: revert an onpremis lab
hosts: all
roles:
- vcenter
Перед тем, как я выполнил playbook, чтобы вернуть все машины в лаборатории, я провел небольшую проверку синтаксиса playbook:
ansible-playbook playbooks/revert_lab.yml --syntax-check
Я получил следующую ошибку:
[WARNING]: Ansible is being run in a world writable directory (/ansible), ignoring it as an ansible.cfg source. For more information see
https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC
4.8.5 20150623 (Red Hat 4.8.5-44)]. This feature will be removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
ERROR! the role 'vcenter' was not found in /ansible/playbooks/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/ansible/playbooks
The error appears to be in '/ansible/playbooks/revert_lab.yml': line 5, column 5, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
roles:
- vcenter
^ here
Я решил добавить ansible.cfg
в свой репозиторий с ключом roles_path
:
[defaults]
inventory = /ansible/inventories
roles_path = /ansible/roles
# roles_path = ./roles:..~/ansible/roles
Я снова запустил - синтаксис -check
, но возникла та же ошибка. Я пробовал разные типы статусов пути ролей - и получил ту же ошибку. Конечно, команда ansible-playbook
не работала (с тем же сообщением об ошибке):
ansible-playbook playbooks/revert_lab.yml -i inventories/test/onpremis/domain.com/lab_r.yml
Итак,
как сделать доступным для распознавания моей роли?
Как мне сделать доступным для успешного выполнения моего playbook?
Является ли файл ansible.cfg релевантным или нерелевантным для "истории"?
Мой репозиторий:
C:.
├───ansible
│ │ ansible.cfg
│ ├───inventories
│ │ └───test
│ │ ├───cloud
│ │ └───onpremis
│ │ └───domain.com
│ │ │ lab_j.yml
│ │ │ lab_r.yml
│ │ └───group_vars
│ │ all.yml
│ ├───playbooks
│ │ revert_lab.yml
│ └───roles
│ └───vcenter
│ ├───tasks
│ │ main.yml
│ │ poweroff.yml
│ │ poweron.yml
│ │ revert.yml
│ │ shutdown.yml
│ └───vars
│ main.yml
Ansible сообщил вам, что не так:
[WARNING]: Ansible is being run in a world writable directory (/ansible), ignoring it as an ansible.cfg source. For more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
Это означает, что ваши изменения в ansible.cfg игнорируются.
Исправьте разрешения для этого каталога и повторите попытку.