Ansible:ansible-playbook delegate_to 错误

Ansible: ansible-playbook delegate_to error

我有一本剧本,这是其中的一部分。

...

- name: Wait for SSH to start
  wait_for:
    host: "{{ newmachines.instances[0].public_ip }}"
    port: 22
    timeout: 300
  delegate_to: localhost

... ansible-playbook --check create_instance.yml.old 错误:delegate_to 不是 Ansible Play

的合法参数

ansible-剧本--版本 ansible-剧本 1.9.4 配置的模块搜索路径= None

我该如何解决?

任务的参数格式应该是key=value,而不是key:value。这让 Ansible 很困惑。你要的是这个:

- name: Wait for SSH to start
  wait_for:
    host="{{ newmachines.instances[0].public_ip }}"
    port=22
    timeout=300
  delegate_to: localhost

任务的修饰符,如delegate_towith_items等应使用:

@serko 该剧本对我有用 ansible-playbook 1.9.4

---
# main.yml
- hosts: all
  gather_facts: false
  tasks:
    - name: Wait for SSH to start
      wait_for:
        host: "localhost"
        port: 22
        timeout: 300
      delegate_to: localhost

.

$ ansible-playbook --check main.yml

PLAY [all] ********************************************************************

TASK: [Wait for SSH to start] *************************************************
skipping: [127.0.0.1 -> localhost]
ok: [127.0.0.1 -> localhost]

PLAY RECAP ********************************************************************
127.0.0.1                  : ok=0    changed=0    unreachable=0    failed=0

也许您应该检查缩进 (tabs/spaces)? Ansible 似乎认为 delegate_to 处于播放级别,而从您发布的代码的外观来看它处于任务级别。

这行不通:

---
- hosts: myhost
  gather_facts: false
  tasks:
  - name: Wait for SSH to start
    wait_for:
      host: myhost
      port: 22
      timeout: 300
  delegate_to: localhost

它因您提到的错误而失败:

$ ansible-playbook -i hosts pb.yaml
ERROR! 'delegate_to' is not a valid attribute for a Play

虽然这样做(注意缩进差异):

---
- hosts: myhost
  gather_facts: false
  tasks:
  - name: Wait for SSH to start
    wait_for:
      host: myhost
      port: 22
      timeout: 300
    delegate_to: localhost

输出:

$ ansible-playbook -i hosts pb.yaml

PLAY [myhost] ****************************************************************

TASK [Wait for SSH to start] ***************************************************
ok: [myhost-> localhost]

PLAY RECAP *********************************************************************
myhost: ok=1    changed=0    unreachable=0    failed=0