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
相关推荐
嘻哈baby9 小时前
Ansible自动化运维入门:从手工到批量部署
运维·自动化·ansible
Warren9813 小时前
面试和投简历闲聊
网络·学习·docker·面试·职场和发展·eureka·ansible
乾元13 小时前
Syslog / Flow / Telemetry 的 AI 聚合与异常检测实战(可观测性)
运维·网络·人工智能·网络协议·华为·自动化·ansible
我是koten1 天前
用Ansible查找文件并记录文件名的playbook
linux·运维·centos·ssh·ansible·find·playbook
jcsx1 天前
采用ansible收集多个centos6主机的一个特定日志文件vsftpd.log的后3000行
ansible
广目软件3 天前
GM DC Monitor一体化监控预警平台部署手册2025-12-10
运维·自动化·ansible·zabbix·运维开发·prometheus
tianyuanwo4 天前
Ansible构建节点管理:Koji与Mock构建节点的自动化运维实践
运维·自动化·ansible
星融元asterfusion5 天前
容器化NPB + Ansible:自动化运维方案
运维·自动化·ansible
乾元6 天前
SDN 与 AI 协同:控制面策略自动化与策略一致性校验
运维·网络·人工智能·网络协议·华为·系统架构·ansible
车传新8 天前
Ansible
ansible