【问题标题】:Ansible get index listAnsible 获取索引列表
【发布时间】: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"}

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

【问题讨论】:

    标签: ansible yaml jinja2


    【解决方案1】:

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

    ssh_smx_ports:
      - pds: 8103
      - activemq: 8102
    

    你用ssh_smx_ports[type_smx] 引用它,就像它是一本字典:

    ssh_smx_ports:
      pds: 8103
      activemq: 8102
    

    【讨论】:

    • 嗬不!我想我已经尝试过了,但出现了错误:(现在它可以工作了,事实上我测试了很多案例,也许我错过了一些东西!感谢您的反应
    猜你喜欢
    • 2023-02-26
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2022-06-29
    • 2013-03-05
    • 2018-05-14
    • 2019-06-20
    • 1970-01-01
    相关资源
    最近更新 更多