英文:
Ansible Variable precedence - what are 'role params' & 'include params'
问题
Ansible文档中有一份变量优先级的列表。
其中一些对我来说很清楚,但我想知道是否有人可以对这两个进行一些解释。
> 20. role(和include_role)参数
> 21. include参数
用法、位置、语法。
我正在尝试将变量声明提到更复杂的剧本中,我目前正在使用两个角色。
具体来说...在一个角色的任务文件中,一些值最好被声明为一个位置的变量。
英文:
The Ansible documentation has a list of Variable precedence
Some of them are clear to me but I wonder whether anybody coulde kinkdy shed some light on those 2.
> 20. role (and include_role) params
> 21. include params
usage, location, syntax.
I am trying to get Variable declaration a little further to the surface inside a little more complex playbook utilizing 2 roles I am currently working on.
concrete ... some values inside task files of a role should rather be declared as variables in a single location.
答案1
得分: 4
在简要示例中:
角色参数
(完整剧本)
- name: 我是一个虚拟剧本
hosts: localhost
roles:
- role: somerole
vars:
param1: "我是一个角色参数"
包含角色参数
(仅任务)
- name: 包含角色 somerole
ansible.builtin.include_role:
name: somerole
vars:
param1: "我是一个包含角色参数"
包含参数
(仅任务)
- name: 包含任务文件
ansible.builtin.include_tasks: sometasks.yaml
vars:
param1: "我是一个包含参数"
作为虚构且(很可能是不良实践)的示例:如果您在包含一个传递参数的角色后,稍后在该角色中包含一个任务文件并传递相同参数但具有不同值,那么包含参数将优先于角色参数。
英文:
In a nutshell examples:
role params
(full playbook)
- name: I'm a dummy play
hosts: localhost
roles:
- role: somerole
vars:
param1: "I'm a role param"
Include role params
(task only)
- name: Including role somerole
ansible.builtin.include_role:
name: somerole
vars:
param1: "I'm an include role param"
Include params
(task only)
- name: Including a task file
ansible.builtin.include_tasks: sometasks.yaml
vars:
param1: "I'm an include param"
As a fictive and (most probably bad practice) example: if you include a role passing a parameter and later include a task file in that role passing that same parameter with a different value, the include param will take precedence over the role param.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论