saltstack自动化运维(大规模使用)(二)---pillar-keepalived-zabbix

1. pillar

1.1 pillar简介

  • pillar和grains一样也是一个数据系统,但是应用场景不同。
    pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。
    pillar更加适合在配置管理中运用。

1.2 声明pillar

- 定义pillar基础目录:
	# vim /etc/salt/master
	pillar_roots:
	  base:
	    - /srv/pillar     ##默认目录
	# mkdir /srv/pillar
- 重启salt-master服务: 如果修改了默认目录需要重启服务
	# /etc/init.d/salt-master restart

在这里插入图片描述

在这里插入图片描述

1.3 自定义pillar

- # vim /srv/pillar/top.sls
	base:
	  '*':
	    - packages
	# vim /srv/pillar/packages.sls
	{% if grains['fqdn'] == 'server3' %}
	package: httpd
	{% elif grains['fqdn'] == 'server2' %}
	package: mairadb
	{% endif %}

- 刷新pillar数据:
	# salt '*' saltutil.refresh_pillar
- 查询pillar数据:
	# salt '*' pillar.items     ##查询所有项不需要刷新
	# salt '*' pillar.item  roles      ##查询单一项需要刷新一下
[root@server1 pillar]# mkdir /srv/pillar
[root@server1 pillar]# cd /srv/pillar/
[root@server1 pillar]# vim package.sls
[root@server1 pillar]# cat package.sls 
{% if grains['fqdn'] == 'server3' %}
package: httpd
{% elif grains['fqdn'] == 'server2' %}
package: mairadb
{% endif %}
[root@server1 pillar]# vim top.sls
[root@server1 pillar]# cat top.sls 
base:
  '*':
    - package
[root@server1 pillar]# salt '*' pillar.items

[root@server1 pillar]# salt '*' saltutil.refresh_pillar
[root@server1 pillar]# salt '*' pillar.item  package

在这里插入图片描述

在这里插入图片描述
全部匹配直接成功
在这里插入图片描述
单一匹配刷新之后匹配成功
在这里插入图片描述

1.4 pillar数据匹配

- 命令行中匹配:
	# salt -I 'package:httpd' test.ping
- state系统中使用:(直接看下图例子)

1.4.1 命令行中匹配

[root@server1 pillar]# salt -I 'package:httpd' test.ping ##pillar是参数大写I
server3:
    True

在这里插入图片描述

1.4.2 state系统中使用

[root@server1 pillar]# vim package.sls 
[root@server1 pillar]# cat package.sls 
{% if grains['fqdn'] == 'server3' %}
package: httpd
{% elif grains['fqdn'] == 'server2' %}
port: 80
bind: 172.25.13.2
{% endif %}

[root@server1 pillar]# cd ../salt/apache/
[root@server1 apache]# ls
files  init.sls
[root@server1 apache]# vim init.sls 
[root@server1 apache]# vim files/httpd.conf 

[root@server1 apache]# salt server2 state.sls apache

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
此处的变量是使用pillar中的变量
在这里插入图片描述
在这里插入图片描述
此处的变量是使用apache.sls中的
在这里插入图片描述
在这里插入图片描述

1.5 Jinja模板使用方式

- import方式,可在state文件之间共享:
	定义变量文件:
	# vim lib.sls
	{% set port = 80 %}
	导入模板文件:
	# vim httpd.conf
	{% from 'lib.sls' import port %}   ##导入模板内容
	...
	Listen {{ prot }}	
[root@server1 srv]# cd salt/apache/
[root@server1 apache]# ls
files  init.sls
[root@server1 apache]# pwd
/srv/salt/apache
[root@server1 apache]# vim lib.sls   ##编写模板文件
[root@server1 apache]# cat lib.sls   ##模板文件内容
{%  set port = 8080 %}
[root@server1 apache]# ls
files  init.sls  lib.sls
[root@server1 apache]# cd files/ 
[root@server1 files]# ls
httpd.conf  index.html
[root@server1 files]# vim httpd.conf  ##导入模板文件内容,模板文件优先级更高
[root@server1 files]# cd ..
[root@server1 apache]# vim init.sls   ##设置pillar的端口变量,为了比较哪个优先级高
[root@server1 apache]# salt server2 state.sls apache ##同步

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
此处init.sls中的变量port是下面文件中的port值
在这里插入图片描述

在这里插入图片描述
执行同步查看结果
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. keepalived

2.1 将端口转换成80,方便实验

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 配置keepalived+pillar

[root@server1 salt]# cat top.sls 
base:
  'roles:apache':
    - match: grain
    - apache
    - keepalived
  'roles:nginx':
    - match: grain
    - nginx
    - keepalived


