У меня есть Ansible playbook для создания Linode серверов. У меня проблема в том, что мой playbook не может определить, когда работает новый сервер. Я использую Ansible 2.8.4. Моя книга воспроизведения выглядит следующим образом:
---
hosts: 127.0.0.1
gather_facts: False
- name: create server
linode_v4:
label: "{{ host_name }}_{{ 100 | random }}"
access_token: "{{ linode_api4_key }}"
type: "{{ plan_1GB }}"
region: "{{ region_us_central }}"
image: "{{ image_debian_10 }}"
root_pass: "{{ linode_root_password }}"
authorized_keys: "{{ my_ssh_public_key }}"
tags: "inventory.ini"
state: present
register: linode
- name: save new server's ip address to a fact
set_fact: ip_addr={{ linode.instance.ipv4 }}
tags: always
- debug:
var: ip_addr
- name: wait until new server is up and listening on port 22
wait_for:
host: "{{ ip_addr }}"
port: 22
delay: 2
timeout: 600
state: started
msg: "Server port is not listening"
tags: always
Я тоже пробовал это так:
- name: wait until new server is up
local_action:
module: wait_for
state: started
host: "{{ ip_addr }}"
port: 22
delay: 1
timeout: 100
Я пытался сделать это с помощью wait_for, а также с помощью local_action, но ни один из них не работает. Плейбук никогда не возвращается из задачи ожидания. Я слежу за своей приборной панелью Linode во время работы playbook и вижу, что этот IP-адрес, который я передаю задаче через «ip_addr», является правильным, и приборная панель также показывает мне, когда сервер работает. Что я делаю не так?