日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

saltstack 自动化运维管理

發(fā)布時(shí)間:2024/9/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 saltstack 自动化运维管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、簡(jiǎn)介

saltstack是一個(gè)配置管理系統(tǒng),能夠維護(hù)預(yù)定義狀態(tài)的遠(yuǎn)程節(jié)點(diǎn)。
saltstack是一個(gè)分布式遠(yuǎn)程執(zhí)行系統(tǒng),用來(lái)在遠(yuǎn)程節(jié)點(diǎn)上執(zhí)行命令和查詢數(shù)據(jù)。
saltstack是運(yùn)維人員提高工作效率、規(guī)范業(yè)務(wù)配置與操作的利器。
Salt的核心功能

  • 使命令發(fā)送到遠(yuǎn)程系統(tǒng)是并行的而不是串行的
  • 使用安全加密的協(xié)議
  • 使用最小最快的網(wǎng)絡(luò)載荷
  • 提供簡(jiǎn)單的編程接口
    Salt同樣引入了更加細(xì)致化的領(lǐng)域控制系統(tǒng)來(lái)遠(yuǎn)程執(zhí)行,使得系統(tǒng)成為目標(biāo)不止可以通過(guò)主機(jī)名,還可以通過(guò)系統(tǒng)屬性。

SaltStack 采用 C/S模式,minion與master之間通過(guò)ZeroMQ消息隊(duì)列通信,默認(rèn)監(jiān)聽(tīng)4505端口。
Salt Master運(yùn)行的第二個(gè)網(wǎng)絡(luò)服務(wù)就是ZeroMQ REP系統(tǒng),默認(rèn)監(jiān)聽(tīng)4506端口

二、安裝

官網(wǎng)

1.設(shè)置官方Y(jié)UM倉(cāng)庫(kù):

從官方網(wǎng)站下載yum源 倉(cāng)庫(kù)地址

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

注意:由于官網(wǎng)下載速度太慢了,所以我將地址換成了阿里云的,下載速度快

[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 #設(shè)置master自啟動(dòng)

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端執(zhí)行命令允許minion連接

[root@server1 yum.repos.d]# salt-key -L 查詢 [root@server1 yum.repos.d]# salt-key -A 給兩個(gè)minion key


  • 查看端口連接情況
  • 詳細(xì)查看進(jìn)程信息
[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端測(cè)試與minion端的連接

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

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

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

三、saltstack遠(yuǎn)程執(zhí)行

1.遠(yuǎn)程執(zhí)行shell命令

  • Salt命令由三個(gè)主要部分構(gòu)成:
    salt ‘’ [arguments]
    target: 指定哪些minion, 默認(rèn)的規(guī)則是使用glob匹配minion id.
    salt ‘*’ test.ping
    Targets也可以使用正則表達(dá)式:
    salt -E ‘server[1-3]’ test.ping
    Targets也可以指定列表:
    salt -L ‘server2,server3’ test.ping

  • funcation是module提供的功能,Salt內(nèi)置了大量有效的functions.
    salt ‘*’ cmd.run ‘uname -a’
    arguments通過(guò)空格來(lái)界定參數(shù):
    salt ‘server2’ sys.doc pkg #查看模塊文檔
    salt ‘server2’ pkg.install httpd
    salt ‘server2’ pkg.remove httpd
    salt內(nèi)置的執(zhí)行模塊列表:
    執(zhí)行模塊網(wǎng)址
    按Ctrl+F搜索你需要的模塊

  • 命令行執(zhí)行

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


查看server2是否成功安裝上

開(kāi)啟服務(wù)

2.配置管理

編輯master配置文件:

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

默認(rèn)位置,不用修改

因?yàn)闆](méi)有salt目錄,所以需要手動(dòng)創(chuàng)建

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

創(chuàng)建一個(gè)sls文件:
注意縮進(jìn)

#vim /srv/salt/apache.sls httpd: # ID聲明pkg: # 狀態(tài)聲明- installed # 函數(shù)聲明
  • 下載服務(wù),編寫發(fā)布文件,啟動(dòng)服務(wù)
