【问题标题】:Get value from ansible file从 ansible 文件中获取价值
【发布时间】:2021-03-13 05:39:56
【问题描述】:

我需要从(ansible)文件中获取值。我的台词显示:

name01.server.com    key1=val1    key2=val2   #comment
name02.server.com    key1=val1    key2="val 2" key3=val3

通常我只需要服务器名称 val1 和 val2,但如果我使用空格 split,我的第二行中的“val 2”将被分隔,我只会得到“val”。

可以使用 python、bash 或其他语言解决此问题。 有人可以帮我解决这个问题吗?

【问题讨论】:

  • 请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
  • 我们鼓励提问者展示他们迄今为止为自己解决问题所做的尝试。

标签: python bash split ansible


【解决方案1】:

问:我只需要服务器名称 val1 和 val2

A:用选定的数据创建一个字典。这应该可以解决问题,例如给定文件

shell> cat my_file
name01.server.com    key1=val1    key2=val2   #comment
name02.server.com    key1=val1    key2="val 2" key3=val3

剧本

shell> cat playbook.yml
- hosts: all
  gather_facts: false
  tasks:
    - set_fact:
        _dict: "{{ dict(ansible_play_hosts_all|zip(_keys1|zip(_keys2))) }}"
      vars:
        _keys1: "{{ ansible_play_hosts_all|map('extract', hostvars, 'key1')|list }}"
        _keys2: "{{ ansible_play_hosts_all|map('extract', hostvars, 'key2')|list }}"
      run_once: true

给予

shell> ansible-playbook playbook.yml -i my_file
  _dict:
    name01.server.com:
    - val1
    - val2
    name02.server.com:
    - val1
    - val 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多