Ansible Tower动态获取指定库存组成员并生成邮件通知
获取Ansible指定组的成员并填充邮件正文
直接通过groups['组名']即可获取目标组的所有成员主机列表,以下是具体实现步骤和示例:
提取指定组的服务器列表
使用set_fact模块将目标组的主机列表转换为邮件友好的格式,比如换行分隔:- name: 提取Test_Group_3的服务器列表 set_fact: patch_servers: "{{ groups['Test_Group_3'] | default([]) | join('\n') }}"default([])用于兜底,避免因组不存在触发Playbook报错;join('\n')把数组格式的主机名转为换行分隔的字符串,让邮件内容更易读。
在邮件模块中引用变量
调用Ansible的mail模块发送通知时,直接在正文插入生成好的服务器列表变量:- name: 发送补丁操作通知邮件 mail: subject: "本月Test_Group_3补丁操作服务器清单" body: | 即将对以下服务器执行月度补丁操作: {{ patch_servers }} 操作时间:XXXX年XX月XX日 XX:XX 如有疑问请联系运维团队 from: ansible-tower@your-domain.com to: ops-notify@your-domain.com smtp_server: smtp.your-domain.com验证变量准确性
可以先添加debug模块测试获取到的主机列表是否符合预期:- name: 打印目标组服务器列表 debug: var: groups['Test_Group_3']
内容的提问来源于stack exchange,提问作者ITMike89
相关产品推荐
相关产品推荐