[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
  • 指定主機(jī)執(zhí)行:
[root@server1 ~]# salt server2 state.sls apache.install
  • 執(zhí)行過(guò)程

    查看是否執(zhí)行成功
  • 在受控主機(jī)查看剛才的執(zhí)行緩存信息
[root@server2 ~]# cd /var/cache/salt [root@server2 salt]# tree .


查看文件內(nèi)容是否發(fā)生變化

[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.同時(shí)修改兩個(gè)配置文件

  • 第一種書寫方式
[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 為觸發(fā),監(jiān)控當(dāng)配置文件發(fā)生改變時(shí),會(huì)重啟服務(wù)

  • 第二種編寫方式
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

執(zhí)行

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


Salt 狀態(tài)系統(tǒng)的核心是SLS,或者叫SaLt State 文件。
SLS表示系統(tǒng)將會(huì)是什么樣的一種狀態(tài),而且是以一種很簡(jiǎn)單的格式來(lái)包含這些數(shù)據(jù),常被叫做配置管理。
sls文件命名:
sls文件以”.sls”后綴結(jié)尾,但在調(diào)用是不用寫此后綴。
使用子目錄來(lái)做組織是個(gè)很好的選擇。
init.sls 在一個(gè)子目錄里面表示引導(dǎo)文件,也就表示子目錄本身, 所以apache/init.sls 就是表示apache.
如果同時(shí)存在apache.sls 和 apache/init.sls,則 apache/init.sls 被忽略,apache.sls將被用來(lái)表示 apache.

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

4.創(chuàng)建模塊目錄:

[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 ## 同步模塊
  • 在受控主機(jī)上查看模塊是否同步成功
  • 執(zhí)行測(cè)試模塊
[root@server1~] # salt server2 mydisk.df

四、grains

1.簡(jiǎn)介

Grains是SaltStack的一個(gè)組件,存放在SaltStack的minion端。
當(dāng)salt-minion啟動(dòng)時(shí)會(huì)把收集到的數(shù)據(jù)靜態(tài)存放在Grains當(dāng)中,只有當(dāng)minion重啟時(shí)才會(huì)進(jìn)行數(shù)據(jù)的更新。
由于grains是靜態(tài)數(shù)據(jù),因此不推薦經(jīng)常去修改它。
應(yīng)用場(chǎng)景:

  • 信息查詢,可用作CMDB。
  • 在target中使用,匹配minion。
  • 在state系統(tǒng)中使用,配置管理模塊。

(一)信息查詢

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


(二)查看每一項(xiàng)的值:

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


(三)取單項(xiàng)的值:

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

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

2.自定義grains項(xiàng)

第一種方法

  • 在minion 端 /etc/salt/minion中定義:
    重啟salt-minion,否則數(shù)據(jù)不會(huì)更新:
[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項(xiàng)
[root@server1 salt]# salt server2 grains.item roles

  • 同步數(shù)據(jù):
[root@server1 salt]# salt server3 saltutil.sync_grains [root@server1 salt]# salt '*' grains.item roles

3.編寫grains模塊

在salt-master端創(chuàng)建_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測(cè)試 [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匹配運(yùn)用

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

在serve2部署apache在server3部署nginx
一步一步來(lái)

[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

  • 批量執(zhí)行:
[root@server1 salt]# salt '*' state.highstate



驗(yàn)證:
在server3:/mnt 上查看是否有nginx包

  • 配置兩個(gè)服務(wù)完整版的運(yùn)行腳本
  • 下載服務(wù)部分
[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底下有這三個(gè)文件,先執(zhí)行,失敗后直接從server3里面找 nginx-1.18.0.tar.gz nginx.conf nginx.service

鏈接: nginx.server提取碼: s6w7

  • 批量執(zhí)行:
[root@server1 files]# salt '*' state.highstate


查看服務(wù)是否成功安裝并運(yùn)行

五、Jinja模板

1.簡(jiǎn)介

Jinja是一種基于python的模板引擎,在SLS文件里可以直接使用jinja模板來(lái)做一些操作。
通過(guò)jinja模板可以為不同服務(wù)器定義各自的變量。
兩種分隔符: {% … %} 和 {{ … }},前者用于執(zhí)行諸如 for 循環(huán) 或賦值的語(yǔ)句,后者把表達(dá)式的結(jié)果打印到模板上。

2.jinja模板的適用方法

Jinja最基本的用法是使用控制結(jié)構(gòu)包裝條件:

[root@server1 salt]# vim test.sls /mnt/testfile:file.append:{% if grains['fqdn'] == 'server2' %}- text: server2{% elif grains['fqdn'] == 'server3' %}- text: server3{% endif %}
  • 執(zhí)行測(cè)試
[root@server1 salt]# salt '*' state.sls test


驗(yàn)證:去查看/mnt 下有沒(méi)有文件生成

2.使用jinja模板實(shí)現(xiàn)apache的配置

  • 編寫默認(rèn)發(fā)布文件 內(nèi)含系統(tǒng)版本,主機(jī)名
[root@server1 files]# vim index.html {{ grains['os'] }} - {{ grains['fqdn'] }} {{ NAME }}
  • 修改httpd配置文件端口號(hào)
[root@server1 files]# vim httpd.conf #Listen 12.34.56.78:80 Listen {{ bind }}:{{ port }}

  • 編寫執(zhí)行文件
[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
  • 執(zhí)行
[root@server1 apache]# salt server2 state.sls apache

驗(yàn)證:curl 172.25.3.2:80


六、pillar

1.pillar簡(jiǎn)介

pillar和grains一樣也是一個(gè)數(shù)據(jù)系統(tǒng),但是應(yīng)用場(chǎng)景不同。
pillar是將信息動(dòng)態(tài)的存放在master端,主要存放私密、敏感信息(如用戶名密碼等),而且可以指定某一個(gè)minion才可以看到對(duì)應(yīng)的信息。
pillar更加適合在配置管理中運(yùn)用。

2.聲明pillar

  • 默認(rèn)就是此目錄,不用做任何修改
[root@server1 ~]# vim /etc/salt/master pillar_roots:base:- /srv/pillar
  • 需要自己手動(dòng)建立目錄
[root@server1 ~]# mkdir /srv/pillar

3.自定義pillar項(xiàng)

[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數(shù)據(jù):
[root@server1 pillar]# salt '*' saltutil.refresh_pillar

  • 查詢pillar數(shù)據(jù):
[root@server1 pillar]# salt '*' pillar.items [root@server1 pillar]# salt '*' grains.item roles


測(cè)試
加入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 %}
  • 修改執(zhí)行文件,引用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

  • 執(zhí)行
[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 %} 導(dǎo)入模板文件: [root@server1 apache]# vim files/httpd.conf {% from 'apache/lib.sls' import port %}

加到配置文件最上面

  • 執(zhí)行
[root@server1 apache]# salt server2 state.sls apache

七、自動(dòng)部署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.創(chuàng)建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.準(zhǔn)備Top文件:

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

注意需要將干剛才模板httpd的配置文件中的[bind]去掉,要不然訪問(wèn)不到結(jié)果

5.批量執(zhí)行:

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

運(yùn)行結(jié)果

vip已經(jīng)成功加上

測(cè)試:
在真機(jī)上訪問(wèn)vip,查看返回值

[root@zhenji Desktop]# curl 172.25.3.100


測(cè)試高可用

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

當(dāng)server2的keepalived關(guān)了之后,再次訪問(wèn)172.25.3.100,就會(huì)跳到備用server3的nginx的默認(rèn)發(fā)布頁(yè)面

八、自動(dòng)化部署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 目錄下需要的兩個(gè)配置文件

[root@server1 files]# gunzip create.sql.gz ##這里需要手動(dòng)解壓 [root@server1 files]# tree ├── create.sql └── my.cnf 0 directories, 2 files [root@server1 files]# vim my.cnf log-bin=mysql-bin ##開(kāi)啟二進(jìn)制日志 character-set-server=utf8 ##mysql默認(rèn)需要的字符類型

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

圈出來(lái)的文件在初始化完成之后才會(huì)出現(xiàn),不用修改

/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修改時(shí)區(qū)

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

執(zhí)行完之后會(huì)出現(xiàn)一個(gè)報(bào)錯(cuò),這是因?yàn)槿鄙僖粋€(gè)文件,初始化完成之后才會(huì)生成

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


當(dāng)我們?cè)俅螆?zhí)行之后就不會(huì)出現(xiàn)報(bào)錯(cuò),到這個(gè)zabbix安裝配置完成

九、JOB管理

1.Job簡(jiǎn)介

master在下發(fā)指令任務(wù)時(shí),會(huì)附帶上產(chǎn)生的jid。
minion在接收到指令開(kāi)始執(zhí)行時(shí),會(huì)在本地的/var/cache/salt/minion/proc目錄下產(chǎn)生該jid命名的文件,用于在執(zhí)行過(guò)程中master查看當(dāng)前任務(wù)的執(zhí)行情況。
指令執(zhí)行完畢將結(jié)果傳送給master后,刪除該臨時(shí)文件。

2.默認(rèn)JOB CACHE

Job緩存默認(rèn)保存24小時(shí):

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

3.把Job存儲(chǔ)到數(shù)據(jù)庫(kù)

[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端傳到數(shù)據(jù)庫(kù)

[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;

往數(shù)據(jù)庫(kù)中導(dǎo)入sql語(yǔ)句

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

測(cè)試: 執(zhí)行一條命令,進(jìn)入數(shù)據(jù)庫(kù)查看是否記錄在數(shù)據(jù)庫(kù)

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

進(jìn)入數(shù)據(jù)庫(kù)查看是否有剛才執(zhí)行的命令

[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簡(jiǎn)介

salt-ssh可以獨(dú)立運(yùn)行的,不需要minion端。
salt-ssh 用的是sshpass進(jìn)行密碼交互的。
以串行模式工作,性能下降。

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

測(cè)試:

十一、salt-syndic

1.salt-syndic簡(jiǎn)介

如果大家知道zabbix proxy的話那就很容易理解了,syndic其實(shí)就是個(gè)代理,隔離master與minion。
Syndic必須要運(yùn)行在master上,再連接到另一個(gè)topmaster上。
Topmaster 下發(fā)的狀態(tài)需要通過(guò)syndic來(lái)傳遞給下級(jí)master,minion傳遞給master的數(shù)據(jù)也是由syndic傳遞給topmaster。
topmaster并不知道有多少個(gè)minion。
syndic與topmaster的file_roots和pillar_roots的目錄要保持一致。

2.salt-syndic配置

這里我們需要配置一臺(tái)新的虛擬機(jī):server4作為頂級(jí)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


測(cè)試:

總結(jié)

以上是生活随笔為你收集整理的saltstack 自动化运维管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。