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
相关推荐
梅孔立9 天前
Ansible 100 台服务器一键管控实战 进阶版
服务器·git·ansible
henry10101012 天前
Ansible自动化运维全攻略(AI生成)
linux·运维·python·ansible·devops
only_Klein15 天前
Ansible变量详解
运维·自动化·ansible
only_Klein15 天前
Ansible Roles 详解
自动化·ansible·role
only_Klein15 天前
Ansible 条件判断与流程控制详解
自动化·ansible
axPpcfNN16 天前
可直接编译运行 c#解析dxf可读取圆直线弧多段线源码-无封装缩放拖拽 可读取坐标信息 支持多...
ansible
Maggie_ssss_supp17 天前
Linux-ansible自动化运维
运维·自动化·ansible
迎仔17 天前
10-算力中心运维三剑客:Ansible + Jenkins + K8s 高效实战
运维·kubernetes·ansible·jenkins
识途老码19 天前
25.ansible的hostname模块
ansible·hostname
Cloud Traveler22 天前
Ansible+cpolar:NAS 远程自动化运维方案
ansible