ansible не находит роль, упомянутую в playbook

Я новичок в Ansible, так что могу настроить кое-что) неправильно
[У меня есть контейнер Docker, в котором запущена служба Ansible
У меня есть репозиторий Ansible, включающий файлы Ansible (это репозиторий .Git]

Мой будет автоматически возвращать каждую лабораторию на сервере vCenter к определенному моментальному снимку
Итак, я (с помощью ansible-ролевого руководства с примерами ):

  • Created роль с ansible-galaxy init имя команды vcenter (см. дерево каталогов ниже)
  • Создал некоторые файлы задач 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 в 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
0
задан 16 July 2021 в 14:59
1 ответ

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 игнорируются.

Исправьте разрешения для этого каталога и повторите попытку.

0
ответ дан 28 July 2021 в 14:34

Теги

Похожие вопросы