一、简介

saltstack是一个配置管理系统,能够维护预定义状态的远程节点。
saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。
saltstack是运维人员提高工作效率、规范业务配置与操作的利器。
Salt的核心功能

  • 使命令发送到远程系统是并行的而不是串行的
  • 使用安全加密的协议
  • 使用最小最快的网络载荷
  • 提供简单的编程接口
    Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。
Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口

二、安装

官网

1.设置官方YUM仓库:

从官方网站下载yum源 仓库地址

[root@server1~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-3000.el7.noarch.rpm

注意:由于官网下载速度太慢了,所以我将地址换成了阿里云的,下载速度快

[salt-3000]
name=SaltStack 3000 Release Channel for Python 2 RHEL/Centos $releasever
baseurl=https://mirrors.aliyun.com/saltstack/yum/redhat/7/$basearch/3000
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key, file:///etc/pki/rpm-gpg/centos7-signing-key

2.安装salt-master

这里我用server1作为master

[root@server1 ~]# yum install salt-master.noarch -y           #安装master端
[root@server1 ~]# systemctl enable --now salt-master.service       #设置master自启动

3.安装并配置salt-minion

server2和server3作为minion

[root@server2 salt]# yum install -y salt-minion.noarch -y          #安装minion端
[root@server2 ~]# vim  /etc/salt/minion  指定到master的ip
master 172.25.3.1
[root@server2 salt]# systemctl enable --now salt-minion.service
[root@server3 ~]# yum install salt-minion.noarch -y
[root@server2 ~]# vim  /etc/salt/minion  指定到master的ip
master 172.25.3.1
[root@server3 ~]# systemctl enable --now salt-minion.service

4.master端执行命令允许minion连接

[root@server1 yum.repos.d]# salt-key -L   查询
[root@server1 yum.repos.d]# salt-key -A    给两个minion  key


  • 查看端口连接情况
  • 详细查看进程信息
[root@server1 ~]# yum install python-setproctitle.x86_64 -y
[root@server1 ~]# systemctl restart salt-master.service

  • 查看端口连接情况
[root@server1 ~]# yum install lsof -y
[root@server1 ~]# lsof -i :4505

5.master端测试与minion端的连接

[root@server1 ~]# salt '*' test.ping

[root@server1 ~]# salt '*' cmd.run hostname

[root@server1 ~]# salt '*' cmd.run "ip addr"

三、saltstack远程执行

1.远程执行shell命令

  • Salt命令由三个主要部分构成:
    salt ‘’ [arguments]
    target: 指定哪些minion, 默认的规则是使用glob匹配minion id.
    salt ‘*’ test.ping
    Targets也可以使用正则表达式:
    salt -E ‘server[1-3]’ test.ping
    Targets也可以指定列表:
    salt -L ‘server2,server3’ test.ping

  • funcation是module提供的功能,Salt内置了大量有效的functions.
    salt ‘*’ cmd.run ‘uname -a’
    arguments通过空格来界定参数:
    salt ‘server2’ sys.doc pkg #查看模块文档
    salt ‘server2’ pkg.install httpd
    salt ‘server2’ pkg.remove httpd
    salt内置的执行模块列表:
    执行模块网址
    按Ctrl+F搜索你需要的模块

  • 命令行执行

[root@server1 ~]# salt server2 pkg.install httpd
[root@server1 ~]# salt 'server2' service.start httpd


查看server2是否成功安装上

开启服务

2.配置管理

编辑master配置文件:

[root@server1 ~]# vim /etc/salt/master

默认位置,不用修改

因为没有salt目录,所以需要手动创建

[root@server1 ~]# cd /srv/
[root@server1 srv]# mkdir salt
[root@server1 salt]# mkdir apache
[root@server1 salt/]# cd apache

创建一个sls文件:
注意缩进

#vim /srv/salt/apache.sls
httpd:                  # ID声明pkg:                      # 状态声明- installed               # 函数声明
  • 下载服务,编写发布文件,启动服务
[root@server1 apache]# vim install.sls
apache:pkg.installed:- pkgs:- httpd- php- php-mysqlfile.managed:- source: salt://apache/files/index.html- name: /var/www/html/index.htmlservice.running:- name: httpd
[root@server1 apache]# mkdir files
[root@server1 apache]# vim files/index.html
server2
  • 指定主机执行:
[root@server1 ~]# salt server2 state.sls apache.install
  • 执行过程

    查看是否执行成功
  • 在受控主机查看刚才的执行缓存信息
[root@server2 ~]# cd /var/cache/salt
[root@server2 salt]# tree .


查看文件内容是否发生变化

[root@server1 salt]# cd apache/
[root@server1 apache]# ls
files  install.sls
[root@server1 apache]# cd files/
[root@server1 files]# md5sum index.html
serve2
01bc6b572ba171d4d3bd89abe9cb9a4c  index.html
[root@server1 files]# md5sum index.html
01bc6b572ba171d4d3bd89abe9cb9a4c  index.html
[root@server1 files]# vim index.html
server2
server2
[root@server1 files]# md5sum index.html
e8e59ffc293de1e3388b4a5d903707a1  index.html

3.同时修改两个配置文件

  • 第一种书写方式
[root@server1 apache]# vim install.sls
apache:pkg.installed:- pkgs:- httpd- php- php-mysqlfile.managed:- source: salt://apache/files/index.html- name: /var/www/html/index.htmlservice.running:- name: httpd- enable: true- reload: true- watch:                                   - file: /etc/httpd/conf/httpd.conf/etc/httpd/conf/httpd.conf:file.managed:- source: salt://apache/files/httpd.conf

注意 watch 为触发,监控当配置文件发生改变时,会重启服务

  • 第二种编写方式
apache:pkg.installed:- pkgs:- httpd- php- php-mysqlfile.managed:- source: salt://apache/files/httpd.conf- name: /etc/httpd/conf/httpd.confservice.running:- name: httpd- enable: true- reload: true- watch:- file: apache

执行

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


Salt 状态系统的核心是SLS,或者叫SaLt State 文件。
SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件命名:
sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。
使用子目录来做组织是个很好的选择。
init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以apache/init.sls 就是表示apache.
如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.

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

4.创建模块目录:

[root@server1 salt]# mkdir /srv/salt/_modules
[root@server1 salt]# cd  _modules/

5.编写模块文件:

[root@server1 _modules]# vim mydisk.py
def df():return __salt__['cmd.run']('df -h')
[root@server1 _modules]# salt server2 saltutil.sync_modules     ## 同步模块
  • 在受控主机上查看模块是否同步成功
  • 执行测试模块
[root@server1~] # salt server2 mydisk.df

四、grains

1.简介

Grains是SaltStack的一个组件,存放在SaltStack的minion端。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。
由于grains是静态数据,因此不推荐经常去修改它。
应用场景:

  • 信息查询,可用作CMDB。
  • 在target中使用,匹配minion。
  • 在state系统中使用,配置管理模块。

(一)信息查询

[root@server1 _modules]# salt server2 grains.ls


(二)查看每一项的值:

[root@server1 _modules]#  salt server2 grains.items


(三)取单项的值:

[root@server1 _modules]# salt server2 grains.item ipv4

[root@server1 _modules]# salt server2 grains.item fqdn

2.自定义grains项

第一种方法

  • 在minion 端 /etc/salt/minion中定义:
    重启salt-minion,否则数据不会更新:
[root@server2 salt]# vim /etc/salt/minio
[root@server2 salt]# systemctl restart salt-minion.service


第二种方法

  • 在minion 端/etc/salt/grains中定义:
[root@server3 ~]# vim /etc/salt/grains
roles:- nginx
  • 查看grains项
[root@server1 salt]# salt server2 grains.item roles

  • 同步数据:
[root@server1 salt]# salt server3 saltutil.sync_grains
[root@server1 salt]# salt '*' grains.item roles

3.编写grains模块

在salt-master端创建_grains目录:

[root@server1 ~]# mkdir  /srv/salt/_grains
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# cd _grains/
[root@server1 _grains]# ls
[root@server1 _grains]# vim mygrains.py
def my_grain():grains = {}grains['salt'] = 'stack'grains['hello'] = 'world'return grains测试
[root@server1 _grains]# salt '*' grains.item salt
[root@server1 _grains]# salt '*' grains.item hello
[root@server1 _grains]# salt '*' saltutil.sync_grains          #同步grains到minion端


在minion端查看缓存,查看grains是否生效

[root@server2 ~]# cd /var/cache/salt/
[root@server2 salt]# tree

4.grains匹配运用

  • 在target中匹配minion:
# salt -G roles:apache cmd.run hostname
  • 在top文件中匹配

在serve2部署apache在server3部署nginx
一步一步来

[root@server1 salt]# vim top.sls
base:'roles:apache':- match: grain- apache'roles:nginx':- match: grain- nginx
[root@server1 salt]# mkdir nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# vim init.sls
nginx:file.managed:- source: salt://nginx/files/nginx-1.18.0.tar.gz- name: /mnt/nginx-1.18.0.tar.gz
[root@server1 nginx]# mkdir files
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.18.0.tar.gz

链接:nginx包 提取码: 6kk2

  • 批量执行:
[root@server1 salt]# salt '*' state.highstate



验证:
在server3:/mnt 上查看是否有nginx包

  • 配置两个服务完整版的运行脚本
  • 下载服务部分
[root@server1 nginx]# vim install.sls
nginx-install:pkg.installed:- pkgs:- gcc- pcre-devel- openssl-develfile.managed:- source: salt://nginx/files/nginx-1.18.0.tar.gz- name: /mnt/nginx-1.18.0.tar.gzcmd.run:- name: cd /mnt && tar zxf nginx-1.18.0.tar.gz && cd nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --with-http_ssl_module &> /dev/null && make &> /dev/null && make install &> /dev/null- creates: /usr/local/nginx
  • 修改配置文件部分
[root@server1 nginx]# vim init.sls
include:- nginx.install/usr/local/nginx/conf/nginx.conf:file.managed:- source: salt://nginx/files/nginx.confnginx-service:user.present:- name: nginx- shell: /sbin/nologin- home: /usr/local/nginx- createhome: falsefile.managed:- source: salt://nginx/files/nginx.service- name: /usr/lib/systemd/system/nginx.serviceservice.running:- name: nginx- enable: true- reload: true- watch:- file: /usr/local/nginx/conf/nginx.conf
[root@server1 nginx]# cd files/     ##确保files底下有这三个文件,先执行,失败后直接从server3里面找
nginx-1.18.0.tar.gz  nginx.conf  nginx.service

链接: nginx.server提取码: s6w7

  • 批量执行:
[root@server1 files]# salt '*' state.highstate


查看服务是否成功安装并运行

五、Jinja模板

1.简介

Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作。
通过jinja模板可以为不同服务器定义各自的变量。
两种分隔符: {% … %} 和 {{ … }},前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上。

2.jinja模板的适用方法

Jinja最基本的用法是使用控制结构包装条件:

[root@server1 salt]# vim test.sls
/mnt/testfile:file.append:{% if grains['fqdn'] == 'server2' %}- text: server2{% elif grains['fqdn'] == 'server3' %}- text: server3{% endif %}
  • 执行测试
[root@server1 salt]# salt '*' state.sls test


验证:去查看/mnt 下有没有文件生成

2.使用jinja模板实现apache的配置

  • 编写默认发布文件 内含系统版本,主机名
[root@server1 files]# vim index.html
{{ grains['os'] }} - {{ grains['fqdn'] }}
{{ NAME }}
  • 修改httpd配置文件端口号
[root@server1 files]# vim httpd.conf
#Listen 12.34.56.78:80
Listen {{ bind }}:{{ port }}

  • 编写执行文件
[root@server1 apache]# vim init.sls
apache:pkg.installed:- pkgs:- httpd- php- php-mysqlfile.managed:- source: salt://apache/files/httpd.conf- name: /etc/httpd/conf/httpd.conf- template: jinja- context:port: 80bind: {{ grains['ipv4'][-1] }}service.running:- name: httpd- enable: true- reload: true- watch:- file: apache
/var/www/html/index.html:file.managed:- source: salt://apache/files/index.html- template: jinja- context:NAME: server2
  • 执行
[root@server1 apache]# salt server2 state.sls apache

验证:curl 172.25.3.2:80


六、pillar

1.pillar简介

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

2.声明pillar

  • 默认就是此目录,不用做任何修改
[root@server1 ~]#  vim /etc/salt/master
pillar_roots:base:- /srv/pillar
  • 需要自己手动建立目录
[root@server1 ~]# mkdir /srv/pillar

3.自定义pillar项

[root@server1 pillar]# vim top.sls
base:'*':- package
[root@server1 pillar]# vim package.sls
{% if grains['fqdn'] == 'server3' %}
package: nginx
{% elif grains['fqdn'] == 'server2' %}
paceage: apache
{% endif %}
  • 刷新pillar数据:
[root@server1 pillar]# salt '*' saltutil.refresh_pillar

  • 查询pillar数据:
[root@server1 pillar]# salt '*' pillar.items
[root@server1 pillar]# salt '*' grains.item  roles


测试
加入pillar

[root@server1 pillar]# vim package.sls
{% if grains['fqdn'] == 'server3' %}
package: nginx
{% elif grains['fqdn'] == 'server2' %}
port: 8080
bind: 172.25.3.2
{% endif %}
  • 修改执行文件,引用pillar
[root@server1 apache]# vim init.sls
apache:pkg.installed:- pkgs:- httpd- php- php-mysqlfile.managed:- source: salt://apache/files/httpd.conf- name: /etc/httpd/conf/httpd.conf- template: jinja- context:port: {{ pillar['port'] }}bind: {{ grains['ipv4'][-1] }}service.running:- name: httpd- enable: true- reload: true- watch:- file: /etc/httpd/conf/httpd.conf
/var/www/html/index.html:file.managed:- source: salt://apache/files/index.html- template: jinja- context:NAME: server2

  • 执行
[root@server1 pillar]# salt server2 state.sls apache


import方式,可在state文件之间共享:

[root@server1 ~]# cd /srv/salt/apache/
[root@server1 apache]# ls
files  init.sls  lib.sls
定义变量文件:
[root@server1 apache]# vim lib.sls
{% set port = 80 %}
导入模板文件:
[root@server1 apache]# vim files/httpd.conf
{% from 'apache/lib.sls' import port %}

加到配置文件最上面

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

七、自动部署keepalived

1.定义pillar值

[root@server1 pillar]# vim package.sls
{% if grains['fqdn'] == 'server3' %}
package: nginx
state: BACKUP
vrid: 54
pri: 50
{% elif grains['fqdn'] == 'server2' %}
port: 80
bind: 172.25.3.2
state: MASTER
vrid: 54
pri: 100
{% endif %}

2.创建sls文件

[root@server1 salt]# mkdir keepalived/files/ -p
[root@server1 salt]# cd keepalived/
[root@server1 keepalived]# vim init.sls
kp-install:pkg.installed:- name: keepalivedfile.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

3.修改jinja模板

[root@server1 keepalived]# cd files/
[root@server1 files]# ls
keepalived.conf
[root@server1 files]# vim keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalived@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state {{ STATE }}interface eth0virtual_router_id {{ VRID }}priority {{ PRI }}advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.3.100}
}

