如何从低优先级Ansible配置继承roles_path并扩展项目级角色路径?
解决Ansible项目级角色目录扩展问题
要在全局用户级Ansible配置基础上,为特定项目追加自定义角色目录,你之前的写法问题在于配置文件里不能用Jinja2模板语法{{ROLES_PATH}},正确的实现方式如下:
创建项目级配置文件
在项目根目录下新建ansible.cfg,Ansible会优先加载当前工作目录的配置文件,自动覆盖全局配置的对应项,同时保留未修改的全局配置内容。正确配置roles_path
在项目的ansible.cfg的[defaults]段中,用环境变量引用全局角色路径,格式如下:[defaults] roles_path = ./my_roles:$ANSIBLE_ROLES_PATH这里
./my_roles是你项目本地的角色目录,$ANSIBLE_ROLES_PATH会自动读取全局配置中定义的角色路径(或Ansible默认的角色路径),实现“项目本地目录+全局目录”的合并效果。验证配置生效状态
执行以下命令查看最终生效的roles_path:ansible-config dump | grep roles_path输出结果应同时包含你的项目本地目录和全局配置中的角色目录。
如果你的Ansible版本较旧(低于2.10),可能不支持直接在配置文件中引用环境变量,此时可以直接写全全局角色路径的绝对路径,示例如下:
[defaults] roles_path = ./my_roles:~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
内容的提问来源于stack exchange,提问作者Uko
相关产品推荐
相关产品推荐

