Ansible - 如果 undefined variable ,则使用默认值

标签 ansible ansible-2.x

我正在定制 linux users在我的角色中创造。我需要让我角色的用户自定义 home_directory , group_name , name , password .

我想知道是否有更灵活的方法来处理默认值。

我知道下面的代码是可能的:

- name: Create default
  user:
    name: "default_name"
  when: my_variable is not defined

 - name: Create custom
  user:
    name: "{{my_variable}}"
  when: my_variable is defined

但正如我提到的,有很多可选变量,这创造了很多可能性。

有类似上面的代码吗?
user:
  name: "default_name", "{{my_variable}}"

代码应设置name="default_name"my_variable没有定义。

我可以在 defaults/main.yml 上设置所有变量并像这样创建用户:
- name: Create user
  user:
    name: "{{my_variable}}"

但是这些变量在一个非常大的散列中,并且该散列中有一些不能作为默认值的散列。

最佳答案

您可以使用 Jinja 的 default :

- name: Create user
  user:
    name: "{{ my_variable | default('default_value') }}"

关于Ansible - 如果 undefined variable ,则使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72110203/

相关文章:

docker - 使用 DNS 公开 Docker 端口和访问以更轻松地访问 Ansible

ansible - 使用 ansible playbook 执行 curl -X

ansible - Ansible如何循环执行一系列任务?

variables - 带有更新路径的 Ansible 运行命令

ansible - 无法获得与取消存档模块一起使用的 "exclude"选项

linux - 指定直接主机的 Ansible ad-hoc 命令 - 没有匹配的主机

ansible - 解析/循环 ansible 注册变量

Ansible 嵌套 host_vars 文件夹

ansible - 在 Ansible 中,如何连接到 Windows 主机?

ansible - 在 Ansible 的 lineinfile 任务中的正则表达式中使用 {{item}}