Специальная команда Ansible с ключами ssh

#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 выполняет поиск файлов конфигурации в следующем порядке, обрабатывая первый найденный файл и игнорируя остальные:

  1. $ANSIBLE_CONFIG если задана переменная окружения.
  2. ansible.cfg если он находится в текущем каталоге.
  3. ~/.ansible.cfg если он находится в домашнем каталоге пользователя.
  4. /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 «.}