Ansible 之 Includes功能使用

一、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

猜你喜欢

转载自blog.51cto.com/12965094/2602138