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
相关推荐
Hy行者勇哥4 天前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏6 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风17 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠1 个月前
ansible编辑
网络·ansible
芳心粽伙饭1 个月前
Ansible课后作业
ansible
烁3471 个月前
Ansible初识
ansible
烁3471 个月前
Ansible安装部署调试
ansible
烁3471 个月前
Ansible命令
ansible
小义_1 个月前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.1 个月前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible