使用常规playbook,修改/etc/motd的内容
1. 修改默认配置
[root@control ansible]# vim ansible.cfg
[defaults]
inventory = hosts
2. 创建motd模板文件
[root@control ansible]# vim motd.j2
Hostname: {{ansible_hostname}} # facts变量,主机名
Date: {{ansible_date_time.date}} # facts变量,日期
Contact to: {{admin}} # 自定义变量
3. 编写playbook
[root@control ansible]# vim motd.yml
- name: modifty /etc/motd
hosts: test
vars:
admin: root@teed.cn # 自定义名为admin的变量
tasks:
- name: modify motd
template:
src: motd.j2
dest: /etc/motd
[root@control ansible]# ansible-playbook motd.yml
[root@node1 ~]# cat /etc/motd
Hostname: node1
Date: 2021-11-01
Contact to: root@teed.cn
创建角色
1. 声明角色存放的位置
[root@control ansible]# vim ansible.cfg
[defaults]
inventory = hosts
roles_path = roles # 定义角色存在当前目录的roles子目录中
2. 创建角色目录
[root@control ansible]# mkdir roles
3. 创建名为motd的角色
[root@control ansible]# ansible-galaxy init roles/motd
[root@control ansible]# ls roles/
motd # 生成了motd角色目录
[root@control ansible]# yum install -y tree
[root@control ansible]# tree roles/motd/
roles/motd/
├── defaults # 定义变量的目录,一般不用,因为优先级太低
│ └── main.yml
├── files # 保存上传的文件(如copy模块用到的文件)
├── handlers # handlers任务写到这个目录的main.yml中
│ └── main.yml
├── meta # 保存说明数据,如角色作者、版本等
│ └── main.yml
├── README.md # 保存角色如何使用之类的说明
├── tasks # 保存任务
│ └── main.yml
├── templates # 保存template模块上传的模板文件
├── tests # 保存测试用的playbook。可选
│ ├── inventory
│ └── test.yml
└── vars # 定义变量的位置,推荐使用的位置
└── main.yml
4. 将不同的内容分别写到对应目录的main.yml中
4.1 创建motd.j2模板文件
[root@control ansible]# vim roles/motd/templates/motd.j2
Hostname: {{ansible_hostname}}
Date: {{ansible_date_time.date}}
Contact to: {{admin}}
4.2 创建变量
[root@control ansible]# vim roles/motd/vars/main.yml # 追加一行
admin: zzg@teed.cn
4.3 创建任务
[root@control ansible]# vim roles/motd/tasks/main.yml # 追加
- name: modify motd
template:
src: motd.j2 # 这里的文件,自动到templates目录下查找
dest: /etc/motd
5. 创建playbook,调用motd角色
[root@control ansible]# vim role_motd.yml
- name: modify motd with role
hosts: test
roles:
- motd
6. 执行playbook
[root@control ansible]# ansible-playbook role_motd.yml