其他分享
首页 > 其他分享> > 自动化运维工具——SaltStack(缓存及节点代理)

自动化运维工具——SaltStack(缓存及节点代理)

作者:互联网

SaltStack

一、安装keepalive

一、pillar调用设置

设置安装模块

vim /srv/pillar/kp.sls

//
{% if grains['fqdn'] == 'server2' %}
state: Master
vrid: 42
pri: 100
{% elif grains['fqdn'] == 'server3' %}
state: BACKUP
vrid: 42
pri: 50
{% endif %}

设置高可用模块

[root@server1 pillar]# ls
kp.sls  pkgs.sls  top.sls
[root@server1 pillar]# vim top.sls 


///
base:
  '*':
    - pkgs
      - kp
//

二、keepalive文件配置

[root@server1 salt] mkdir /etc/salt/keeplived
[root@server1 salt] cd /etc/salt/keeplived
[root@server1 keepalive] vim keepalived.conf 

/
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost                                              修改1
   }

   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1                                         修改2
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict                                                  修改3
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
    
vrrp_instance VI_1 {
    state {{ MASTER }}                                            修改4
    interface eth0
    virtual_router_id {{ VRID  }}                                 修改5
    priority {{ PRI  }}                                           修改6
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.42.100/24                                          修改5
    }
/

安装文件设置

[root@server1 keepalive] vim init.sls


/
kp-install:
  pkg.installed:
    - name: keepalived

  file.managed:
    - name: /etc/keepalived/keepalived.conf
    - source: salt://keepalived/keepalived.conf
    - template: jinja
    - context:
      STATE: {{ pillar['state'] }}
      VRID: {{ pillar['vrid' ]}}
      PRI: {{ pillar['pri'] }}

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

修改top文件

[root@server1 salt]# vim top.sls 

/
base:
  'roles:apache':
    - match: grain
    - apache
    - keepalived
  'roles:nginx':
    - match: grain
    - nginx
    - keepalived
///

在这里插入图片描述

三、测试结果:

[root@server1 salt]# salt '*' state.highstate

在这里插入图片描述

二、job管理

一、前言

缓存产生说明:
1 master在下发指令任务时,会附带上产生的jid。
2 minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。
3 minion服务器在指令执行完毕将结果传送给master后,删除该临时文件。

缓存情况:
master
Job缓存默认保存24小时: vim /etc/salt/master
master端Job缓存目录:/var/cache/salt/master/jobs
minion
缓存地址:var/cache/salt/minion/proc (执行master命令后则会删除调)

二、实验目的

通过两种方法将缓存数据导入到数据库,长久记录缓存
方法一、
minion在将数据返还给master的同时的直接将数据导入到数据库
在这里插入图片描述

方法二、
将数据返还给Master,通过Master再导入数据库
在这里插入图片描述
server1 172.25.42.1 master
server2 172.25.42.2 minion
server3 172.25.42.3 minion

三、实验过程

1.方法一

server2
本实验:minion将数据传给master的同时,也将数据直接导入数据库

vim /etc/salt/minion  设置master的ip等参数
yum search MySQL-python.x86_64  下载导入数据库的python工具

在这里插入图片描述
server1
安装接受数据返还的数据库

yum install mariadb-service 
systemctl start mariadb
mysql_secure_installation 执行mysql初始化

将配置的jobs导入到mysql(或者用直接配置好的文件test.sql)

cd /srv/salt
vim jobs.sql


CREATE DATABASE  `salt`
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;
USE `salt`;
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
  `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


/
mysql -pwestos < job.sql   将job.sql模板导入mysql

查看数据库模板配置

mysql -p
MariaDB [(none)]> show databases;
MariaDB [salt]> show tables;
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';

在这里插入图片描述

测试

salt server2 test.ping --return mysql   图1
salt server2 mydisk.df --return mysql   图2

图1
在这里插入图片描述
图2
在这里插入图片描述
在数据库中查看实验结果

MariaDB [salt]> select * from salt_returns\G;
MariaDB [(none)]> show databases;
MariaDB [salt]> show tables;

在数据库中看到刚才ping的操作
在这里插入图片描述

2.方法二

先将刚才的server2里/etc/salt/minion文件改过的东西注释调

本实验:minion将数据传给master,通过master传给minion

cd /var/cache/salt/master/jobs  进入master里的缓存地址,看到缓存如图1
vim /etc/salt/master 更改配置文件

图1
在这里插入图片描述
图2
在这里插入图片描述
进行授权

mysql -p
MariaDB [(none)]> show databases;
MariaDB [salt]> show tables;
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
MariaDB [(none)]> exit
systemctl restart salt-master
yum search MySQL-python.x86_64  下载导入数据库的python工具

测试方法同方法一,都能在数据库中查看到缓存信息。

三、salt-ssh服务

salt-ssh可以独立运行的,不需要minion端。
salt-ssh 用的是sshpass进行密码交互的。
以串行模式工作,性能下降。
server3
systemctl stop salt-minion

server1

cd /etc/salt/
vim roster 图1
yum install salt-ssh

图1
在这里插入图片描述
测试:
server1

salt-ssh '*' test.ping
salt-ssh '*' mydisk.df

实验结果:当server的salt-minion关闭后仍能获取到
在这里插入图片描述

四、salt-syndic

给master设立一个顶级主机topmaster,其他普通master设定为Syndic节点,因此管理员只需要管理顶级topmaster就能够管理所有的minion服务器
在这里插入图片描述
server4
将此服务器作为topmaster

[root@server4 salt]yum install -y salt-master
[root@server4 salt] cd /etc/salt/
[root@server4 salt] ls
cloud           cloud.maps.d       master    minion.d  proxy.d
cloud.conf.d    cloud.profiles.d   master.d  pki       roster
cloud.deploy.d  cloud.providers.d  minion    proxy
[root@server4 salt] vim master  开启顶级master,如图1
[root@server4 salt] systemctl start salt-master

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

[root@server4 salt] yum install -y salt-master
[root@server4 salt] cd /etc/salt/
[root@server4 salt] ls
cloud           cloud.maps.d       master    minion.d  proxy.d
cloud.conf.d    cloud.profiles.d   master.d  pki       roster
cloud.deploy.d  cloud.providers.d  minion    proxy
[root@server4 salt] vim master                                  开启syndic节点
[root@server4 salt] systemctl start salt-master
[root@server1 salt] systemctl  start salt-syndic.service
[root@server1 salt] systemctl  restart  salt-master.service

在这里插入图片描述
测试:
server4(topmaster)

[root@server4 salt] salt-key -L                         图1
[root@server4 salt] salt-key -A                         图1
[root@server4 salt] salt '*' my_disk.df                 df测试、图2

发现已经连接到了server1(sydic)
图1
在这里插入图片描述
图2
在这里插入图片描述

标签:缓存,运维,minion,salt,server1,server4,master,SaltStack,root
来源: https://blog.csdn.net/weixin_48819467/article/details/118878789