4.准备Top文件:

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

注意需要将干刚才模板httpd的配置文件中的[bind]去掉,要不然访问不到结果

5.批量执行:

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

运行结果

vip已经成功加上

测试:
在真机上访问vip,查看返回值

[root@zhenji Desktop]# curl 172.25.3.100


测试高可用

[root@server2 ~]# systemctl stop keepalived.service
[root@zhenji Desktop]# curl 172.25.3.100

当server2的keepalived关了之后,再次访问172.25.3.100,就会跳到备用server3的nginx的默认发布页面

八、自动化部署zabbix

1.server3上安装 mariadb

[root@server1 salt]# mkdir mysql/files/ -p
[root@server1 salt]# cd mysql/
[root@server1 mysql]# vim init.sls
mysql-install:pkg.installed:- pkgs:- mariadb-server- MySQL-pythonfile.managed:- name: /etc/my.cnf- source: salt://mysql/files/my.cnfservice.running:- name: mariadb- enable: true- watch:- file: mysql-installmysql-config:mysql_database.present:- name: zabbixmysql_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.sqlcmd.run:- name: mysql zabbix < /mnt/create.sql && touch /mnt/zabbix.lock- creates: /mnt/zabbix.lock

file 目录下需要的两个配置文件

[root@server1 files]# gunzip create.sql.gz    ##这里需要手动解压
[root@server1 files]# tree
├── create.sql
└── my.cnf
0 directories, 2 files
[root@server1 files]# vim my.cnf
log-bin=mysql-bin     ##开启二进制日志
character-set-server=utf8          ##mysql默认需要的字符类型

