不能在 playbook 任务中使用 ansible extra vars 值
can't use the ansible extra vars values in playbook task
当运行使用ansible playbook时,我提供了额外的变量,特别是我传递多个值的模块变量。
ansible-playbook abc.yml --extra-vars "status=enable modules='redis apache zookeeper'"
当额外变量中的模块具有 "redis"
时,我想 运行 以下任务
- name: fetch ports
shell: ll | grep -i "ports"
when: modules == "redis"
但是,即使 extra vars 中的模块有 "redis",上述任务也会被跳过。任何帮助将不胜感激。
您提供的modules
变量是一个字符串,您有2个选项:
- 尝试在提供的字符串中搜索 "redis",这不是理想的选择,因为如果您提供了
redisv2 apache zookeeper
. 这样的字符串,它会验证为真
- 使用 space 作为分隔符将字符串拆分为列表,然后如果 "redis" 在列表元素之一中则验证为真。
对于第二个选项,操作方法如下:
- name: fetch ports
shell: ll | grep -i "ports"
when: '"redis" in modules.split(" ")'
希望对您有所帮助。
当运行使用ansible playbook时,我提供了额外的变量,特别是我传递多个值的模块变量。
ansible-playbook abc.yml --extra-vars "status=enable modules='redis apache zookeeper'"
当额外变量中的模块具有 "redis"
时,我想 运行 以下任务 - name: fetch ports
shell: ll | grep -i "ports"
when: modules == "redis"
但是,即使 extra vars 中的模块有 "redis",上述任务也会被跳过。任何帮助将不胜感激。
您提供的modules
变量是一个字符串,您有2个选项:
- 尝试在提供的字符串中搜索 "redis",这不是理想的选择,因为如果您提供了
redisv2 apache zookeeper
. 这样的字符串,它会验证为真
- 使用 space 作为分隔符将字符串拆分为列表,然后如果 "redis" 在列表元素之一中则验证为真。
对于第二个选项,操作方法如下:
- name: fetch ports
shell: ll | grep -i "ports"
when: '"redis" in modules.split(" ")'
希望对您有所帮助。