- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为一个 ansible 剧本编写角色。在角色中,我有一个 defaults
文件夹,其中包含一个 main.yml
来定义角色使用的变量的默认值。我可以在同一对象内交叉引用吗?
例如,我试过以下方法:
scripts_config:
host_entry:
dir: "/foo"
file: "{{dir}}/config"
foo: "{{host_entry.dir}}/foo"
bar: "{{scripts_config.host_entry.dir}}/bar"
它们都不起作用。我一次尝试了 file
、foo
和 bar
中的每一个:
file
给了任务包括一个带有 undefined variable 的选项。错误是:'dir' 未定义foo
给了 任务包括一个带有 undefined variable 的选项。错误是:“host_entry”未定义bar
给出了模板化时出现未处理的异常有可能吗?
我的用例是我想要一个对象,其中包含一个目录和几个文件,这些文件与默认设置中的目录相关。但是,如果您覆盖默认值,您可以为一个或多个文件指定完整路径,所以我不希望任务假定它是相对的。
最佳答案
当我想要这种东西时,我通常会做什么:
/parent_dir/
├── dirA/
├── dirB/
├── dirC/
└── dirD/
正在将以下内容添加到角色 defaults
父目录:/parent_dir/
然后这是 vars
other_dir_a: "{{ parent_dir }}/dirA"
other_dir_b: "{{ parent_dir }}/dirB"
other_dir_c: "{{ parent_dir }}/dirC"
other_dir_d: "{{ parent_dir }}/dirD"
这样你的“其他”目录/文件...将相对于 {{ parent_dir }}
。
这和你想做的类似吗?
根据下面的评论更新
所有这些变量都比角色变量更“重要”:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
您可以使用它们中的任何一个来替换。例如,使用额外的变量。
ansible-playbook -i inventory playbook.yml -e other_dir_a=/new/path/for/a -e other_dir_b=/new/path/for/b
如果你想将它们全部用作默认值,你也可以将所有变量都放在 defaults
下。它们的优先级最低,因此可以被任何其他变量替换。
关于Ansible 变量 : Can I reference a variable within itself?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51264783/
我是一名优秀的程序员,十分优秀!