2.server2上安装zabbix-server zabbix-agent zabbix-web

[root@server1 salt]# mkdir zabbix-server/
[root@server1 salt]# cd zabbix-server/
[root@server1 zabbix-server]# vim init.sls
zabbix-server:pkgrepo.managed:- name: zabbix- humanname: zabbix 4.0- baseurl: http://172.25.254.250/pub/docs/zabbix/4.0- gpgcheck: 0pkg.installed:- pkgs:- zabbix-server-mysql- zabbix-agent- zabbix-web-mysqlfile.managed:- name: /etc/zabbix/zabbix_server.conf- source: salt://zabbix-server/files/zabbix_server.confservice.running:- name: zabbix-server- enable: true- watch:- file: zabbix-serverzabbix-agent:service.runningzabbix-web:file.managed:- name: /etc/httpd/conf.d/zabbix.conf- source: salt://zabbix-server/files/zabbix.confservice.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

圈出来的文件在初始化完成之后才会出现,不用修改

/etc/zabbix/web
zabbix.conf.php
cd /usr/share/doc/zabbix-server-mysql-4.0.5/
create.sql.gz

[root@server2 conf.d]# scp zabbix.conf server1:/srv/salt/zabbix-server/files

zabbix.conf修改时区

zabbix_server.conf 修改DBHost DBpassword

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

