如何解决Ansible任务变量覆盖set_fact变量
在我的一本有趣的剧本中,我通过执行以下操作为所有剧本设置了一个变量:
set_fact:
domain_path: "{{ X.X.domain_path }}"
在剧本编写过程中,我的一项任务是使用一个角色,该角色需要一个domain_path变量,该变量与我一开始定义的变量不同
include_role:
name: role_X
vars:
domain_path: "/a/different/path"
当我尝试使用domain_path时,在该角色之后的另一个集团中,它不会给我set_fact值,但不会给我任务值。
如有需要,我可以提供更多详细信息
解决方法
Q:“任务变量覆盖set_fact变量”
A:在接下来的播放中,import React from 'react';
import BrowserRouter as Router from 'react-router-dom';
...
<Router basename="/calendar"/>
<Link to="/today"/>
(优先级17)不能覆盖task vars
(优先级19)。参见Variable precedence: Where should I put a variable?。查看角色。 set_facts
(优先级20)很可能会覆盖变量。
我无法重现该问题。我只用一个任务就创建了一个新角色
role (and include_role) params
剧本
shell> cat roles/role_X/tasks/main.yml
- debug:
var: domain_path
给予预期
shell> cat pb.yml
- hosts: localhost
tasks:
- set_fact:
domain_path: "X.X.domain_path"
- debug:
var: domain_path
- include_role:
name: role_X
vars:
domain_path: "/a/different/path"
- debug:
var: domain_path
,
对于不同的用例使用相同的变量名不是一个好习惯。您应该更改一个(或两个)变量的名称,以免它们冲突。
如果有需要,您始终可以使用一个值来设置另一个值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。