Ansible: docker env 条件变量
Ansible: docker env conditional variable
也许我处理这个问题的方式不对。我刚开始使用 Ansible,最近无法解决这个问题:
所以这是我正在尝试做的事情的片段:
vars:
var1: "true"
var2: "false"
var3: "true"
tasks:
- name: my-name
docker_container:
name: my-name
image: image/image
state: started
cap_drop: all
pull: yes
recreate: yes
restart_policy: always
env:
env1: "value"
env2: "value"
env3: "value"
所以想法是将 var1 到 var3 设置为 "true" 或 "false",然后根据变量将 env1 的值设置为 env3。
例如:
如果 var1 为真,则 env1 应包含 "some value"。但如果 var1 为假,则 env1 应包含 "an other value".
我也会使用 AWX 并将 vars 的值更改为 "SURVEYS"。
当然,我愿意接受其他建议。你们会如何解决这个问题?
设置所有环境变量的默认值,根据条件使用set_facts到set/modify值。
示例代码如下:
vars:
var1: "true"
var2: "false"
var3: "true"
envValue1: "some value"
envValue2: "some value"
envValue3: "some value"
tasks:
- set_fact:
envValue1: "another value"
when: "{{var1}}" != "true"
- set_fact:
envValue2: "another value"
when: "{{var2}}" != "true"
- set_fact:
envValue3: "another value"
when: "{{var3}}" != "true"
- name: my-name
docker_container:
name: my-name
image: image/image
state: started
cap_drop: all
pull: yes
recreate: yes
restart_policy: always
env:
env1: "{{envValue1}}"
env2: "{{envValue2}}"
env3: "{{envValue3}}"
不要用 set_facts
弄乱你的代码,你可以使用 Jinja2 if expression
或 ternary
过滤器:
- name: my-name
docker_container:
name: my-name
image: image/image
state: started
cap_drop: all
pull: yes
recreate: yes
restart_policy: always
env:
env1: "{{ 'some value' if not var1 else 'another value' }}"
env2: "{{ var2 | ternary('some value', 'another value') }}"
也许我处理这个问题的方式不对。我刚开始使用 Ansible,最近无法解决这个问题:
所以这是我正在尝试做的事情的片段:
vars:
var1: "true"
var2: "false"
var3: "true"
tasks:
- name: my-name
docker_container:
name: my-name
image: image/image
state: started
cap_drop: all
pull: yes
recreate: yes
restart_policy: always
env:
env1: "value"
env2: "value"
env3: "value"
所以想法是将 var1 到 var3 设置为 "true" 或 "false",然后根据变量将 env1 的值设置为 env3。
例如:
如果 var1 为真,则 env1 应包含 "some value"。但如果 var1 为假,则 env1 应包含 "an other value".
我也会使用 AWX 并将 vars 的值更改为 "SURVEYS"。
当然,我愿意接受其他建议。你们会如何解决这个问题?
设置所有环境变量的默认值,根据条件使用set_facts到set/modify值。
示例代码如下:
vars:
var1: "true"
var2: "false"
var3: "true"
envValue1: "some value"
envValue2: "some value"
envValue3: "some value"
tasks:
- set_fact:
envValue1: "another value"
when: "{{var1}}" != "true"
- set_fact:
envValue2: "another value"
when: "{{var2}}" != "true"
- set_fact:
envValue3: "another value"
when: "{{var3}}" != "true"
- name: my-name
docker_container:
name: my-name
image: image/image
state: started
cap_drop: all
pull: yes
recreate: yes
restart_policy: always
env:
env1: "{{envValue1}}"
env2: "{{envValue2}}"
env3: "{{envValue3}}"
不要用 set_facts
弄乱你的代码,你可以使用 Jinja2 if expression
或 ternary
过滤器:
- name: my-name
docker_container:
name: my-name
image: image/image
state: started
cap_drop: all
pull: yes
recreate: yes
restart_policy: always
env:
env1: "{{ 'some value' if not var1 else 'another value' }}"
env2: "{{ var2 | ternary('some value', 'another value') }}"