使用常规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