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
相关推荐
IT成长日记14 小时前
【Ansible基础】Ansible执行流程详解:从Playbook到实际任务
ansible·playbook·执行流程
麦a~M了M1 天前
ansible
linux·运维·ansible
IT成长日记2 天前
【Ansible基础】Ansible 核心组件深度解析:控制节点、受管节点、Inventory与Playbook
ansible·playbook·控制节点·受管节点·inventory
sky北城3 天前
ansible进阶02
ansible
重启就好3 天前
【Ansible】之inventory主机清单
运维·ansible
xmweisi023 天前
Ansible内置模块之 group
linux·运维·ansible·rhce·rhca·红帽认证
一直奔跑在路上4 天前
【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署
windows·https·ansible
遇见火星5 天前
Ansible模块——从控制节点向目标主机复制文件!
java·服务器·ansible
重启就好6 天前
【Ansible】模块详解
linux·服务器·ansible
是垚不是土6 天前
Kolla-Ansible搭建与扩容OpenStack私有云平台
linux·运维·服务器·云计算·ansible·openstack