Ansible之使用roles文件实现apache+haproxy+keepalive负载均衡和高可用

将playbook.yml拆分,写到roles文件夹内,使文件变简单

一、建立roles文件夹,编写配置文件,安装apache

[devops@server4 ansible]$ mkdir roles
[devops@server4 ansible]$ vim ansible.cfg 
#写入:
[defaults]
inventory= ./inventory
roles_path = ./roles

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

[devops@server4 ansible]$ cd roles/
[devops@server4 roles]$ ansible-galaxy init apache

在这里插入图片描述

[devops@server4 roles]$ \vi apache/tasks/main.yml ##使用\vi命令编辑时,粘贴不会错行
#写入:
- name: install httpd
  yum:
    name: httpd
    state: present

- name: copy index.html
  copy:
    content: "{{ ansible_facts['hostname'] }}"
    dest: /var/www/html/index.html
le 'keepali
- name: configure httpd
  template:
    src: httpd.conf.j2
    dest: /etc/httpd/conf/httpd.conf
    owner: root
    group: root
    mode: 644
  notify: restart httpd

- name: start  httpd and firewalld
  service:
    name: "{{ item }}"
    state: started
  loop:
    - httpd
    - firewalld

- name: configure firewalld
  firewalld:
    service: http
    permanent: yes
    immediate: yes
    state: enabled

在这里插入图片描述

[devops@server4 roles]$ \vi apache/handlers/main.yml
#写入:
- name: restart httpd #触发器
  service:
    name: httpd
    state: restarted

在这里插入图片描述

[devops@server4 roles]$ \vi apache/vars/main.yml
#写入:
---
http_host: "{{ ansible_facts['default_ipv4']['address'] }}"
http_port: 80

在这里插入图片描述

[devops@server4 roles]$ cd apache/templates
[devops@server4 templates]$ cp ../../../templates/httpd.conf.j2 . #复制配置文件到当前目录

在这里插入图片描述

[devops@server4 templates]$ cd ..
[devops@server4 apache]$ cd ..
[devops@server4 roles]$ cd ..
[devops@server4 ansible]$ vim inventory
#写入:
[test]
server5 

[prod]
server6 
[webserver:children]
test
prod

在这里插入图片描述

[devops@server4 ansible]$ vim apache.yml
#写入:
---
- hosts: webserver
  roles:
    - apache

在这里插入图片描述

[devops@server4 ansible]$ ansible-playbook apache.yml #执行

在这里插入图片描述

二、编写配置文件,安装haproxy

配置haproxy的步骤与配置apache的步骤一样,只需要将apache改成haproxy即可,注意所有主机都需要配置sudo,给devops用户权限,
注意此配置文件的编写:
在这里插入图片描述

三、配置keepalived

[devops@server4 ansible]$ cd roles/
[devops@server4 roles]$ ansible-galaxy init keepalived
[devops@server4 roles]$ cd keepalived/
[devops@server4  keepalived]$ rm -fr README.md tests/ #删掉不需要的文件
[devops@server4  keepalived]$ \vi tasks/main.yml
#写入:
---
- name: install keepalived
  yum:
    name: keepalived
    state: present

- name: configure keepalived
  template:
    src: keepalived.conf.j2
    dest: /etc/keepalived/keepalived.conf
  notify: restart keepalived

- name: start keepalived
  service:
    name: keepalived
    state: started

在这里插入图片描述

[devops@server4  keepalived]$ vim handlers/main.yml 
#写入:
---
- name: restart keepalived
  service:
    name: keepalived
    state: restarted

在这里插入图片描述

[devops@server4  keepalived]$ su  -root #切换到超户
[root@server4 ~]# yum install keepalived -y #安装keepalive
[root@server4 ~]# su - devops #切回普通用户
[devops@server4 ~]$ cd ansible/roles/keeplived/templates/
[devops@server4 templates]$ cp /etc/keepalived/keepalived.conf . #复制keepalive配置文件到当前文件夹
[devops@server4 templates]$ mv keepalived.conf  keepalived.conf.j2 #改名
[devops@server4 templates]$ vim keepalived.conf.j2 #编辑keepalive配置文件
#写入:
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state {{ STATE }}
    interface eth0
    virtual_router_id 28 #此数字不能和当前局域网内别的交换机的相同
    priority {{ PRIORITY }}
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    }
    virtual_ipaddress {
        172.25.28.100
    }
}
[devops@server4 templates]$ cd -
[devops@server4 ansible]$ vim inventory 
#写入:
[lb]
server4 STATE=MASTER PRIORITY=100
server7 STATE=BACKUP PRIORITY=50

[test]
server5

[prod]
server6

[webserver:children]
test
prod
[devops@server4 ansible]$ vim roles/keeplived/vars/main.yml 
#写入:
http_host: "{{ ansible_facts['default_ipv4']['address'] }}"
http_port: 80
[devops@server4 ansible]$ vim apache.yml
#写入:
---
- hosts: all
  tasks:
  - import_role:
      name: apache
    when: ansible_hostname in groups['webserver']
  - import_role:
      name: haproxy
    when: ansible_hostname in groups['lb']
  - import_role:
      name: keepalived
    when: ansible_hostname in groups['lb']

在这里插入图片描述

[devops@server4 ansible]$ ansible-playbook apache.yml #启动

配置完毕

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值