【发布时间】:2018-02-23 07:48:37
【问题描述】:
我正在使用 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'
但是我得到了这个错误:
致命:[]:失败! => {"failed": true, "msg": "字段 'args' 的值无效,似乎包含一个未定义的变量。错误是:'list object' has no attribute u'pds'\ n\n错误似乎出现在“/home/ansible/env/install_version.yml”中:第 60 行,第 6 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。\n\n出现问题的行是:\n\n - "{{ type_smx }}"\n - name: Add url on servicemix {{ type_smx }}\n ^ here\n我们可能错了,但这个看起来可能是个问题\n缺少引号。当模板表达式括号\n开始一个值时,总是引用它们。例如:\n\n with_items:\n - {{ foo }}\n\n应该写成:\n\n with_items:\n - "{{ foo }}"\n"}
如何访问正确的端口元素?
【问题讨论】: