Ansible脚本模块不解释变量

Ansible脚本模块不解释变量,ansible,ansible-2.x,Ansible,Ansible 2.x,Ansible脚本模块在解释with_items变量时遇到问题 vsa\u deploy\u config/tasks/main.yml: - name: Create VSA scripts for center template: src: vsa_deploy.ps1.j2 dest: "/opt/ansible/roles/vsa_deploy_config/files/{{ item.vsa_hostname }}.ps1" when: target == "loc

Ansible脚本模块在解释with_items变量时遇到问题

vsa\u deploy\u config/tasks/main.yml:

- name: Create VSA scripts for center
  template:
   src: vsa_deploy.ps1.j2
   dest: "/opt/ansible/roles/vsa_deploy_config/files/{{ item.vsa_hostname }}.ps1"
  when: target == "local"
  with_items:
  - "{{ vsa_center }}"

- name: Deploy VSAs on Center
  script: "files/{{ item.vsa_hostname }}.ps1"
  register: out
  when: target == "win_center"
- debug: var=out
  with_items:
  - "{{ vsa_center }}"
---
vsa_center:
    - vcsa_hostname: 10.10.10.74
      vcsa_username: administrator@vsphere.local
      vcsa_password: password
      vcsa_datacenter: DataCenter1
      vsa_rdm_lun: 02000000006006bf1d58d25a1020d292f8fcfb22b3554353432d4d
      vsa_hostname: sm01-ct01
      vsa_mgmt_ip: 10.10.10.75
      vsa_mgmt_netmask: 255.255.255.192
      vsa_mgmt_gw: 10.10.10.65
      vsa_mgmt_ns: 10.10.10.92
      vsa_mgmt_pg: SC-MGMT
      vsa_mgmt_moref: Network:network-13
      vsa_iscsi_ip: 192.168.2.1
      vsa_iscsi_netmask: 255.255.255.0
      vsa_iscsi_pg: ISCSI
      vsa_iscsi_moref: Network:network-22
      vsa_mirror_ip: 192.168.5.1
      vsa_mirror_netmask: 255.255.255.0
      vsa_mirror_pg: Mirror
      vsa_mirror_moref: Network:network-23
      esxi_hostname: 10.10.10.72
      esxi_datastore: DS-01
    - vcsa_hostname: 10.10.10.74
      vcsa_username: administrator@vsphere.local
      vcsa_password: password
      vcsa_datacenter: DataCenter1
      vsa_rdm_lun: 02000000006006bf1d58d25dd0210bb356a78344e5554353432d4d 
      vsa_hostname: sm02-ct01
      vsa_mgmt_ip: 10.10.10.76
      vsa_mgmt_netmask: 255.255.255.192
      vsa_mgmt_gw: 10.10.10.65
      vsa_mgmt_ns: 10.10.10.92
      vsa_mgmt_pg: SC-MGMT
      vsa_mgmt_moref: Network:network-13
      vsa_iscsi_ip: 192.168.2.2
      vsa_iscsi_netmask: 255.255.255.0
      vsa_iscsi_pg: ISCSI
      vsa_iscsi_moref: Network:network-22
      vsa_mirror_ip: 192.168.5.2
      vsa_mirror_netmask: 255.255.255.0
      vsa_mirror_pg: Mirror
      vsa_mirror_moref: Network:network-23
      esxi_hostname: 10.2.120.73
      esxi_datastore: DS-02
vsa\u deploy\u config/vars/main.yml:

- name: Create VSA scripts for center
  template:
   src: vsa_deploy.ps1.j2
   dest: "/opt/ansible/roles/vsa_deploy_config/files/{{ item.vsa_hostname }}.ps1"
  when: target == "local"
  with_items:
  - "{{ vsa_center }}"

- name: Deploy VSAs on Center
  script: "files/{{ item.vsa_hostname }}.ps1"
  register: out
  when: target == "win_center"
- debug: var=out
  with_items:
  - "{{ vsa_center }}"
---
vsa_center:
    - vcsa_hostname: 10.10.10.74
      vcsa_username: administrator@vsphere.local
      vcsa_password: password
      vcsa_datacenter: DataCenter1
      vsa_rdm_lun: 02000000006006bf1d58d25a1020d292f8fcfb22b3554353432d4d
      vsa_hostname: sm01-ct01
      vsa_mgmt_ip: 10.10.10.75
      vsa_mgmt_netmask: 255.255.255.192
      vsa_mgmt_gw: 10.10.10.65
      vsa_mgmt_ns: 10.10.10.92
      vsa_mgmt_pg: SC-MGMT
      vsa_mgmt_moref: Network:network-13
      vsa_iscsi_ip: 192.168.2.1
      vsa_iscsi_netmask: 255.255.255.0
      vsa_iscsi_pg: ISCSI
      vsa_iscsi_moref: Network:network-22
      vsa_mirror_ip: 192.168.5.1
      vsa_mirror_netmask: 255.255.255.0
      vsa_mirror_pg: Mirror
      vsa_mirror_moref: Network:network-23
      esxi_hostname: 10.10.10.72
      esxi_datastore: DS-01
    - vcsa_hostname: 10.10.10.74
      vcsa_username: administrator@vsphere.local
      vcsa_password: password
      vcsa_datacenter: DataCenter1
      vsa_rdm_lun: 02000000006006bf1d58d25dd0210bb356a78344e5554353432d4d 
      vsa_hostname: sm02-ct01
      vsa_mgmt_ip: 10.10.10.76
      vsa_mgmt_netmask: 255.255.255.192
      vsa_mgmt_gw: 10.10.10.65
      vsa_mgmt_ns: 10.10.10.92
      vsa_mgmt_pg: SC-MGMT
      vsa_mgmt_moref: Network:network-13
      vsa_iscsi_ip: 192.168.2.2
      vsa_iscsi_netmask: 255.255.255.0
      vsa_iscsi_pg: ISCSI
      vsa_iscsi_moref: Network:network-22
      vsa_mirror_ip: 192.168.5.2
      vsa_mirror_netmask: 255.255.255.0
      vsa_mirror_pg: Mirror
      vsa_mirror_moref: Network:network-23
      esxi_hostname: 10.2.120.73
      esxi_datastore: DS-02
运行playbook时,出现以下错误:

任务[vsa\u部署\u配置:在中心部署vsa]******************************************************************************* 致命:[auto-win1.lab.com]:失败!=>{“failed”:true,“msg”:"字段“args”有一个无效值,该值似乎包含一个未定义的变量。错误是:“item”未定义\n\n错误似乎出现在“/opt/ansible/roles/vsa\u deploy\u config/tasks/main.yml”:第10行第3列,但可能\n出现在文件的其他位置,具体取决于语法问题。\n\n出现问题的行是:\n\n\n-name:在中心部署VSA\n^此处\n“} 要重试,请使用:--limit@/opt/ansible/powershell。重试


使用模板模块的第一个任务正确解释item.vsa\u hostname变量,但脚本模块没有。脚本模块是否不能与\u项一起使用?

对于脚本任务,没有与\u项一起使用的

- name: Deploy VSAs on Center                    # -\
  script: "files/{{ item.vsa_hostname }}.ps1"    #   \
  register: out                                  #   / This is task1
  when: target == "win_center"                   # -/
- debug: var=out                                 # -\
  with_items:                                    #   > This is task2
  - "{{ vsa_center }}"                           # -/
我想您应该将调试移到最底层:

- name: Deploy VSAs on Center
  script: "files/{{ item.vsa_hostname }}.ps1"
  register: out
  when: target == "win_center"
  with_items: "{{ vsa_center }}"

- debug: var=out

另外,无需将不必要的嵌套列表与_items

一起输入
,只需将行
-debug:var=out
移到文件末尾即可