Ansible得到索引列表

时间:2018-02-23 07:48:37

标签: ansible yaml jinja2

我使用ansible创建一个playbook来根据提示参数安装我的项目。

我可以用这个脚本安装2个应用程序,我在开头提示一个,然后我需要获得好的ssh端口,因为应用程序有不同的端口。

glDrawArrays

启动脚本时:

ssh_smx_ports:
  - pds: 8103
  - activemq: 8102

我需要创建将此端口传递给另一个命令后:

vars_prompt:
- name: "type_smx"
  prompt: "cible? (pds,activemq)"
  private: no

但是有了这个我得到了这个错误:

  

致命:[n2.qlf.canaltrain.sncf.fr]:失败了! => {“failed”:true,“msg”:“字段'args'的值无效,似乎包含一个未定义的变量。错误是:'list object'没有属性u'pds'\ n \ n错误似乎出现在'/home/ansible/env/install_version.yml'中:第60行第6列,但可能在文件的其他位置,具体取决于确切的语法问题。\ n \ n违规行似乎是:\ n \ n - \“{{type_smx}} \”\ n - 名称:在servicemix上添加网址{{type_smx}} \ n ^ here \ n我们可能是错的,但这个看起来可能是一个问题\ n当引用一个值时,总是引用模板表达式括号。例如:\ n \ n with_items:\ n - {{foo}} \ n \ n应该写成:\ n \ n with_items:\ n - \“{{foo}} \”\ n“}

如何访问正确的端口元素?

1 个答案:

答案 0 :(得分:2)

您定义了一个包含两个元素的列表:

ssh_smx_ports:
  - pds: 8103
  - activemq: 8102

您使用ssh_smx_ports[type_smx]来引用它,就像它是字典一样:

ssh_smx_ports:
  pds: 8103
  activemq: 8102