Ansible 循环变量

Ansible 循环变量,ansible,yaml,Ansible,Yaml,我正试图用一本易懂的剧本来开始应用程序 变量inst获得了所有必需的软件id: WEB TS3 SQL .... 如何为所有软件id创建一个循环,并对所有软件id运行相同的命令 --- - name: "start sw" become: yes command: "swstart {{ inst }}" retries: 3 failed_when: ( instance_start.rc not in [ 0 ] ) 将与以下项目一

我正试图用一本易懂的剧本来开始应用程序

变量inst获得了所有必需的软件id:

WEB
TS3
SQL
....
如何为所有软件id创建一个循环,并对所有软件id运行相同的命令

---
- name: "start sw"
  become: yes
  command: "swstart {{ inst }}"
  retries: 3
  failed_when: ( instance_start.rc not in [ 0 ] )

与以下项目一起使用

---
-名称:“启动软件”
变成:是的
命令:“swstart{{item}}”
带_项:“{{inst}”
文件:


首先,您应该将列表定义为剧本中的一个变量。 之后你可以使用

带\u项目

就像这样:

---
-主持人:全部
远程用户:root
变量:
软件:
-网
-TS3
-SQL
vars_文件:
-/softwares.yml#如果需要从文件导入数据
任务:
-名称:使用调试模块显示您的软件
调试:
msg:“一项:{{item}}”
带_项:“{{softwares}}”

我希望这能帮助您解决问题。

或考虑使用<代码>循环< /代码>,这是链接文档实际建议的。代码>循环:“{{inst}}”
。不知怎的,它给了我一个语法错误。。。带循环或带_items@bigMre不知何故,你没有提供一个完整的问题,一个人实际上可以运行复制你的问题,并给出一个有意义的答案。嗨,谢谢-但是我在不同的服务器上有不同的软件id。我想你可以先从一个服务器上获得所有服务器的idfile@bigMre试想一下,上面示例中的
软件
var是在主机级别的清单中定义的,而不是在剧本中定义的。结果将完全符合您的预期,任务不需要更改。