执行完之后会出现一个报错,这是因为缺少一个文件,初始化完成之后才会生成

172.25.3.2/zabbix




从server2中拿到

[root@server2 ~]# cd /etc/zabbix/web/
[root@server2 web]# ls
maintenance.inc.php  zabbix.conf.php
[root@server2 web]# scp zabbix.conf.php server1:/srv/salt/zabbix-server/files


当我们再次执行之后就不会出现报错,到这个zabbix安装配置完成

九、JOB管理

1.Job简介

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

2.默认JOB CACHE

Job缓存默认保存24小时:

#vim /etc/salt/master
keep_jobs: 24master端Job缓存目录:
/var/cache/salt/master/jobs

3.把Job存储到数据库

[root@server1 salt]# yum install mariadb-server.x86_64 -y
[root@server1 salt]# systemctl start mariadb.service
[root@server1 salt]# yum install -y MySQL-python.x86_64                          ##需要的依赖性

(一)老版本,需要从minion端传到master,不推荐使用

[root@server3 ~]# vim /etc/salt/minion
mysql.host: '172.25.3.1'
mysql.user: 'salt'
mysql.pass: 'westos'
mysql.db: 'salt'
mysql.port: 3306
[root@server3 ~]# systemctl restart salt-minion.service

[root@server1 ~]# salt ‘server3’ mydisk.df

