ansible include
不拆分的剧本
全部是写在一个剧本文件中,比如下面juben.yml
- hosts: all
tasks:
- name: 1、下载
...: ...
- name: 2、安装
...: ...
- name: 3、配置
...: ...
- name: 4、数据库操作
...: ...
- name: 5、分发代码
...: ...
拆分剧本
使用include_tasks,比如主剧本juben.yml
- hosts: all
tasks:
- include_tasks: 1_download.yml
- include_tasks: 2_install.yml
- include_tasks: 3_config.yml
- include_tasks: 4_dba.yml
- include_tasks: 5_online.yml
然后在创建这5个子剧本,单独写各种的任务
roles
比如给server3组的主机设置登录提示信息,不拆分是下面这样写的
- hosts: server3
gather_facts: yes
tasks:
- name: 将tishi.j2分发到server3组的主机/etc/motd
template:
src: /root/tishi.j2
dest: /etc/motd
backup: yes
~
使用roles
主剧本juben.yml文件是这样的的
[root@monster1 ~]# cat juben.yml
- hosts: server3
gather_facts: yes
roles:
- role: chaifen
[root@monster1 ~]#
创建目录,结构如下
原本tasks的内容写在tasks下的字剧本main.yml(默认读取main)
template的内容放在templates下,使用时直接写文件名即可
[root@monster1 ~]# tree -F chaifen
chaifen
├── tasks/
│ └── main.yml
└── templates/
└── tishi.j2
2 directories, 2 files
main.yml
[root@monster1 ~]# cat chaifen/tasks/main.yml
- name: 将tishi.j2分发到server3组的主机/etc/motd
template:
src: tishi.j2
dest: /etc/motd
backup: yes
tishi.j2
[root@monster1 ~]# cat chaifen/templates/tishi.j2
#下面是通过ansible分发的信息
IP地址:{{ansible_default_ipv4.address}}
主机名称:{{ansible_hostname}}
分发后远程登录