首页 > 解决方案 > 配置文件中的 Ansible 可选变量

问题描述

在我要配置的服务的配置文件中,我有一个可以完全省略的可选参数。我的配置文件的模板语言是 Jinja2。

我想要的是能够在我的 Ansiblevars.yml文件中定义一个变量:

optional_service_parameter: "value"

每当在vars.yml我想在服务配置中使用它定义变量时:

config:
  parameter1: {{ parameter_var_1 }} 
  parameter2: {{ parameter_var_2 }}
  optional_parameter: {{ optional_service_parameter }}

当变量optional_service_parameter未设置时vars.ymloptional_service_parameter应该在我的服务配置文件中省略。实现这一目标的最佳方法是什么?

标签: ansiblejinja2

解决方案


您可以尝试使用when带有lookup变量的条件。下面是示例。我使用 set_facts 和 when 条件来保持简单。如果找到变量,那么它将打印消息,否则将不会打印。希望这可以帮助。

- hosts: all
  gather_facts: no
  tasks:
    - name: testing
      debug:
        msg: "{{ optional_service_parameter }}"
      when: lookup('vars', 'optional_service_parameter', errors='ignore', default=false)

推荐阅读