一、Includes 使用场景
有时,我们发现大量的Playbook内容需要重复编写,各Tasks之间功能需要相互调用才能完成各自功能,Playbook庞大互维护困难,这时我们需要使用Includes,把各个功能独立出来,使用代码:简洁,干净,解耦,复用度高,易于维护。
二、基于Reis主从单机例子进行拆分
1、Redis安装:redis_master_install.yml
2、Redis主库配置修改:redis_master_conf.yml
3、Redis服务重启:redis_restart.yml
4、Redis通用变量:redis_vars.yml
三、Redis通用变量redis_vars.yml
#安装主库的主机名称,必填(请保证各主机hosts文件已添中)
hosts:
#远程连接用户,必填(请保证ansible拥用该权限)
remote_user:
#是否使用sudo root用户(yes or no)
become:
#主库IP地址,必填字段,无论是否从库
master_redis_ip:
#主库监听端口,必填字段,无论主从
master_redis_port:
#从库IP地址,如果安装主库则留空
slave_redis_ip:
#从库监听端口,如果安装主库则留空
slave_redis_port:
四、Redis安装redis_master_install.yml
---
- hosts: "{{hosts}}"
vars_files:
- redis_vars.yml
remote_user: "{{remote_user}}"
become: "{{become}}"
tasks:
- name: "安装epel源"
yum:
name: epel-release
state: present
- name: "安装redis"
yum:
name: redis
state: latest
- name: "设置开机启动"
service:
name: redis
enabled: yes
五、Redis重启文件redis_restart.yml
---
- hosts: "{{hosts}}" #填写master_hosts 或 slave_hosts
vars_files:
- redis_vars.yml
remote_user: "{{remote_user}}"
become: "{{become}}"
tasks:
- name: "重启redis服务"
service:
name: redis
state: restarted
六、Redis主库配置修改redis_master_conf.yml
---
- hosts: "{{hosts}}"
vars_files:
- redis_vars.yml
remote_user: "{{remote_user}}"
become: "{{become}}"
tasks:
- name: "修改redis配置文件监听IP为本机"
lineinfile:
path: /etc/redis.conf
regexp: '^bind 127'
line: bind {{master_redis_ip}}
- name: "重启redis服务"
include: redis_restarted.yml #include的引用,重启redis
七、Redis从库配置修改redis_slave_conf.yml
---
- hosts: "{{hosts}}"
vars_files:
- redis_vars.yml
remote_user: "{{remote_user}}"
become: "{{become}}"
tasks:
- name: "编辑从库的配置文件,设置为从库"
lineinfile:
path: /etc/redis.conf
line: slaveof {{master_redis_ip}} {{master_redis_port}}
实战一:主库安装与修改配置文件
描述:在安装主库时,调用了主库的配置文件和服务重启
---
- hosts: "{{hosts}}"
vars_files:
- redis_vars.yml
remote_user: "{{remote_user}}"
become: "{{become}}"
tasks:
- name: "安装epel源"
yum:
name: epel-release
state: present
- name: "安装redis"
yum:
name: redis
state: latest
- name: "设置开机启动"
service:
name: redis
enabled: yes
- name: "修改配置文件" #调用配置文件修改
include: redis_master_conf.yml
- name: "启动redis服务" #调用服务服务重启
include: redis_restarted.yml
实战二:安装从库,并连接主库
描述:从库安装,调用了redis安装、修改从库配置文件、启动reids服务
---
- hosts: "{{hosts}}"
vars_files:
- redis_vars.yml
remote_user: "{{remote_user}}"
become: "{{become}}"
tasks:
- name: "开始安装从库"
shell: "echo redis install"
- name: "安装redis服务"
include: install_redis.yml
- name: "修改配置文件"
include: redis_slave_conf.yml
- name: "启动redis服务"
include: redis_restarted.yml