运维实操——saltstack自动化部署keepalived和zabbix

saltstack自动化部署keepalived和zabbix

1、keepalived

本文使用三台虚拟机,server1是saltstack的master端,server2和server3是saltstack的minion端,现在想让server1给server2和server3部署keepalived,使得server2为keepalived的master,server3为keepalived的backup。
先简单部署,测试成功后,再做调整。
修改keepalived配置文件如下,vip为172.25.11.100
在这里插入图片描述
在base中创建子目录keepalived,编写init.sls文件,,给server2推
在这里插入图片描述
init.sls文件内容如下,kp-install模块,安装keepalived;推送base下的keepalived下的keepalived.conf文件;运行keepalived,并监测是否有改动,有改动就重启。
在这里插入图片描述
在server2端可以查看到vip,执行成功
在这里插入图片描述
接下来考虑到,master和backup的配置文件不同,所以同时推的时候,需要变量,就要用到pillar。在/srv/pillar/编写kp.sls文件,内容如下,如果主机名是server2,状态为master,vrid为11,优先级为100;如果主机名是server3,状态为backup,vrid为11,优先级为50。
在这里插入图片描述

在/srv/pillar/top.sls文件中,需要添加kp模块
在这里插入图片描述

[root@server1 keepalived]# vim init.sls 
kp-install:
  pkg.installed:
    - name: keepalived

  file.managed:
    - name: /etc/keepalived/keepalived.conf
    - source: salt://keepalived/keepalived.conf
    - template: jinja							#添加jinja模板
    - context:
      STATE: {{ pillar['state'] }}				#变量state赋予STATE
      VRID: {{ pillar['vrid' ]}}				#变量vrid赋予VRID
      PRI: {{ pillar['pri'] }}					#变量pri赋予PRI

  service.running:
    - name: keepalived
    - reload: true
    - watch:
      - file: kp-install

修改keepalived的配置文件如下,把原来的三个定值换成了变量。
在这里插入图片描述
salt ‘*’ state.sls keepalived 推送,server3是backup,server2是master。
在这里插入图片描述
由于现在使用虚拟ip,所以以前写的apache模块中,ip的位置需要修改为虚拟ip
在这里插入图片描述
修改base下的top.sls文件,角色为apache的主机匹配后,执行keepalived模块;角色为nginx的主机匹配后,执行keepalived模块。
在这里插入图片描述

设置完毕,salt ‘*’ state.highstate 高推,curl成功
在这里插入图片描述

2、zabbix

server1是salt的master端,server2和server3是salt的minion端。
server2作zabbix的server端,server3作zabbix的agent端。
前面已经完成saltstack的部署(包括salt-master和salt-minion)

首先在真机上搭建zabbix的yum源

[root@foundation11 images]# cd /var/www/html/
[root@foundation11 html]# ls
3000  4.0  rhel7.6  rhel8
[root@foundation11 html]# cd 4.0/
[root@foundation11 4.0]# ls
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-5.4.16-46.el7.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-bcmath-5.4.16-46.el7.x86_64.rpm
php-cli-5.4.16-46.el7.x86_64.rpm
php-common-5.4.16-46.el7.x86_64.rpm
php-gd-5.4.16-46.el7.x86_64.rpm
php-ldap-5.4.16-46.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-46.el7.x86_64.rpm
php-mysql-5.4.16-46.el7.x86_64.rpm
php-pdo-5.4.16-46.el7.x86_64.rpm
php-xml-5.4.16-46.el7.x86_64.rpm
repodata
zabbix-agent-4.0.5-1.el7.x86_64.rpm
zabbix-get-4.0.5-1.el7.x86_64.rpm
zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm
zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-sender-4.0.5-1.el7.x86_64.rpm
zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-web-4.0.5-1.el7.noarch.rpm
zabbix-web-mysql-4.0.5-1.el7.noarch.rpm

salt的master端的整体布局如下:

[root@server1 ~]# cd /srv/
[root@server1 srv]# tree
.
├── pillar
│   ├── top.sls
│   └── zabbix.sls
└── salt
    ├── mariadb
    │   ├── files
    │   │   └── create.sql.gz
    │   └── install.sls
    ├── repos
    │   └── zabbix.sls
    ├── top.sls
    ├── zabbix-agent
    │   ├── files
    │   │   └── zabbix_agentd.conf
    │   └── install.sls
    ├── zabbix-server
    │   ├── files
    │   │   └── zabbix_server.conf
    │   └── install.sls
    └── zabbix-web
        ├── files
        │   └── zabbix.conf
        └── install.sls

(1)仓库 repos目录

[root@server1 salt]# ls
mariadb  repos  top.sls  zabbix-agent  zabbix-server  zabbix-web
[root@server1 salt]# cd repos/
[root@server1 repos]# ls
zabbix.sls
[root@server1 repos]# cat zabbix.sls 
zabbix:
  pkgrepo.managed:
    - baseurl: http://172.25.11.250/4.0
    - gpgcheck: 0

(2)mariadb 目录

