Я пытаюсь подключиться к экземпляру 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) :.
Есть идеи?