是否可以在anisble vars文件中执行类似的操作
env: "{{ lookup('env','MY_ENV') }}"
user: tom if {{ env }} else mike
答案 0 :(得分:2)
以下是您的问题的答案,我认为您不能将env
用作变量,因为它是ansible中的保留字:
---
- hosts: all
gather_facts: no
vars:
ENV: "dev"
tasks:
- debug:
msg: "{%- if ENV == 'dev' -%} tom {%- else -%} mike {%- endif -%}"
当ENV
的值为dev
时的结果:
% ansible-playbook -i "localhost," test.yml -c local
PLAY [all] *********************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "tom"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
当ENV
的值为其他内容时的结果:
% ansible-playbook -i "localhost," test.yml -c local
PLAY [all] *********************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "mike"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
希望能帮到你
答案 1 :(得分:1)
一种方法是使用另一个查找到包含user-env映射的json文件。 E.g:
user_envs.json:
{
"dev": "tom",
"prod": "mike"
}
查找
{{ (lookup('file', 'user_envs.json') | from_json).get('dev') }}
现在没有尝试尝试,但试一试!