【问题标题】:can't use the ansible extra vars values in playbook task不能在剧本任务中使用 ansible 额外的变量值
【发布时间】:2020-03-08 17:06:07
【问题描述】:

在运行 ansible playbook 时,我提供了额外的变量,特别是对于我传递多个值的 modules 变量。

ansible-playbook abc.yml  --extra-vars "status=enable modules='redis apache zookeeper'"

当额外变量中的模块具有“redis”时,我想运行以下任务

  - name: fetch ports
    shell: ll | grep -i "ports"
    when:  modules == "redis"

但是,即使额外变量中的模块具有“redis”,上述任务也会被跳过。任何帮助将不胜感激。

【问题讨论】:

    标签: ansible ansible-2.x ansible-inventory ansible-facts


    【解决方案1】:

    您提供的 modules 变量是一个字符串,您有 2 个选项:

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

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

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

    希望对你有帮助。

    【讨论】:

    • 感谢您的解释。
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多