[root@server1 ~]# mysql
MariaDB [(none)]> grant all on salt.* to salt@'%' identified by 'westos';
MariaDB [(none)]> use salt;
MariaDB [salt]> select * from salt_returns;

(二)新版本,直接从master端传到数据库

[root@server1 salt]# vim /etc/salt/master
master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'westos'
mysql.db: 'salt'
mysql.port: 3306systemctl restart salt-master
[root@server1 ~]# vim salt.sql
CREATE DATABASE  `salt`DEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;USE `salt`;--
-- Table structure for table `jids`
--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;--
-- Table structure for table `salt_returns`
--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;--
-- Table structure for table `salt_events`
--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;

往数据库中导入sql语句

[root@server1 ~]# mysql < salt.sql

测试: 执行一条命令,进入数据库查看是否记录在数据库

[root@server1 ~]# salt '*' mydisk.df

进入数据库查看是否有刚才执行的命令

[root@server1 ~]# mysql
MariaDB [(none)]> grant all on salt.* to salt@'localhost' identified by 'westos';
MariaDB [(none)]> use salt;
MariaDB [salt]> select * from salt_returns;

十、salt-ssh 备用

1.salt-ssh简介

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

2.安装配置salt-ssh

[root@server1 ~]# yum install salt-ssh.noarch -y
[root@server1 ~]# cd /etc/salt/
[root@server1 salt]# vim roster
server2:host: 172.25.3.2user: rootpasswd: westos
[root@server2 web]# systemctl stop salt-minion.service

测试:

十一、salt-syndic

1.salt-syndic简介

如果大家知道zabbix proxy的话那就很容易理解了,syndic其实就是个代理,隔离master与minion。
Syndic必须要运行在master上,再连接到另一个topmaster上。
Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。
topmaster并不知道有多少个minion。
syndic与topmaster的file_roots和pillar_roots的目录要保持一致。

2.salt-syndic配置

这里我们需要配置一台新的虚拟机:server4作为顶级master

[root@server4 ~]# yum install -y salt-master
[root@server4 ~]# vim /etc/salt/master
order_masters: True
[root@server4 ~]# systemctl enable --now salt-master.service

  • server1安装配置
[root@server1 salt]# yum install -y salt-syndic.noarch
[root@server1 salt]# systemctl enable --now salt-syndic.service
[root@server1 salt]# vim /etc/salt/master
syndic_master: 172.25.3.4
[root@server1 salt]# systemctl restart salt-master.service

