下面是我的流程图-
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
tasks / code.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
答案 0 :(得分:1)
如果我很了解您的需求,则可以在例如./vars.yml
---
- hosts: all
remote_user: root
vars_files:
- ./vars.yml
roles:
- role1
- role2
答案 1 :(得分:1)
不需要您明确包含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'目录中来进一步设置目标变量,以设置仅向那些特定组中的主机公开的变量。
有关目录/文件布局最佳做法的更多信息,请查看this section of the docs.