3

使用 Ansible,我想将键值对存储在目标机器上的文件中。

它将由单独的 Ansible 角色创建/更改,可能使用添加/删除之类的操作。我已经可以为此目的使用ansible-xml模块(但是,如果以下可能使用不同的格式,我不介意)。

是否有任何“可靠”的方式来获取远程 XML(或其他格式)文件的内容并将值填充到事实(变量)中?

4

2 回答 2

5

不确定“目标计算机上的远程文件”是什么意思,但请查看Local fact

/etc/ansible/facts.d/您可以在目标机器上存储一个包含一些事实的静态文件。
您还可以编写一个可执行脚本并将其放在那里——它可以做任何您想做的事情,然后应该将事实作为 JSON 打印到标准输出。

于 2016-07-20T07:32:50.143 回答
3

如果本地事实机制不允许足够的灵活性,您可以使用内置模块 copy 和 slurp 手动执行此操作。

存储事实可以通过使用参数的copy模块来完成。content要加载它们,请使用该slurp模块。请注意,slurp 以 Base64 编码对文件内容进行编码,以防止 Jinja2 解析器解析内容。但由于这正是您想要的,您可以使用b64decode过滤器解码内容。

例子:

- name: Set facts
  set_fact:
    data:
      testing: test string
      does_it_work: yes it does!

- name: Store facts
  copy:
    dest: /tmp/any_path_you_want
    content: "{{ data }}"

- name: Read facts
  slurp:
    src: /tmp/any_path_you_want
  register: slurp_output

- name: Load facts
  set_fact:
    data2: "{{ slurp_output['content'] | b64decode }}"

- name: Display facts
  debug:
    var: data2
于 2019-02-18T13:41:24.497 回答