#networking #ansible #juniper #ansible-ad-hoc
#сеть #ansible #juniper #ansible-ad-hoc
Вопрос:
Я хотел бы настроить ansible на своем Mac. Я делал нечто подобное в GNS3, и это сработало, но здесь есть еще несколько факторов, которые я должен принять во внимание. итак, у меня установлен Ansible. Я добавил имена хостов в /etc/hosts, и я могу выполнить пинг, используя имена хостов, которые я там указал.
Я создал папку ansible, которую я собираюсь использовать, и поместил ansible.cfg внутрь:
[defaults]
hostfile = ./hosts
host_key_checking = false
timeout = 5
inventory = ./hosts
В той же папке у меня есть файл hosts:
[tp-lab]
lab-acc0
Когда я пытаюсь выполнить следующую команду: ansible tx-edge-acc0 -m ping
Я получаю следующие ошибки:
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
[WARNING]: Unhandled error in Python interpreter discovery for host tx-edge-acc0: unexpected output from Python interpreter discovery
[WARNING]: sftp transfer mechanism failed on [tx-edge-acc0]. Use ANSIBLE_DEBUG=1 to see detailed information
[WARNING]: scp transfer mechanism failed on [tx-edge-acc0]. Use ANSIBLE_DEBUG=1 to see detailed information
[WARNING]: Platform unknown on host tx-edge-acc0 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change the meaning of that path. See
https://docs.ansible.com/ansible/2.10/reference_appendices/interpreter_discovery.html for more information.
tx-edge-acc0 | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"module_stderr": "Shared connection to tx-edge-acc0 closed.rn",
"module_stdout": "rnerror: unknown command: /bin/shrn",
"msg": "MODULE FAILUREnSee stdout/stderr for the exact error",
"rc": 0
Есть идеи, в чем может быть проблема? очень признателен
Ответ №1:
На первый взгляд кажется, что ваш контроллер ansible не загружает файлы конфигурации (особенно ansible.cfg) при запуске playbook.
(Из документации) Ansible выполняет поиск файлов конфигурации в следующем порядке, обрабатывая первый найденный файл и игнорируя остальные:
$ANSIBLE_CONFIG
если задана переменная окружения.ansible.cfg
если он находится в текущем каталоге.~/.ansible.cfg
если он находится в домашнем каталоге пользователя./etc/ansible/ansible.cfg
, конфигурационный файл по умолчанию.
Редактировать: Для душевного спокойствия полезно использовать полные пути
РЕДАКТИРОВАТЬ на основе комментариев
$ cat /home/ansible/ansible.cfg
[defaults]
host_key_checking = False
inventory = /home/ansible/hosts # <-- use full path to inventory file
$ cat /home/ansible/hosts
[servers]
server-a
server-b
Команда и вывод:
# Supplying inventory host group!
$ ansible servers -m ping
server-a | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
server-b | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Комментарии:
1. Мне удалось вызвать ее, однако я не могу выполнить базовый запрос ansible. Пожалуйста, проверьте мое обновление и спасибо за помощь
2. Установлен ли python на целевом сервере? Если это так, настройте интерпретатор, например
ansible_python_interpreter=/usr/bin/python3
3. Нет, на целевом сервере не установлен Python. Это просто пинг, поэтому он не нужен?
4. Да, потому что вы запускаете команду
ping
на сервере, указанном в файле инвентаризации. Вы можете проверить это с помощью некоторого удаленного веб-сервера (например facebook.com , google.com ) в вашем инвентарном файле.5. ОК. Теперь я создал playbook и включил netconf на удаленном коммутаторе, но все равно получаю следующее: СБОЙ! => {«изменено»: false, «сообщение»: «Тип подключения ssh недопустим для модуля netconf_get. Допустимый тип соединения — netconf «.}