#ansible #reserved-ip-addresses
#ansible #зарезервированные IP-адреса
Вопрос:
Я вызываю infoblox из ansible, используя следующую инструкцию:
- hosts: localhost
gather_facts: false
tasks:
- name: Include infoblox_vault
include_vars:
file: 'infoblox_vault.yml'
- name: Install infoblox-client for DDI
pip:
name: infoblox-client
environment:
HTTP_PROXY: http://our_internal_proxy.net:8080
HTTPS_PROXY: http://our_internal_proxy.net:8080
delegate_to: localhost
- debug:
msg: can I decrypt username?--> "{{ vault_infoblox_username }}"
- name: Check if DNS Record exists
set_fact:
miqCreateVM_ddiRecord: "{{ lookup('nios', 'record:a', filter={'name': 'infoblox-devtest.net' }, provider={'host': 'ddi-qa.net', 'username': vault_infoblox_username, 'password': vault_infoblox_password }) }}"
- debug:
msg: check var miqCreateVM_ddiRecord "{{ miqCreateVM_ddiRecord }}"
- debug:
msg: test to see amazing vm_name! "{{ vm_name }}"
... code snipped
Когда задание выполняется, я получаю:
Vault password:
PLAY [localhost] ***************************************************************
TASK [Include infoblox_vault] **************************************************
ok: [127.0.0.1]
TASK [Install infoblox-client for DDI] *****************************************
ok: [127.0.0.1 -> localhost]
TASK [debug] *******************************************************************
ok: [127.0.0.1] => {
"msg": "can I decrypt username?--> "manageiq-ddi""
}
TASK [Check if DNS Record exists] **********************************************
fatal: [127.0.0.1]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'nios'. Error was a <type 'exceptions.Exception'>, original message: Infoblox IPAM is misconfigured: infoblox_username and infoblox_password are incorrect."}
PLAY RECAP *********************************************************************
127.0.0.1 : ok=3 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Вот основная часть: "An unhandled exception occurred while running the lookup plugin 'nios'. Error was a <type 'exceptions.Exception'>, original message: Infoblox IPAM is misconfigured: infoblox_username and infoblox_password are incorrect."
Раньше этот сборник работал. Я не работал над этим несколько месяцев. Не уверен, почему он сломан.
Я подтвердил, что могу войти в infoblox client вручную, используя учетные данные. Я также попытался вручную ввести имя пользователя, чтобы убедиться, что оно расшифровывает учетные данные из файла ansible-vault. Это сработало нормально. Так что это не учетные данные, а не расшифровка хранилища. Это что-то другое.
Я нашел в Интернете следующие три связанные темы, но ни одна из них, похоже, не решает проблему: Эта (которая ссылается на добавление сертификатов в запрос. Кто-нибудь знает, как это сделать? Я не могу найти инструкции) Этот (в котором упоминаются проблемы с обновлением. Я показал версии, упомянутые в этом сообщении, нашим сетевым пользователям, и они сказали, что номера версий вообще не коррелируют с тем, что у нас есть в нашей среде, поэтому трудно оценить, имеет ли это значение.) Последний (который требует использования свойства 'http_request_timeout' : None
, которое не кажется мне проблемой, поскольку я вообще не могу заставить его работать.)
Какие-либо теории? Спасибо!
Комментарии:
1. Возможно, вы захотите попробовать увеличить детализацию ansible (или даже big hammer
env ANSIBLE_DEBUG=1 ansible-playbook ...
), чтобы посмотреть, сможете ли вы вывести реальное сообщение об ошибке, и / или попробуйте запустить ansible сenv https_proxy=http://our_internal_proxy.net:8080 ansible-playbook -c local ...
помощью, если этотlookup
подпроцесс не получает доступ к прокси2. Спасибо @mdaniel! Я попробую это.
3. Я ставлю на вариант 2 (обновление infoblox-client). Вы сказали, что это работало несколько месяцев назад, но в вашем playbook вы устанавливаете последнюю версию infoblox-client локально перед запуском фильтра. Это то, что было обновлено, ничего на стороне сервера. Попробуйте конкретно установить версию
0.4.21
в своейpip
задаче.4. Спасибо @guido, это поучительно, хотя исправление было чем-то другим. Я просто перестроил файл хранилища ansible и создал новые учетные данные в ansible, чтобы использовать его и viola, это работает.
Ответ №1:
Это может не решить проблему для других, но это решило ее для меня:
- Получен новый пароль для Ansible для входа в Infoblox.
- Создайте новый файл ansible vault, содержащий новый пароль infoblox. Я также ввел новый пароль для шифрования файлов хранилища.
- Я создал новый объект учетных данных в ansible, чтобы ansible мог читать новый файл хранилища.
- Я обновил playbook, чтобы использовать новое хранилище.
Теперь это работает. Что-то было не так с шифрованием.