[root@server1 salt]# ls
apache  _grains  keepalived  _modules  nginx  test.sls  top.sls
[root@server1 salt]# cd keepalived/   ##keepalived是建立的一个模块
[root@server1 keepalived]# cat 
files/    init.sls  
[root@server1 keepalived]# cat init.sls     ##初始化文件内容
kp-install:
  pkg.installed:
    - name: keepalived
  file.managed:
    - name: /etc/keepalived/keepalived.conf
    - source: salt://keepalived/files/keepalived.conf
    - template: jinja
    - context:
      STATE: {{ pillar['state'] }}
      VRID: {{ pillar['vrid'] }}
      PRI: {{ pillar['pri'] }}
  service.running:
    - name: keepalived
    - enable: true
    - reload: true
    - watch:
      - file: kp-install



[root@server1 keepalived]# cd files/
[root@server1 files]# ls
keepalived.conf
[root@server1 files]# cat keepalived.conf   ##模板文件内容
! 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_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state {{ STATE }}
    interface eth0
    virtual_router_id {{ VRID }}
    priority {{ PRI }}
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	172.25.13.100
    }
}

[root@server1 files]# salt '*' state.highstate   ##高级推

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试master和backup
在这里插入图片描述
在这里插入图片描述

3. zabbix+pillar

3.2 配置zabbix服务端

3.2.1 配置仓库文件(主要是zabbix的各种依赖)

[root@server1 zabbix-server]# pwd
/srv/salt/zabbix-server
[root@server1 salt]# mkdir zabbix-server
[root@server1 salt]# cd zabbix-server/
[root@server1 zabbix-server]# mkdir files
[root@server1 zabbix-server]# cd files/

[root@server1 zabbix-server]# vim init.sls

在这里插入图片描述
下图中是配置server2这个服务端的yum源
可以将所需要的依赖的rpm包都放到一个文件夹中,我是放到了主机250的4.0下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.2.2 整体配置

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

[root@server1 zabbix-server]# cat init.sls 
zabbix-server:
  pkgrepo.managed:
    - name: zabbix
    - humanname: zabbix 4.0
    - baseurl: http://172.25.13.250/zabbix/4.0
    - gpgcheck: 0
  pkg.installed:
    - pkgs:
      - zabbix-server-mysql
      - zabbix-agent
      - zabbix-web-mysql
  file.managed:
    - name: /etc/zabbix/zabbix_server.conf
    - source: salt://zabbix-server/files/zabbix_server.conf
  service.running:
    - name: zabbix-server
    - enable: true
    - watch:
      - file: zabbix-server

zabbix-agent:
  service.running

zabbix-web:
  file.managed:
    - name: /etc/httpd/conf.d/zabbix.conf
    - source: salt://zabbix-server/files/zabbix.conf
  service.running:
    - name: httpd
    - enable: true
    - watch:
      - file: zabbix-web

/etc/zabbix/web/zabbix.conf.php:
  file.managed:
    - source: salt://zabbix-server/files/zabbix.conf.php

配置所有的模板文件,都可以通过init.sls文件一步一步执行,然后去受控主机获取配置文件。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置登陆web界面的初始文件
在这里插入图片描述

在这里插入图片描述

模板文件修改完成后,现在开始执行init.sls文件
在这里插入图片描述

在这里插入图片描述
测试效果

在这里插入图片描述
在这里插入图片描述

3.1 独立配置数据库(模拟生产环境)

[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# mkdir mysql 
[root@server1 salt]# cd mysql 
[root@server1 mysql]# ls
files  init.sls
[root@server1 mysql]# cd files/
[root@server1 files]# ls
create.sql  my.cnf     ##所需要的模板文件,可以一步一步运行init.sls,然后通过scp获取,create.sql通过server2获取,my.cnf通过server3获取。
[root@server1 files]# 

[root@server1 mysql]# vim init.sls
[root@server1 mysql]# cat init.sls 
mysql-install:
  pkg.installed:
    - pkgs:
      - mariadb-server
      - MySQL-python
  file.managed:
    - name: /etc/my.cnf
    - source: salt://mysql/files/my.cnf
  service.running:
    - name: mariadb
    - enable: true
    - watch:
      - file: mysql-install

mysql-config:
  mysql_database.present:
    - name: zabbix
  mysql_user.present:
    - name: zabbix
    - host: '%'
    - password: "westos"
  mysql_grants.present:
    - grant: all privileges
    - database: zabbix.*
    - user: zabbix
    - host: '%'
  file.managed:
    - name: /mnt/create.sql
    - source: salt://mysql/files/create.sql
  cmd.run:
    - name: mysql zabbix < /mnt/create.sql && touch /mnt/zabbix.lock
    - creates: /mnt/zabbix.lock

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
从server2上面拷贝一份数据库初始文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
将server3配置成数据库
在这里插入图片描述
真机测试数据库

在这里插入图片描述

3.3 通过top文件执行

[root@server1 salt]# vim top.sls 
[root@server1 salt]# cat top.sls 
base:
  'roles:apache':
    - match: grain
    - apache
    - keepalived
    - zabbix-server
  'roles:nginx':
    - match: grain
    - nginx
    - keepalived
    - mysql
[root@server1 salt]# salt '*' state.highstate

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Studying!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值