Ansible-'when'不是播放的有效属性

问题描述 投票:0回答:1

我正在尝试解决根本原因,以“消除”警告消息[WARNING]: Could not match supplied host pattern, ignoring: ps_nodes。对我来说,根本原因是当我们创建Linux机器时,ps_nodes主机将为空。因此,我试图添加block: + when: (os_type|capitalize) == "Windows",以确保仅在os_type是Windows创建时才执行播放。

我该如何实现?因为,我要尝试的是使用when判断,但看起来不可能,而且我不确定要搜索什么。

代码示例:

    - name: "Start handling of vm specific delete scripts for Windows machines"
      block:
        hosts: ps_nodes
        any_errors_fatal: false
        gather_facts: false
        vars:
          private_ip_1: "{{ hostvars['localhost']['_private_ip_1']|default('') }}"
          scripts: "{{ hostvars['localhost']['scripts'] }}"
          sh_script_dir: "{{ hostvars['localhost']['sh_script_dir'] }}"
          cred_base_hst: "{{ hostvars['localhost']['cred_base_hst'] }}"
          cred_base_gst: "{{ hostvars['localhost']['cred_base_gst'] }}"
          newline: "\n"

        tasks:
        - import_tasks: roles/script/tasks/callWindowsScripts.yml
          when: action == 'delete'
      when: (os_type|capitalize) == "Windows"

使用“ when”播放时出错:

ERROR! 'when' is not a valid attribute for a Play

The error appears to be in '/opt/projectX/playbooks/create_vm.yml': line 265, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

##############################################################################
- name: \"Start handling of vm specific delete scripts for Windows machines\"
  ^ here
ansible ansible-2.x
1个回答
0
投票

我认为问题是缩进。使用“和”:

  - name: "Start handling of vm specific delete scripts for Windows machines"
      block:
        hosts: ps_nodes
        any_errors_fatal: false
        gather_facts: false
        vars:
          private_ip_1: "{{ hostvars['localhost']['_private_ip_1']|default('') }}"
          scripts: "{{ hostvars['localhost']['scripts'] }}"
          sh_script_dir: "{{ hostvars['localhost']['sh_script_dir'] }}"
          cred_base_hst: "{{ hostvars['localhost']['cred_base_hst'] }}"
          cred_base_gst: "{{ hostvars['localhost']['cred_base_gst'] }}"
          newline: "\n"

        tasks:
        - import_tasks: roles/script/tasks/callWindowsScripts.yml
          when: action == 'delete' and (os_type|capitalize) == "Windows"

知道了,

如果您使用已存在的主机(如localhost),请检查ps_nodes中的主机数量并将其委托给它们?

类似这样的东西:

hosts: localhost
vars:
tasks:
 - import_tasks: roles/script/tasks/callWindowsScripts.yml
   delegate_to: ps_nodes
   when: {{ ps_nodes | length > 0}}
© www.soinside.com 2019 - 2024. All rights reserved.