我想将一个变量传递给特定系统上的任何剧本。目前,这是在命令行上完成的:
amos@sandbox $ ansible-playbook -e 'working_env=sandbox' playbooks/foo.ymlworking_env变量将确定用户在该环境中的系统上执行的操作。我们用来启动playbooks的每个系统都在/etc/profile中为每个人设置了一个环境变量。
amos@sandbox $ echo $WORKING_ENV
sandbox我想使用该变量的值来填充ansible的"working_env“变量。我们缺少一个静态清单文件,因为主机在名称和编号上进行自动缩放和漫游。因此,我不能轻松地将其包括在清单中,尽管我会感兴趣的是,如果可以在静态清单文件中为所有主机执行此操作,我没有找到任何类似all的引用: ansible清单的vars,并且它和一些变体不起作用。我们有一个静态的ansible.cfg文件,可以在这里引入一个playbook变量吗?
我的目标是:
amos@sandbox $ ansible-playbook playbooks/foo.yml运行与第一个示例相同的代码,避免变量赋值时出现输入错误。
我找到的最好的设置是:
vars:
working_env: "{{ lookup('env','WORKING_ENV') }}"在每个剧本中,都有相当多的剧本,而且连续的重复缺乏优雅。给我留下了希望,还有更好的方法。
发布于 2019-09-06 17:01:43
如下所示进行尝试:
在/etc/ansible/group_vars下创建文件all
cat /etc/ansible/group_vars/all
working_env:"{{ lookup('env','WORKING_ENV') }}"
https://stackoverflow.com/questions/57812261
复制相似问题