ansible-playbook ожидает ssh тайм-аут с ошибкой ping, но работает локально - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь подключиться к экземпляру ec2 через мой файл ansible-playbook. Я могу ssh в экземпляр локально, и в настоящее время в моем файле ansible-playbook есть следующая конфигурация:

- name: Wait for SSH to come up
  delegate_to: "{{ public_dns }}"
  wait_for_connection:
    delay: 60
    timeout: 120
  with_items: "{{ public_ip }}"
  remote_user: ubuntu
  connection: ssh
  register: item

Однако, когда я запускаю это, я получаю следующую ошибку:

не удалось: [localhost -> {{public_dns}}] (item = {'_ ansible_item_result': True, «_ansible_no_log»: False, «_ansible_delegated_vars»: {'ansible_delegated_host': u '{{public_dns}}', 'ansible_host': u '{{ public_dns}} '},' change ': False,' elapsed ': 184,' failed ': True, 'item': u '{{public_ip}}', 'msg': u "истекло время ожидания для модуля ping успешное тестирование: «ping», «_ansible_ignore_errors»: нет}) => {«изменено»: false, "истек": 184, "item": "{{public_ip}}", "msg": "истекло время ожидания ожидание успешного тестирования модуля ping: 'ping' "}

Когда я пингую значение public_dns или public_ip со своего компьютера, оба успешны.

Почему событие ping завершится неудачно при запуске файла Ansible? (Я не целенаправленно пытаюсь пропинговать экземпляр, я на самом деле хочу подключиться к нему через ssh. Однако ошибка показывает, что Ansible может пытаться пропинговать экземпляр перед подключением, основываясь на «тайм-аут ожидания ожидания теста модуля ping» «)

С тех пор я изменил метод на:

- name: Add new instance to host group
  add_host:
  hostname: ""{{ public_ip }}"
  groupname: launched

- name: Wait for SSH to come up
  wait_for:
    host: launched
    port: 22
    sleep: 30
    delay: 10
    timeout: 360
  state: started

Однако это выдает другую ошибку: «Тайм-аут при ожидании запуска: 22». В трассировку входит следующее:

connect_socket = socket.create_connection ((host, port), connect_timeout) Файл "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", строка 557, в create_connection для res в getaddrinfo (хост, порт, 0, SOCK_STREAM) :.

Есть идеи?

1 Ответ

0 голосов
/ 20 ноября 2018

Обратите внимание, что модуль Ansible ping отличается от ICMP Ping : https://docs.ansible.com/ansible/2.5/modules/ping_module.html. Ansible попытается подключиться к целевому хосту через ssh при использовании модуль ping

Если указанная выше задача находится внутри playbook, который запускается с недавно подготовленным экземпляром ec2, я бы установил gather_facts: false и запустил wait_for_connection в качестве моей первой задачи. Если это не помогло, попробуйте увеличить параметр timeout

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...