不能在 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个选项:

  1. 尝试在提供的字符串中搜索 "redis",这不是理想的选择,因为如果您提供了 redisv2 apache zookeeper.
  2. 这样的字符串,它会验证为真
  3. 使用 space 作为分隔符将字符串拆分为列表,然后如果 "redis" 在列表元素之一中则验证为真。

对于第二个选项,操作方法如下:

  - name: fetch ports
    shell: ll | grep -i "ports"
    when: '"redis" in modules.split(" ")'

希望对您有所帮助。