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

如何让变量在多个Ansible Playbook之间共享?

问题分析与解决

你遇到的问题核心是Ansible默认未启用事实缓存——即便第一个Playbook里用cacheable: yes标记了要缓存事实,没有配置缓存机制的话,这些事实不会被持久化存储,第二个Playbook自然读不到对应的变量。

解决步骤

1. 配置Ansible事实缓存

编辑ansible.cfg文件(全局路径通常是/etc/ansible/ansible.cfg,也可以在当前Playbook目录下创建本地的./ansible.cfg),添加或修改以下配置项:

[defaults]
# 选择文件型缓存(适合单主机场景)
fact_caching = jsonfile
# 指定缓存文件存储目录,确保当前用户有读写权限
fact_caching_connection = ~/.ansible/facts_cache
# 设置缓存永不过期(按需调整,单位为秒)
fact_caching_timeout = 0

2. 创建缓存目录

执行命令生成配置中指定的缓存目录:

mkdir -p ~/.ansible/facts_cache

3. 重新执行Playbook

先运行第一个获取城市名称的Playbook:

ansible-playbook get_city.yml

再运行第二个打印变量的Playbook:

ansible-playbook print_fact.yml

额外可选方案

如果不想修改配置文件,也可以通过环境变量临时启用缓存来执行第一个Playbook:

ANSIBLE_FACT_CACHING=jsonfile ANSIBLE_FACT_CACHING_CONNECTION=~/.ansible/facts_cache ansible-playbook get_city.yml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:30:43