Ansible获取索引列表

Ansible获取索引列表,ansible,yaml,jinja2,Ansible,Yaml,Jinja2,我正在使用ansible创建一个剧本,以根据提示参数安装我的项目 我可以用这个脚本安装2个应用程序,我在开始时会提示其中一个,然后我需要获得良好的ssh端口,因为应用程序有不同的端口 ssh_smx_ports: - pds: 8103 - activemq: 8102 启动脚本时: vars_prompt: - name: "type_smx" prompt: "cible? (pds,activemq)" private: no 需要创建后,请将此端口传递给另一个命令:

我正在使用ansible创建一个剧本,以根据提示参数安装我的项目

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

ssh_smx_ports:
  - pds: 8103
  - activemq: 8102
启动脚本时:

vars_prompt:
- name: "type_smx"
  prompt: "cible? (pds,activemq)"
  private: no
需要创建后,请将此端口传递给另一个命令:

 name: install bundle on {{ type_smx }}
 tags: ssh
 command: sudo /servicemix/servicemix/bin/client -h {{ inventory_hostname }} -a {{ ssh_smx_ports[type_smx]  }} -u smx -p {{ ssh_smx_pass }} 'install mybundle'
但有了这个,我犯了一个错误:

致命:[n2.qlf.canaltrain.sncf.fr]:失败!=>{“failed”:true,“msg”:"字段“args”有一个无效值,该值似乎包含一个未定义的变量。错误是:“列表对象”没有属性u'pds”\n\n错误似乎出现在“/home/ansible/env/install_version.yml”:第60行第6列,但可能\n出现在文件中的其他位置,具体取决于语法问题。\n\n出现问题的行似乎不正确be:\n\n-“{type\U smx}}\”\n-name:在servicemix{{type\U smx}}\n^上添加url,此处\n我们可能是错误的,但这可能是缺少引号的问题。当模板表达式括号\n启动值时,始终引用它们。例如:\n\n带\u项:\n-{foo}\n\n应写为:\n\n和\u项:\n-\“{{foo}}\”\n}


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

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

ssh_smx_ports:
  - pds: 8103
  - activemq: 8102
您可以使用ssh\u smx\u ports[type\u smx]来引用它,就像它是一本字典一样:

ssh_smx_ports:
  pds: 8103
  activemq: 8102

呵呵,不!我想我已经试过了,但有一个错误:(现在它工作了,事实上我测试了很多案例,也许我错过了一些东西!谢谢你们的反应