Ansible的module_defaults

环境

  • 管理节点:Ubuntu 22.04
  • 控制节点:CentOS 8
  • Ansible:2.15.6

module_defaults

如果某个module被多次调用,且每次调用时的参数也一样,则可以通过 module_defaults 为该module指定缺省参数,以简化操作。

yaml 复制代码
---
- hosts: all
  module_defaults:
    debug:
      msg: "Default message"
  tasks:
    - name: task1
      debug:

    - name: task2
      debug:

运行结果如下:

powershell 复制代码
TASK [task1] ***************************************************************************************
ok: [192.168.1.55] => {
    "msg": "Default message"
}

TASK [task2] ***************************************************************************************
ok: [192.168.1.55] => {
    "msg": "Default message"
}

注:对于 debug ,即使没有 msg ,也不会报错,默认会输出 Hello world!

module_defaults 可用在play、block、task级别。

当然,即使已有默认参数,也可以显式指定参数:

yaml 复制代码
    - name: task3
      debug:
        msg: "task3 message"

运行结果如下:

powershell 复制代码
TASK [task3] ***************************************************************************************
ok: [192.168.1.55] => {
    "msg": "task3 message"
}

如果不想使用缺省参数,可以通过 <module>: {} 显式指明不使用缺省参数:

yaml 复制代码
    - name: task4
      debug:
      module_defaults:
        debug: {}

运行结果如下:

powershell 复制代码
TASK [task4] ***************************************************************************************
ok: [192.168.1.55] => {
    "msg": "Hello world!"
}

注意:设置在play级别(以及使用了 include_roleimport_role 的block/task级别)的module default会作用到role里面。

另:在 module_defaults 中可以使用变量:

yaml 复制代码
---
- hosts: all
  vars:
    var1: "Tom"
  module_defaults:
    debug:
      msg: "Hello {{ var1 }}"
  tasks:
    - name: task1
      debug:

    - name: task2
      set_fact:
        var1: "Jerry"

    - name: task3
      debug:

运行结果如下:

powershell 复制代码
TASK [task1] ***************************************************************************************
ok: [192.168.1.55] => {
    "msg": "Hello Tom"
}

TASK [task2] ***************************************************************************************
ok: [192.168.1.55]

TASK [task3] ***************************************************************************************
ok: [192.168.1.55] => {
    "msg": "Hello Jerry"
}

参考

  • https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_module_defaults.html
相关推荐
开源Linux7 天前
Ansible高频面试题详解:30个问题从入门到精通
ansible
我爱钱因此会努力8 天前
ansible实战-不同的用户登录不同的主机
linux·运维·服务器·ansible
我爱钱因此会努力9 天前
ansible实战- 关机
linux·运维·服务器·centos·自动化·ansible
运维李哥不背锅9 天前
Ansible 模块详解:高效管理你的 IT 基础设施
服务器·网络·ansible
K_i1349 天前
Ansible模块分类与实战应用指南
ansible
我爱钱因此会努力9 天前
ansible自动化运维入门篇
linux·运维·服务器·centos·自动化·ansible
zz-zjx9 天前
Ansible生产调优与故障排查全攻略
ansible
K_i1349 天前
Ansible自动化部署ECS与Nginx全流程
nginx·自动化·ansible
zz-zjx9 天前
生产级 Ansible 部署全流程-nginx示例
ansible
运维李哥不背锅9 天前
Ansible 的变量与模板:实现更灵活的自动化配置
java·自动化·ansible