[root@server1 salt]# ls
mariadb  repos  top.sls  zabbix-agent  zabbix-server  zabbix-web
[root@server1 salt]# cd mariadb/
[root@server1 mariadb]# ls
files  install.sls
[root@server1 mariadb]# cat install.sls 
db-install:
  pkg.installed:
    - pkgs:
      - mariadb-server
      - mariadb
      - MySQL-python

  service.running:
    - name: mariadb
db-configure:
  file.managed:
    - name: /mnt/create.sql.gz
    - source: salt://mariadb/files/create.sql.gz

  mysql_database.present:
    - name: zabbix
    - character_set: utf8
    - collate: utf8_bin
    - connection_user: root
    - connection_pass:

  mysql_user.present:
    - name: zabbix
    - host: localhost
    - password: westos
    - connection_user: root
    - connection_pass:
onnection_pass:

  mysql_grants.present:
    - grant: all privileges
    - database: zabbix.*
    - user: zabbix
    - connection_user: root
    - connection_pass:

  cmd.wait:
    - name: zcat /mnt/create.sql.gz | mysql -uroot zabbix
    - watch:
      - mysql_database: db-configure
[root@server1 mariadb]# cd files/
[root@server1 files]# ls
create.sql.gz

(3)zabbix-server目录

[root@server1 salt]# ls
mariadb  repos  top.sls  zabbix-agent  zabbix-server  zabbix-web
[root@server1 salt]# cd zabbix-server/
[root@server1 zabbix-server]# ls
files  install.sls
[root@server1 zabbix-server]# cat install.sls 
include:
  - repos.zabbix

server-install:
  pkg.installed:
    - pkgs:
      - zabbix-server-mysql
      - zabbix-agent

  file.managed:
    - name: /etc/zabbix/zabbix_server.conf
    - source: salt://zabbix-server/files/zabbix_server.conf
    - template: jinja
    - context:
      dbpasswd: {{ pillar['DBPASSWD'] }}

  service.running:
    - name: zabbix-server
    - watch:
      - file: server-install

zabbix-agent:
  service.running

[root@server1 zabbix-server]# cd files/
[root@server1 files]# ls
zabbix_server.conf
[root@server1 files]# cat zabbix_server.conf 

124:			DBPassword={{ dbpasswd }}

(4)zabbix-agent目录

[root@server1 salt]# ls
mariadb  repos  top.sls  zabbix-agent  zabbix-server  zabbix-web
[root@server1 salt]# cd zabbix-agent/
[root@server1 zabbix-agent]# ls
files  install.sls
[root@server1 zabbix-agent]# cat install.sls 
include:
  - repos.zabbix

agent-install:
  pkg.installed:
    - name: zabbix-agent

  file.managed:
    - name: /etc/zabbix/zabbix_agentd.conf
    - source: salt://zabbix-agent/files/zabbix_agentd.conf
    - template: jinja
    - context:
      zabbixserver: {{ pillar['ZABBIX-SERVER'] }}
      hostname: {{ grains['fqdn'] }}

  service.running:
    - name: zabbix-agent
    - restart: true
    - watch:
      - file: agent-install
[root@server1 zabbix-agent]# cd files/
[root@server1 files]# ls
zabbix_agentd.conf
[root@server1 files]# cat zabbix_agentd.conf 
98:			Server={{ zabbixserver }}
139:		ServerActive={{ zabbixserver }}
150:		Hostname={{ hostname }}

(5)zabbix-web目录

[root@server1 salt]# ls
mariadb  repos  top.sls  zabbix-agent  zabbix-server  zabbix-web
[root@server1 salt]# cd zabbix-web/
[root@server1 zabbix-web]# ls
files  install.sls
[root@server1 zabbix-web]# cat install.sls 
include:
  - repos.zabbix

web-install:
  pkg.installed:
    - pkgs:
      - zabbix-web-mysql
      - zabbix-web
      - httpd
      - php
      - php-mysql

  file.managed:
    - name: /etc/httpd/conf.d/zabbix.conf
    - source: salt://zabbix-web/files/zabbix.conf

  service.running:
    - name: httpd
    - watch:
      - file: web-install
[root@server1 zabbix-web]# cd files/
[root@server1 files]# ls
zabbix.conf
[root@server1 files]# cat zabbix.conf 
20:			php_value date.timezone Asia/Shanghai

(6)pillar目录

[root@server1 srv]# ls
pillar  salt
[root@server1 srv]# cd pillar/
[root@server1 pillar]# ls
top.sls  zabbix.sls
[root@server1 pillar]# cat zabbix.sls 
{% if grains['fqdn'] == 'server2' %}
DBPASSWD: westos
{% else %}
ZABBIX-SERVER: 172.25.11.2
{% endif %}
[root@server1 pillar]# cat top.sls 
base:
  '*':
    - zabbix

(7)top.sls

[root@server1 salt]# ls
mariadb  repos  top.sls  zabbix-agent  zabbix-server  zabbix-web
[root@server1 salt]# cat top.sls 
base:
  'server2':
    - mariadb.install
    - zabbix-server.install
    - zabbix-web.install

  'server3':
    - zabbix-agent.install

部署文件完成,测试salt '*' state.highstate,浏览器打开172.25.11.2/zabbix
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

账号为Admin,密码为zabbix
在这里插入图片描述

可以成功在网页看到server端
在这里插入图片描述

和以前的方法一样,添加server3进入群组
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值