[root@server4 ~]# salt-key -L
[root@server4 ~]# salt-key -A


测试:

saltstack 自动化运维管理相关推荐

  1. 七天学会SALTSTACK自动化运维 (3)

    七天学会SALTSTACK自动化运维 (3) 导读 SLS TOP.SLS MINION选择器 SLS文件的编译 总结 参考链接 导读 SLS SLS (aka SaLt State file) 是 ...

  2. saltstack自动化运维部署--安装apache\原码安装nginx服务

    对saltstack自动化运维部署的认识 原理 SaltStack 是一种基于 C/S 架构的服务器基础架构集中化管理平台,管理端称为 Master,客户端称为 Minion.SaltStack 具备 ...

  3. SaltStack 自动化运维详解

    一.自动化运维工具对比 使用所需软件配置单个服务器是一项相当简单的任务. 但是,如果许多服务器需要安装相同或相似的软件和配置,则该过程将需要大量的工时才能完成,这会耗尽您本已紧张的资源.如果没有某种形 ...

  4. SaltStack自动化运维(一)——简介与架构解析

    前言 SaltStack是一种新型的基础设施管理软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位. SaltStack提供了一个动态基础设施通信总线用于 ...

  5. puppet、Ansible、SaltStack 自动化运维工具简单对比

    puppet: 有产品线已经在用,优点是历史悠久,比较成熟,在可远程可本地,功能强劲,不过这厮批量执行功能没得,为了批量执行个命令写个配置文件,好像有点大刀砍蚊子腿的感觉了,而且有客户端在,和授权系统 ...

  6. Saltstack自动化运维详解(数据系统 jinja模板 job管理)

    文章目录 1. saltstack 的数据系统 1.1 SaltStack组件之Grains 1.grains使用方法 信息查询 查询某个key值 用Grains来匹配minion 2.自定义grai ...

  7. SaltStack自动化运维(三)——Grains与Pillar组件

    前言 Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等, ...

  8. 部署 SaltStack 自动化运维工具,并简易批量安装 httpd 服务

    SaltStack 介绍 SaltStack 是一个基于 Python 开发的一套架构配置管理工具,采用 C/S模式,server端就是salt的master,client端就是minion,mini ...

  9. saltstack自动化运维(大规模使用)(一)---C/S架构grainsjinja

    saltstack 1.saltstack(C/S架构)安装与配置 1.1 master端安装 1.2 一主两从的搭建 1.3 查看salt master进程的详细信息 1.4 minion_id的状 ...

最新文章

  1. Linux命令grep
  2. Android自定义ScrollView
  3. Spring mvc 3.0 入门及应用
  4. Python(88)_双下划线方法
  5. DM入门之Apriori小结
  6. JavaScript操作大全整理(思维导图三--函数基础)
  7. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
  8. Haskell生成数字的LED字符形式
  9. Centos查看系统版本
  10. 十六进制转换成二进制matlab,在matlab中十六进制到二进制和十进制
  11. C 语言绝对值函数abs实现技巧
  12. 【小程序】rpx(responsive pixel)自适应像素浅析
  13. vue项目html5调取手机摄像头录像并上传
  14. luogu P1069 细胞分裂
  15. java给word表格追加行_Java 使用Spire.Cloud.Word给Word文档添加表格
  16. 英特尔超级计算机显卡,美国公布首台百亿亿次超级计算机!用上Intel Xe独立显卡...
  17. 硅谷创业天堂的启示!
  18. 面试必备之Mysql索引底层原理分析
  19. 详解Flink中yarn部署模式以及测试
  20. php pdo 方法,PHP之pdo操作数据库

热门文章

  1. c++ 输出二进制_【位运算与状态压缩】二进制的魅力
  2. python 读取json转为docx_在Python中进行JSON转化
  3. 泊松分布的分布函数_常见概率分布汇总
  4. c3p0 高并发mysql 连接sleep情况
  5. python中time库是什么意思_python中time库的time.time()函数的作用是什么
  6. 罗斯蒙特电磁流量计8723说明书_罗斯蒙特8712和8732E电磁流量计变送器的功能规格...
  7. python2安装mysql-python报错(以后直接安装pymysl就行)
  8. 在Jenkins中获取GitHub对应Repository的Resource Code
  9. Centos7下vim最新版本安装
  10. 直流电机基本系统模型