【问题标题】:In Ansible, how can I print the values from my yaml file?在 Ansible 中,如何打印 yaml 文件中的值?
【发布时间】:2015-10-19 04:52:07
【问题描述】:

我尝试执行以下操作,但我知道它不起作用,因为它显示了文件中的最后一个值。有没有办法从我的 YAML 文件中的 item.key 构建一个列表?

- name: Install PHP modules
  command: sudo rpm -Uvh {{ rpm_repository }}/aria-{{ item.key }}-{{ item.value.svn_tag }}.rpm --force
  with_dict: deploy_modules_php
  register: php_command_result

- name: set color success
  when: php_command_result|success
  with_dict: deploy_modules_php
  set_fact:
      color="green"
      msg="Successfully installed PHP RPMs! {{ item.key }}"

在 Hipchat 中寻找类似的东西(一旦我可以使用它,我将处理 w/ 格式)。

Successfully installed PHP RPMs! module1 module2 module3

我明白了……

"Successfully installed PHP RPMs! module3

【问题讨论】:

    标签: ansible


    【解决方案1】:

    注册变量php_command_result 应该包含一组所有项目,其中每个项目都应该有嵌套属性,例如changed,并且如果任务失败了failed 属性。

    这很难做到盲目,所以这可能不会立即奏效:

    Successfully installed PHP RPMs! {{ php_command_result.results | rejectattr("failed") | map(attribute='item') | join(', ') }}
    

    如果不起作用,请发布php_command_result的完整输出。

    【讨论】:

    • php_command_result 非常大,这是我只有一个 sn-p 的 pastebin。 pastebin.com/EZCw21V6另外,我尝试了你的建议,但它告诉我fatal: [127.0.0.1] => Failed to template color="green" msg="Successfully installed PHP RPMs! {{ php_command_result.results | rejectattr("failed") | map(attribute='item') | join(', ') }}": template error while templating string: no filter named 'map'
    • 这很奇怪。 map 应该是默认的 Jinja 2 过滤器。 jinja.pocoo.org/docs/dev/templates/#map
    • 看来我需要运行 v2.8。
    • 不错!所以我将 Jinja 升级到 v2.8 并且它可以工作,除了我必须删除 rejectattr("failed") 因为它告诉我 One or more undefined variables: 'dict object' has no attribute 'failed'
    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2021-07-27
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多