2024年最新saltstack 自动化运维管理_saltstack highstate的执行日志,字节Linux运维面试必问

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120150114643.png)  
 第二种方法


* 在minion 端/etc/salt/grains中定义:



[root@server3 ~]# vim /etc/salt/grains
roles:

  • nginx

* 查看grains项



[root@server1 salt]# salt server2 grains.item roles


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120150055172.png)


* 同步数据:



[root@server1 salt]# salt server3 saltutil.sync_grains
[root@server1 salt]# salt ‘*’ grains.item roles


![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012015111379.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


### 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端


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120151436791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 在minion端查看缓存,查看grains是否生效



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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120151654768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


### 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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120154405135.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120154419703.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 验证:  
 在server3:/mnt 上查看是否有nginx包  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120154650222.png)


* 配置两个服务完整版的运行脚本
* 下载服务部分



[root@server1 nginx]# vim install.sls
nginx-install:
pkg.installed:
- pkgs:
- gcc
- pcre-devel
- openssl-devel
file.managed:
- source: salt://nginx/files/nginx-1.18.0.tar.gz
- name: /mnt/nginx-1.18.0.tar.gz
cmd.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.conf

nginx-service:
user.present:
- name: nginx
- shell: /sbin/nologin
- home: /usr/local/nginx
- createhome: false
file.managed:
- source: salt://nginx/files/nginx.service
- name: /usr/lib/systemd/system/nginx.service
service.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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120164355400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 查看服务是否成功安装并运行  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120164335722.png)


## 五、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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120174601495.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 验证:去查看/mnt 下有没有文件生成  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120174636424.png)


### 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 }}


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122103703873.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


* 编写执行文件



[root@server1 apache]# vim init.sls
apache:
pkg.installed:
- pkgs:
- httpd
- php
- php-mysql

file.managed:
- source: salt://apache/files/httpd.conf
- name: /etc/httpd/conf/httpd.conf
- template: jinja
- context:
port: 80
bind: {{ 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  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122110050797.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121093238885.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012110085145.png)


## 六、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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122112701817.png)


* 查询pillar数据:



[root@server1 pillar]# salt ‘’ pillar.items
[root@server1 pillar]# salt '
’ grains.item roles


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122112807206.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 测试  
 加入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-mysql

file.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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122122917413.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


* 执行



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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121095313502.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 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 %}


加到配置文件最上面  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122130526579.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


* 执行



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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121102359465.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 七、自动部署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: 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


### 3.修改jinja模板



[root@server1 keepalived]# cd files/
[root@server1 files]# ls
keepalived.conf
[root@server1 files]# vim 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.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]去掉,要不然访问不到结果  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121112138751.png)


### 5.批量执行:



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


运行结果  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121111915856.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 vip已经成功加上  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121110243363.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 测试:  
 在真机上访问vip,查看返回值



[root@zhenji Desktop]# curl 172.25.3.100


![shi ](https://img-blog.csdnimg.cn/20210121112515678.png)  
 测试高可用



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


当server2的keepalived关了之后,再次访问172.25.3.100,就会跳到备用server3的nginx的默认发布页面  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121130559647.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121112643488.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 八、自动化部署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-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


file 目录下需要的两个配置文件  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121151513505.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122134950649.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)



[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默认需要的字符类型


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122133828288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


### 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: 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


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



/etc/zabbix/web
zabbix.conf.php



cd /usr/share/doc/zabbix-server-mysql-4.0.5/
create.sql.gz


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121150615332.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121151701394.png)



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


zabbix.conf修改时区  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121151758268.png)  
 zabbix\_server.conf 修改DBHost DBpassword  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121152317441.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012115244498.png)



[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


执行完之后会出现一个报错,这是因为缺少一个文件,初始化完成之后才会生成  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135428560.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 172.25.3.2/zabbix  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135500134.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135537363.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135601886.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135616426.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 从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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135742475.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 当我们再次执行之后就不会出现报错,到这个zabbix安装配置完成  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210122135909961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121170222416.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 九、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: 24

master端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,不推荐使用  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121165136621.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)



[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端传到数据库  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121165152288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)



[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: 3306

systemctl restart salt-master



[root@server1 ~]# vim salt.sql
CREATE DATABASE salt
DEFAULT CHARACTER SET utf8
DEFAULT 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),

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

RRENT_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),

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-bmh1Xq6f-1714789521837)]
[外链图片转存中…(img-tEJUVvnI-1714789521838)]
[外链图片转存中…(img-WHcr913X-1714789521838)]
[外链图片转存中…(img-3hlP1Ux2-1714789521838)]
[外链图片转存中…(img-PfL5WIJR-1714789521839)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值