variables - 配置中的剧本变量
问题描述
我想将变量传递给特定系统上的任何剧本。目前这是在命令行上完成的:
amos@sandbox $ ansible-playbook -e 'working_env=sandbox' playbooks/foo.yml
working_env 变量将确定诸如用户在该环境中的系统上进行的操作。我们用来启动 playbook 的每个系统都在 /etc/profile 中为每个人设置了一个环境变量。
amos@sandbox $ echo $WORKING_ENV
sandbox
我想使用该变量的值来填充 ansible 的“working_env”变量。我们缺少一个静态清单文件,因为主机是自动缩放的,并且在名称和数量上四处游荡。因此,我无法轻松地将其包含在清单中,尽管如果可以对静态清单文件中的所有主机执行此操作,我会很感兴趣,但我没有找到对 [all:vars] 之类的任何引用ansible 库存,它和一些变体不起作用。我们确实有一个静态 ansible.cfg 文件,这里可以引入一个 playbook 变量吗?
我的目标是:
amos@sandbox $ ansible-playbook playbooks/foo.yml
运行与第一个示例相同,使我们免于变量赋值的输入错误。
我发现最好的是设置:
vars:
working_env: "{{ lookup('env','WORKING_ENV') }}"
每一本playbook,但playbook都不少,不断重复缺乏优雅。给我留下希望有更好的方法。
解决方案
尝试如下:在/etc/ansible/group_vars下
创建一个文件all
cat /etc/ansible/group_vars/all
工作环境:“{{查找('env','WORKING_ENV')}}”
推荐阅读
- css - 为什么我的媒体查询会切换我的移动优先设计?
- jquery - 如何使用 jQuery 组合 5 个单独的函数?
- c# - MySQL是UTC,接口是当地时间,但迟到的约会会在第二天出现
- javascript - 尝试迁移到 Angular 9 时出错:带有 DI 迁移的未修饰类
- c++ - 使用向量将输入从文本文件存储到二维数组中
- javascript - 如何在 React Hooks 中完成 Vue watcher
- flutter - Flutter 无法专注于 Stack Inside 的可见溢出中的 TextField
- algorithm - 当段落包含来自 Elasticsearch 索引的句子时匹配
- html - 如何为 Laravel 转义 html
- javascript - JS - 我不明白为什么这个对象声明不起作用