簡體   English   中英

如何在ansible的vars文件中使用if條件

[英]How can i use if condition in vars file in ansible

是不是可以在anisble vars文件中做這樣的事情

env: "{{ lookup('env','MY_ENV') }}"    
user: tom if {{ env }} else mike

這是你的問題的答案,我認為你不能使用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

希望對你有所幫助

一種方法是使用另一個查找到包含user-env映射的json文件。 例如:

user_envs.json:

{
    "dev": "tom",
    "prod": "mike"
}

抬頭:

{{ (lookup('file', 'user_envs.json') | from_json).get('dev') }}

現在沒有環境嘗試,但試一試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM