gpt4 book ai didi

http - 使用 HTTP 获取 YAML 文件并将其用作 Ansible 剧本中的变量

转载 作者:行者123 更新时间:2023-12-02 16:08:20 25 4
gpt4 key购买 nike

背景

我在网络服务器上有一个这样的 YAML 文件。我正在尝试阅读它并使用 Ansible 剧本在文件中创建用户帐户。

users:
- number: 20210001
name: Aoki Alice
id: alice
- number: 20210002
name: Bob Bryant
id: bob
- number: 20210003
name: Charlie Cox
id: charlie

我尝试了什么

为了确认如何使用 include_vars 动态读取下载的 YAML 文件,我写了一个这样的剧本:

- name: Add users from list
hosts: workstation
tasks:
- name: Download yaml
get_url:
url: http://fqdn.of.webserver/path/to/yaml.yml
dest: "/tmp/tmp.yml"
notify:
- Read yaml
- List usernames

handlers:
- name: Read yaml
include_vars:
file: /tmp/tmp.yml
name: userlist

- name: List usernames
debug:
var: "{{ item }}"
loop: "{{ userlist.users }}"

问题

在处理程序 Read yaml 中,我收到以下错误消息。在目标机器 (workstation.example.com) 上,/tmp/tmp.yml 已正确下载。

RUNNING HANDLER [Read yaml] *****
fatal: [workstation.example.com]: FAILED! => {"ansible facts": {"userlist": []},
"ansible included var files": [], "changed": false, "message": "Could not find o
r access '/tmp/tmp. yml' on the Ansible Controller.\nIf you are using a module a
nd expect the file to exist on the remote, see the remote src option"}

问题

如何使用 HTTP 获取 YAML 文件并将其用作 include_vars 的变量?

最佳答案

另一种选择是使用 uri 模块将值检索到 Ansible 变量中,然后使用 from_yaml 过滤器对其进行解析。

类似于:

- name: Add users from list
hosts: workstation
tasks:
- name: Download YAML userlist
uri:
url: http://fqdn.of.webserver/path/to/yaml.yml
return_content: yes
register: downloaded_yaml
- name: Decode YAML userlist
set_fact:
userlist: "{{ downloaded_yaml.content | from_yaml }}"

请注意,uri 作用于 Ansible Controller,而 get_url 作用于目标主机(或 delegate_to 中指定的主机);根据您的网络配置,您可能需要使用不同的代理设置或防火墙规则来允许下载。

关于http - 使用 HTTP 获取 YAML 文件并将其用作 Ansible 剧本中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68729876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com