Почему я не смог Ansible пинговать мой тестер? - PullRequest
2 голосов
/ 21 мая 2019

Я пытаюсь запустить пример из книги Ansible Up and Running.

Каталог моих playbooks

ls
ansible.cfg  hosts  ubuntu-bionic-18.04-cloudimg-console.log  Vagrantfile

хосты

testserver ansible_host=127.0.0.1 ansible_port=2222

ansible.cfg

[defaults]
inventory = hosts
remote_user = vagrant
private_key_file = .vagrant/machines/default/virtualbox/private_key
host_key_checking = False

Vagrantfile

   config.vm.box = "ubuntu/bionic64"

Когда я пытаюсь пинг

ansible testserver -m ping

Я получил

testserver | FAILED! => {
    "changed": false, 
    "module_stderr": "Shared connection to 127.0.0.1 closed.\r\n", 
    "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 
    "msg": "MODULE FAILURE", 
    "rc": 127
}

я могу ssh без проблем

ssh vagrant@127.0.0.1 -p 2222 -i /home/miki/playbooks/.vagrant/machines/default/virtualbox/private_key
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)


  System information as of Tue May 21 06:39:46 UTC 2019

  System load:  0.0               Processes:             108
  Usage of /:   18.5% of 9.63GB   Users logged in:       0
  Memory usage: 17%               IP address for enp0s3: 10.0.2.15
  Swap usage:   0%





Last login: Tue May 21 06:32:13 2019 from 10.0.2.2

Почему не работает ansible ping?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Это просто потому, что вы смешиваете в своем терминале ANSI-модуль ping и классическую команду ping ICMP, которые не эквивалентны. Из приведенной выше ссылки

Это НЕ ICMP-пинг, это просто тривиальный тестовый модуль, для которого требуется Python на удаленном узле.

Из-за вышеуказанной путаницы вы неправильно интерпретируете четкие сообщения об ошибках, которые вы получаете при запуске playbook:

First

Общий доступ к 127.0.0.1 закрыт

... что означает, что соединение было впервые открыто и что ваш хост доступен

Второй

/ bin / sh: 1: / usr / bin / python: не найден

... это означает, что python (необходим для ansible) не установлен или не находится в пути по умолчанию.

1 голос
/ 21 мая 2019

Из сообщения об ошибке

"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 

похоже, что на удаленном хосте не установлен python.

Цитирование из requiremet docs

На управляемых узлах вам нужен способ связи, обычно это ssh. По умолчанию это использует sftp. Если это не доступно, вы можете переключиться на scp в ansible.cfg. Вам также нужен Python 2 (версия 2.6 или новее) или Python 3 (версия 3.5 или новее).

Ansible нужен Python для присутствия на удаленном хосте.

Также, что касается использования модуля ping, это не то же самое, что ping команда оболочки.

Попробуйте установить python на удаленном хосте (вручную или с помощью модуля raw), а затем снова запустите скрипт.

...