Я довольно новичок в Ansible, поэтому я мог неправильно настроить что-то
[У меня есть контейнер Docker с запущенным сервисом Ansible в CentOS8
У меня есть репозиторий Ansible, содержащий файлы Ansible (это репозиторий .Git).
Моя воля состояла в том, чтобы автоматически вернуть каждую лабораторию (лаборатория состоит из 8 vms, 5 Windows Server 2016 и 3 Windows 10. DC включает политику для включения winrm на этих машинах) на сервере vCenter к определенному моментальному снимку. Но сначала я пытаюсь: один раз выключить машины лаборатории, когда они включены, и один раз включать машины лаборатории, когда они выключены
Итак, я (с помощью ansible-roles-explained-with-examples guide):
- Создал роль с
ansible-галактика init
имя команды vcenter
(см. дерево каталогов ниже)
- Создал несколько файлов задач vcenter внутри
задачи
папку (см. дерево каталогов ниже). Вот пример poweroff.yml
и poweron.yml
файлы задач:
- name: установить состояние виртуальной машины на poweroff
сообщество.vmware.vmware_guest_powerstate:
имя хоста: "{{ vcenter_hostname }}"
имя пользователя: "{{ vcenter_username }}"
пароль: "{{ vcenter_password }}"
папка: "/{{ datacenter_name }}/vm/{{ папка }}"
имя: "{{ ansible_hostname }}"
# имя: "{{ guest_name }}"
валидате_сертс: нет
состояние: выключено
сила: да
делегат_к: локальный
зарегистрироваться: развернуть
- имя: установить состояние виртуальной машины для включения с использованием MoID
сообщество.vmware.vmware_guest_powerstate:
имя хоста: "{{ vcenter_hostname }}"
имя пользователя: "{{ vcenter_username }}"
пароль: "{{ vcenter_password }}"
папка: "/{{ datacenter_name }}/vm/{{ папка }}"
имя: "{{ ansible_hostname }}"
# мод: вм-42
валидате_сертс: нет
состояние: включено
делегат_к: локальный
зарегистрироваться: развернуть
- Предоставленные учетные данные vCenter в
vcenter\vars\main.yml
файл, например:
# файл vars для vcenter
vcenter_hostname: vcenter.foo.com
vcenter_username: [email protected]
vcenter_password: f#0$o#1$0o
имя_центра_данных: FOO_Fighters
# имя_хранилища_данных:
имя_кластера: FOO
папка: '/FOO/PRODUCT/DOMAIN.COM/'
- Включены задания в
задачи\main.yml
файл с импорт-задача
ключ, вот так:
---
# файл задач для roles/vcenter
- import_tasks: poweroff.yml
# - import_tasks: poweron.yml
# - import_tasks: revert.yml
# - import_tasks: shutdown.yml
- Создал
all.yml
внутри папки group_vars в библиотеке инвентаризации (я не знаю, является ли это профессиональным способом сделать это), которая включает все детали winrm, например:
---
#Сведения о протоколе WinRM
ansible_user: ДОМЕН\пользователь
ansible_password: f#0$o#1$0o
ansible_connection: winrm
доступный_порт: 5985
ansible_winrm_scheme: http
ansible_winrm_server_cert_validation: игнорировать
ansible_winrm_transport: ntlm
ansible_winrm_read_timeout_sec: 60
ansible_winrm_operation_timeout_sec: 58
- Создал
revert_lab.yml
playbook, который включает в себя роль, как это
---
- имя: восстановить локальную лабораторию
хозяева: все
роли:
- центр
Мой ansible.cfg
вот так:
[по умолчанию]
инвентарь = /ansible/inventories
roles_path = ./roles:..~/ansible/roles
Я успешно выполнил playbook, чтобы выключить все машины в лаборатории, затем я «включил» задачу poweron в роли, например:
---
# файл задач для roles/vcenter
# - import_tasks: poweroff.yml
- import_tasks: poweron.yml
# - import_tasks: revert.yml
# - import_tasks: shutdown.yml
Теперь, когда все компьютеры лаборатории отключены, при выполнении playbook выдается следующая ошибка:
ИГРАТЬ [вернуть vmware vcenter lab] ************************************************* ******
ЗАДАНИЕ [Сбор фактов] *************************************************** ****************
фатальный: [vm1.domain.com]: НЕДОСТУПНО! => {"изменено": false, "msg": "ntlm:
HTTPConnectionPool(host='vm1.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<объект urllib3.connection.HTTPConnection по адресу 0x7fb7ae4908d0>): не удалось установить новое соединение: [ Errno 111] Соединение отклонено',))", "недостижимо": true}
фатальный: [vm2.domain.com]: НЕДОСТУПНО! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='vm2.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<urllib3. Объект connection.HTTPConnection по адресу 0x7fb7ae487b00>: не удалось установить новое соединение: [Errno 111] Отказано в соединении',))", "unreachable": true}
фатальный: [vm3.domain.com]: НЕДОСТУПНО! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='vm3.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<urllib3. Объект connection.HTTPConnection по адресу 0x7fb7ae48acc0>: не удалось установить новое соединение: [Errno 111] Отказано в соединении',))", "unreachable": true}
фатальный: [vm4.domain.com]: НЕДОСТУПНО! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='vm4.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<urllib3. Объект connection.HTTPConnection по адресу 0x7fb7ae48de80>: не удалось установить новое соединение: [Errno 111] Отказано в соединении',))", "unreachable": true}
фатальный: [vm5.domain.com]: НЕДОСТУПНО! => {"изменено": false, "msg": "ntlm:
HTTPConnectionPool(host='vm5.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<объект urllib3.connection.HTTPConnection по адресу 0x7fb7ae41f080>): не удалось установить новое соединение: [ Errno 111] Соединение отклонено',))", "недостижимо": true}
фатальный: [vm6.domain.com]: НЕДОСТУПНО! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='vm6.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<urllib3. Объект connection.HTTPConnection по адресу 0x7fb7ae41d7f0>: не удалось установить новое соединение: [Errno 111] Отказано в соединении',))", "unreachable": true}
фатальный: [vm7.domain.com]: НЕДОСТУПНО! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='vm7.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<urllib3. Объект connection.HTTPConnection по адресу 0x7fb7ae428048>: не удалось установить новое соединение: [Errno 111] Отказано в соединении',))", "unreachable": true}
фатальный: [vm8.domain.com]: НЕДОСТУПНО! => {"changed": false, "msg": "ntlm: HTTPConnectionPool(host='vm8.domain.com', port=5985): превышено максимальное количество попыток с URL-адресом: /wsman (вызвано NewConnectionError('<urllib3. Объект connection.HTTPConnection по адресу 0x7fb7ae425588>: не удалось установить новое соединение: [Errno 111] Отказано в соединении',))", "unreachable": true}
ОБЗОР ИГРЫ ******************************************************* *************************
vm1.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm2.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm3.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm4.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm5.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm6.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm7.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
vm8.domain.com : ok=0 изменено=0 недостижимо=1 не удалось=0 пропущено=0 спасено=0 проигнорировано=0
Почему задача poweroff работает нормально, а poweron - нет? Как я могу решить эту проблему?
Мой репозиторий:
С:.
ââââансибль
✓ 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
Мой инвентарь lab_r.yml
- это частичная схема
---
все:
дети:
корень:
дети:
центр:
дети:
серверы приложений:
хосты:
vm1.домен.com:
qсерверы:
хосты:
vm2.домен.com:
серверы баз данных:
хосты:
vm3.домен.com: