You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何加载本地INI格式变量文件并在任务/角色中调用变量

Ansible加载无Section INI/键值对配置文件为全局变量方案

方案1:无需修改原sourcefile.txt(推荐)

适合不想改动原有配置文件格式的场景,解析后的变量可直接在后续所有任务、角色中调用。

实现步骤

  1. 读取配置文件内容(文件存放在目标节点用slurp,存放在控制节点直接用lookup即可)
# 配置文件在目标节点时用这个任务
- name: 读取目标节点上的sourcefile.txt
  ansible.builtin.slurp:
    src: /path/to/sourcefile.txt # 替换为文件实际绝对路径
  register: sourcefile_raw
  1. 解析键值对为可直接引用的变量
- name: 解析配置为全局变量
  ansible.builtin.set_fact:
    "{{ item.split('=', 1)[0] }}": "{{ item.split('=', 1)[1] }}"
  # 配置文件在控制节点时,把下面sourcefile_raw.content | b64decode替换为 lookup('file', '/控制节点文件路径/sourcefile.txt')
  loop: "{{ sourcefile_raw.content | b64decode | split('\n') | select('search', '^[^#=]+=') | list }}"

上述过滤器会自动过滤空行、#开头的注释行,仅保留有效key=value配置,且只拆分第一个等号,避免value内含等号时解析错误。
3. 验证效果

- name: 打印docker pull命令验证变量可用性
  ansible.builtin.debug:
    msg: "docker pull {{ REGISTRY_URL }}/{{ APP2_IMAGE }}"

执行后会输出拼接后的命令,变量可直接在任意场景使用。

方案2:添加Section用原生INI加载(更稳定)

如果可以修改原sourcefile.txt格式,在文件最顶部添加一个自定义Section头(比如[docker_config]),修改后文件内容如下:

[docker_config]
APP1_IMAGE=register:5000/app1:2.1-b4
APP2_IMAGE=register:4000/app2:3.8-b10
REGISTRY_URL=register.local
USER=%user%
之后直接用include_vars模块一次性加载所有变量:

- name: 加载INI格式配置
  ansible.builtin.include_vars:
    file: /path/to/sourcefile.txt
    # 可选参数name: docker_config,加了之后需要通过docker_config.APP2_IMAGE调用,不加则直接用变量名

常用场景示例

1. 直接调用变量拉取镜像

- name: 拉取APP2镜像
  community.docker.docker_image:
    name: "{{ REGISTRY_URL }}/{{ APP2_IMAGE }}"
    source: pull

2. 循环拉取所有APP前缀的镜像

- name: 批量拉取所有业务镜像
  community.docker.docker_image:
    name: "{{ REGISTRY_URL }}/{{ item.value }}"
    source: pull
  loop: "{{ vars | dict2items | selectattr('key', 'match', '^APP.*_IMAGE$') | list }}"

3. 条件判断执行任务

- name: 仅当USER为admin时输出配置
  ansible.builtin.debug:
    msg: "当前镜像仓库地址为 {{ REGISTRY_URL }}"
  when: USER == 'admin'

内容的提问来源于stack exchange,提问作者tapestreamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:57:04