ansible |如何在角色内部调用我的vars



下面是我的流程图——

my-code
plays
play1
play2
roles
role1
vars1
files1
tasks1
templates1
role2
vars2
files2
tasks2
templates2
role3
vars3
files3
tasks3
templates3

我想为我的所有变量创建一个单独的"vars/defaults"文件夹,供不同角色访问。当我创建一个文件夹"defaults/main.yml"时,我得到了以下错误。

错误:-

The task includes an option with an undefined variable

我的要求应该是这样的-

my-code
plays
play1
play2
roles
vars
main.yml
role1
files1
tasks1
templates1
role2
files2
tasks2
templates2
role3
files3
tasks3
templates3

任务/代码.yml

- name: CODE | Downloading Presto and Kinesis Jars from S3
shell: "aws s3 cp s3://services-{{ aws_accountid_test }}-cicd-storage/jars/ utilities/ --recursive"
ignore_errors: yes
args:
chdir: /home/hadoop/code/
executable: /bin/bash
become: yes
become_method: sudo
become_user: hadoop

如果我很了解您的需求,您可以在例如./vars.yml中定义变量

---
- hosts: all
remote_user: root
vars_files:
- ./vars.yml
roles:
- role1
- role2

注意可变优先级。

不需要显式包含vars文件的另一种方法是修改目录结构

my-code
play1
play2
group_vars
all.yml
roles
role1
files1
tasks1
templates1
role2
files2
tasks2
templates2
role3
files3
tasks3
templates3

然后,您希望所有主机都能使用的所有公共变量都会放在"All.yml"中,并自动包含在内。然后,您可以通过将"_group_name_.yml"添加到"group_vars"目录来进一步定位变量,以设置仅对这些特定组中的主机公开的变量。

有关目录/文件布局最佳实践的更多信息,请查看文档的这一部分。

最新更新