Ansible |如何在角色中调用我的var

时间:2018-12-18 13:03:23

标签: ansible ansible-2.x

下面是我的流程图-

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

2 个答案:

答案 0 :(得分:1)

如果我很了解您的需求,则可以在例如./vars.yml

---

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

请注意variable precedence

答案 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.