almaops.vars

废弃警告

这个 Ansible 角色已被弃用,取而代之的是集合 almaops.common

almaops.vars

这个角色包含来自特定目录的变量。

想法

在为一个较大的项目开发 CI/CD 时,我们发现将变量存储在特定环境的目录中并加载它们是非常方便的。后来我们发现,将凭据和公共变量分成不同的目录也很有用。目录的结构如下:

.
├── common-vars
│   ├── project-A
│   │   └── dev
│   └── project-B
│       └── dev
├── credentials
│   ├── project-A
│   │   ├── dev
│   │   └── prod
│   └── project-B
│       ├── dev
│       └── prod
└── env-vars
    ├── project-A-env01
    ├── project-A-env02
    ├── project-A-prod
    ├── project-B-env01
    ├── project-B-env02
    └── project-B-prod

我们将来自同一环境的主机放入一个组(例如称为 project-a-env01),并在 group_vars 下的相应文件中指定加载变量的目录(如下例所示)。

这种方法的好处是包含的变量始终具有最高优先级(除了 --extra-vars),因此你始终可以了解在哪里查找环境参数。

角色变量

vars_root:存放环境目录的位置

vars_group:环境变量的目录,这个路径相对于 vars_root

vars_source:如果指定,角色将仅从此目录加载变量

角色默认值

vars_source: "{{ vars_root }}/{{ vars_group }}"

示例剧本

这个代码片段将包含 playbook_dir/vars/dev 中的所有 *.yml 文件:

- hosts: 包含所有开发环境主机的组
  roles:
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/vars"
      vars_group: "dev"

这个代码片段将包含 /home/user/my-env 中的所有 *.yml 文件:

- hosts: 包含所有开发环境主机的组
  roles:
    - role: almaops.vars
      vars_source: "/home/user/my-env"

这个代码片段将包含来自以下路径的所有 *.yml 文件:playbook_dir/creds/dev、playbook_dir/env-vars/dev、playbook_dir/common-vars/my-dev-env

```yaml --- playbook.yml ---

  • hosts: 包含所有开发环境主机的组 roles:

    加载凭据

    • role: almaops.vars vars_root: "{{ playbook_dir }}/creds" vars_group: "{{ credentials_library }}"

    加载特定于该环境组(类似环境的组)的变量

    • role: almaops.vars vars_root: "{{ playbook_dir }}/common-vars" vars_group: "{{ env_group_name }}"

    加载特定于环境的变量

    • role: almaops.vars vars_root: "{{ playbook_dir }}/env-vars" vars_group: "{{ env_name }}"

--- group_vars/包含所有开发环境主机组.yml --- credentials_library: "dev" env_group_name: "dev" env_name: "my-dev-env"

许可证

MIT

关于项目

Loading ansible variables from files

安装
ansible-galaxy install almaops.vars
许可证
Unknown
下载
221
拥有者
Premium IT Consulting