比Ansible更高效?SaltStack自動化運維快速入門指南

Saltstack自動化運維入門

Saltstack

  • • 一、saltstack簡介
    • • 1.簡單介紹
      • • 2.通訊模式
      • • 3.salt minion認證
  • • 二、saltstack安裝
  • • 三、saltstack的配置
  • • 四、配置管理入門實踐
  • • saltstack的state.sls和state.highstate之區別
  • • 五、正則匹配主機
  • • 六、資料系統Grains(客戶端)
  • • 七、資料系統Pillar(服務端)
  • • 八、遠端執行Targeting
  • • 九、配置管理States
  • • 十、配置管理LAMP部署env=dev
  • • 十一、配置管理狀態關係
==官網:https://docs.saltproject.io/en/latest/==

一、saltstack簡介

1.簡單介紹

saltstack 是基於C/S架構的服務模式,伺服器端叫做Master,客戶端叫作Minion,並且有訊息佇列中的釋出與訂閱(pub/sub)服務模式,minion與master之間透過 ZeroMQ 訊息佇列通訊。Master和Minion端都以守護程序的模式執行,一直 監聽配置檔案裡面定義的ret_port也就是4506埠(接收minion請求)和publish_port也就是4505埠(ZMQ的釋出訊息)。 當minion執行時會自動連線到配置檔案裡面定義的Master地址ret_port埠進行連線認證。採用RSA Key方式確認身份,傳輸採用AES加密,使傳輸的安全性得到保障。
Saltstack執行模式 :
  • • Local
  • • Master/Minion
  • • Salt SSH
Saltstack三大功能:
  • • 遠端執行(執行遠端命令)
  • • 配置管理(狀態管理)
  • • 雲管理

2.通訊模式

Salt使用釋出 – 訂閱模式與受管系統進行通訊。 連線由Salt minion發起,這意味著你不需要在這些系統上開啟任何傳入埠(從而減少攻擊向量)。 Salt master使用埠4505和4506,必須開啟端口才能接收訪問連線。

在這裡插入圖片描述

 Publisher (埠4505)所有Salt minions都需要建立一個持續連線到他們收聽訊息的釋出者埠。 命令是透過此埠非同步傳送給所有連線,這使命令可以在大量系統上同時執行。

Request Server (埠4506)Salt minions根據需要連線到請求伺服器,將結果傳送給Salt master,並安全地獲取請求的檔案或與特定minion相關的資料值(稱為Salt pillar)。 連線到這個埠的連線在Salt master和Salt minion之間是1:1(不是非同步)。

3.salt minion認證

當minion第一次啟動時,它會在網路中搜索一個名為salt的系統(儘管這可以很容易地更改為IP或不同的主機名)。 當發現時,minion發起握手,然後將公鑰傳送給Salt master。        在初始連線之後,Salt minions的公鑰儲存在伺服器上,並且必須使用salt-key命令(或透過某種自動機制)在Salt master上接受。 這可能是讓新使用者混淆的原因,因為Salt不會提供解密訊息所需的安全金鑰,直到Salt minions的公鑰被接受(這意味著Salt minions在被接受其金鑰之前不會執行任何命令)。        在minion金鑰被salt master接受後,Salt主機 minion會返回其公鑰以及旋轉的AES金鑰,該金鑰用於加密和解密由Salt master傳送的訊息。 返回的AES金鑰使用Salt minion最初發送的公鑰進行加密,因此只能由該Salt minion解密。

二、saltstack安裝

1.下載yum源wget -P /etc/yum.repos.d https://mirrors.aliyun.com/saltstack/yum/redhat/7.6/x86_64/saltstack-rhel7.repo
2.在master端安裝yum -y install salt-master
3.在minion端安裝yum -y install salt-minion

三、saltstack的配置

注意冒號後面要有空格#hostnamectl set-hostname salt01.tianyun.com#vim /etc/hosts
初始化配置配置對應的檔案路徑
master端
在/etc/salt/master下新增修改master: 10.0.100.132user: rootinterface: 0.0.0.0file_roots:  base:    - /srv/saltpillar_roots:  base:    - /srv/pillar啟動systemctl start salt-master
minion端
在/etc/salt/minion下新增#這裡要指向salt-master伺服器,可以是IP,也可以是域名,也可以是主機名,如果用的是內部DNS伺服器的話可以用主機名或者域名的形式。master: 10.0.100.132user: rootid: agent1啟動service salt-minion start
檢視所有的金鑰
[root@master]# sudo salt-key --list-all  # salt-key -L Accepted Keys:agent1Denied Keys:Unaccepted Keys:Rejected Keys:
接受一個指定金鑰
salt-key --accept=<key>salt-key -a=<key>
接受所有金鑰
salt-key --accept-allsalt-key -A -y
刪除一個指定金鑰
salt-key -d xxx
刪除所有金鑰
salt-key -D
測試常用遠端執行入門
[root@master]# salt '*' test.pingagent1:True# salt 'agent1' test.ping# salt 'agent1' cmd.run 'df -h'# salt -L 'agent2,agent3' cmd.run 'uptime'  -L跟多個主機# salt -S '192.168.122.0/24' cmd.run 'uptime'注:master 秘鑰對預設儲存在/etc/salt/pki/master/master.pub  /etc/salt/pki/master/master.pemmaster 端認證的公鑰儲存在:/etc/salt/pki/master/minions/minion 秘鑰對預設儲存在/etc/salt/pki/minion/minion.pub  /etc/salt/pki/minion/minion.pemminion 存放的master公鑰/etc/salt/pki/minion/minion_master.pubminion_id 預設儲存在/etc/salt/minion_id #?

在這裡插入圖片描述
salt命令詳解
salt "*" sys.list_modules   # 檢視所有模組# salt -hUsage: salt [options] '<target><function> [arguments]Options(選項):      --version : 檢視saltstack軟體的版本號。      --versions-report : 檢視saltstack軟體以及依賴包的版本號。      -h, --help : 檢視幫助資訊。      --saltfile=SALTFILE:指定saltfile的路徑。 如果沒有透過,將在當前工作目錄中搜索一個。      -c CONFIG_DIR, --config-dir=CONFIG_DIR:指定配置檔案的目錄(預設是/etc/salt/)。      -t TIMEOUT, --timeout=TIMEOUT:指定超時時間預設是5秒。      --hard-crash:捕捉到original異常不退出預設關閉。      -s, --static:以組的形式返回所有minion的資料。      -p, --progress:顯示進度圖,需要progressbar的python包。      --failhard :在第一個執行錯誤返回之後停止批處理。      --async : 非同步執行。      --subset=SUBSET : 對目標minions的隨機子集執行程式. minions在執行前會先驗證是否存在該命名的函式,再去執行      -v, --verbose : 開啟命令詳細,顯示jid和活動的工作查詢      --hide-timeout : 隱藏超時時間。      --show-jid : 顯示任務的jid。      -b BATCH, --batch=BATCH, --batch-size=BATC : 按照百分比執行任務。      -a EAUTH, --auth=EAUTH, --eauth=EAUTH, --external-auth=EAUTH : 指定外部認證方式。      -T, --make-token : 生成master token.      --return=RETURNER : 設定一種替代方法。 預設情況下,salt將從命令將返回資料傳送回主伺服器,但返回資料可以重定向到任意數量的系統,資料庫或應用程式。      --return_config=RETURNER_CONF : 指定命令返回的設定檔案。      -d, --doc, --documentation : 檢視指定模式或所有模組文件。      --args-separator=ARGS_SEPARATOR :   指定傳送命令跟命令引數的分隔符,當用戶想把一個命令當作引數傳送給另一個命令執行時。      --summary :  顯示彙總資訊。      --username=USERNAME : 指定外部認證的使用者名稱。      --password=PASSWORD :  指定外部認證的密碼。      --metadata=METADATA :  將元資料傳遞給Salt,用於搜尋作業。Logging Options(日誌相關引數):      -l LOG_LEVEL, --log-level=LOG_LEVEL : 指定日誌級別。      --log-file=LOG_FILE : 指定日誌記錄檔案      --log-file-level=LOG_LEVEL_LOGFILE : 日誌檔案日誌記錄級別。'all', 'garbage', 'trace', 'debug', 'info', 'warning', 'error','critical', 'quiet'. 預設: 'warning'.Target Options(目標選擇選項):*     -E, --pcre : 正則匹配*     -L, --list:  列表匹配,目標表達式將被解釋為以逗號分隔的列表。*     -G, --grain:  grains匹配。      --grain-pcre :grains加正則匹配。      -N, --nodegroup:組匹配。      -R, --range:範圍匹配。      -C, --compound : 綜合匹配(指定多個匹配,空格隔開)。*     -I, --pillar : pillar值匹配。      -J, --pillar-pcre : pillar加正則匹配。      -S, --ipcidr : minions網段地址匹配。Output Options(輸出引數):      --out=OUTPUT, --output=OUTPUT : 使用指定的輸出器從'salt'命令列印輸出。 內建的是 'key', 'yaml',  'overstatestage', 'newline_values_only', 'pprint',  'txt', 'raw', 'virt_query', 'compact', 'json', 'highstate', 'nested', 'quiet', 'no_return'.      --out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT :   在空格中列印由提供的值縮排的輸出。 負值停用縮排。 僅適用於支援縮排的輸出器。      --out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE : 輸出到指定檔案。      --out-file-append, --output-file-append :  輸出附加到指定的檔案。      --no-color, --no-colour :  關閉所有的顏色顯示。      --force-color, --force-colour : 強制輸出顏色顯示。      --state-output=STATE_OUTPUT, --state_output=STATE_OUTPUT : 覆蓋配置的state_output值輸出,指定state格式(full, terse, mixed, changes or filter)輸出,預設值是full。salt-key命令詳解# salt-key -hActions:     -l ARG, --list=ARG:顯示指定狀態的key(支援正則表示式)     -L, --list-all :列出所有公鑰。"--list all"已經棄用。     -a ACCEPT, --accept=ACCEPT: 接受指定的公鑰(除了掛起的金鑰之外,使用--include-all匹配拒絕的金鑰),支援正則表示式。     -A, --accept-all :接收所有等待認證的key。     -r REJECT, --reject=REJECT :拒絕指定等待認證的key(支援正則表示式)     -R, --reject-all:拒絕所有等待認證的key。     --include-all: 顯示所有狀態的key。     -p PRINT, --print=PRINT :列印指定的公鑰支援正則表示式。     -P, --print-all:列印所有的公鑰。     -d DELETE, --delete=DELET:刪除指定的key。     -D, --delete-all:刪除所有的key。     -F, --finger-all:顯示所有key的指紋資訊。
查詢模組salt '*' -d|grep ":" |grep disk查詢某個模組擁有的方法salt 'agent1' sys.list_functions test

四、配置管理入門實踐

master端和minion端配置好後 ,
檔案管理
[root@master ~]# mkdir /srv/{salt,pillar}[root@master ~]# cd /srv/salt[root@master salt]# vim host_file.sls/etc/hosts:  file.managed:    - source: salt://files/hosts    - user: root    - group: root    - mode: 644[root@master salt]# mkdir files[root@master salt]# cd files/[root@master files]# cp /etc/hosts .[root@master files]# pwd/srv/salt/files[root@master files]# cd ..[root@master salt]# pwd/srv/salt[root@master salt]# lsfiles  host_file.sls[root@master salt]# salt '*' state.sls host_fileagent1:----------          ID: /etc/hosts    Function: file.managed      Result: True     Comment: File /etc/hosts isin the correct state     Started: 18:15:50.497755    Duration: 68.637 ms     Changes:   Summary for agent1------------Succeeded: 1Failed:    0------------Total states run:     1Total run time:  68.637 ms用name的方式[root@master salt]# vim host_file.slsfile_test:  file.managed:    - name: /etc/hosts    - source: salt://test/123.txt    - user: root    - group: root    - mode: 644

在這裡插入圖片描述
複製檔案
# salt-cp '*' /etc/hosts /root
安裝nginx
pkg是模組,installed是方法,-names是引數。 相當於 yum install nginx。 require是依賴關係[root@master salt]# pwd/srv/salt[root@master salt]# vim nginx_install.slsnginx-install:  pkg.installed:    - names:      - nginx/etc/hosts:  file.managed:    - source: salt://files/hosts    - user: root    - group: root    - mode: 644    - require:      - pkg: nginx-install  service.running:    - names:      - nginx[root@master salt]# salt '*' state.sls nginx_install

在這裡插入圖片描述
安裝apache
[root@master salt]# vim apache.slsapache-service:  pkg.installed:    - names:      - httpd      - mod_ssl  service.running:    - name: httpd    - enable: True[root@master salt]# vim top.sls base:'*':    - apache[root@master salt]# salt '*' state.highstate salt '*' state.highstate test=True 表示狀態的同步,test=True表示測試成功與否apache沒安裝就安裝,安裝過的就不用
計劃任務
minute hour daymonth month dayweek[root@master ~]# cd /srv/salt/[root@master salt]# vim crontab.sls/usr/sbin/ntpdate time.aliyun.com >> /dev/null:  cron.present:    - user: root    - minute: '*/5'[root@master salt]# salt '*' cron.list_tab root客戶機檢視[root@localhost ~]# crontab -l# Lines below here are managed by Salt, do not edit# SALT_CRON_IDENTIFIER:/usr/sbin/ntpdate time.aliyun.com >> /dev/null*/5 * * * * /usr/sbin/ntpdate time.aliyun.com >> /dev/null

在這裡插入圖片描述

在這裡插入圖片描述
5分鐘修改為3分鐘,然後再執行一遍[root@master salt]# vim crontab.sls/usr/sbin/ntpdate time.aliyun.com >> /dev/null:  cron.present:    - user: root    - minute: '*/3'[root@master salt]# salt '*' state.sls crontab刪除cron[root@master salt]# vim del_cron.sls/usr/sbin/ntpdate times.aliyun.com >> /dev/null:  cron.absent:    - name: /usr/sbin/ntpdate times.aliyun.com >> /dev/null[root@master salt]# salt '*' state.sls del_cron

saltstack的state.sls和state.highstate之區別

state.sls預設的執行環境是base環境,但是它並不讀取top.sls(top.sls定義了執行環境以及需要執行的sls)。關於state.sls的官方文件說明如下:
salt.modules.state.sls(mods, saltenv='base', test=None, exclude=None, queue=False, env=None,**kwargs)
這裡saltenv指的是執行環境,預設是base環境。
state.highstate: 這個是全域性的所有環境,以及所有狀態都生效。它會讀取每一個環境的top.sls,並且對所有sls都生效。

五、正則匹配主機

https://www.cnblogs.com/wangyajian/p/11572572.htmlGrains:https://www.cnblogs.com/wangyajian/p/11586990.htmlpliiar:https://www.cnblogs.com/wangyajian/p/11586998.htmlstate模組:https://www.cnblogs.com/wangyajian/p/11633678.htmlstate安裝nginx:https://www.cnblogs.com/wangyajian/p/11633828.htmlhighstate:https://www.cnblogs.com/wangyajian/p/11663089.htmlsalt-key:https://www.cnblogs.com/hanson666/articles/7105197.html

六、資料系統Grains(客戶端)

Minion收集資訊,Master用於並匹配Target Minion端設定,提供給Master端
========== 客戶端自身收集的身份資訊 ==========Grains裡面收集了minion啟動時候的所有系統資訊,儲存在minion端。
[root@master ~]# salt '*' grains.ls  列出所有item[root@master ~]# salt '*' grains.items 獲取所有item值[root@master ~]# salt '*' grains.item os_family[root@master ~]# salt '*' grains.item osrelease[root@master ~]# salt -G 'osrelease:7.8.2003' test.ping[root@master ~]# salt '*' grains.item ipv4[root@master ~]# salt '*' grains.item ip4_interfaces

在這裡插入圖片描述
自定義Grains方法一:vim /etc/salt/minion
伺服器機櫃位置[root@agent ~]# vim /etc/salt/miniongrains:  roles:    - webserver    - dbserver  deployment: datacenter1  cabinet: 13  cab_u: 14-15roles是key,value有webserver和dbserver,資料中心一[root@agent ~]# systemctl restart salt-minion

在這裡插入圖片描述

七、資料系統Pillar(服務端)

Master端設定,提供給Minion端
Pillar在SaltStack中主要作用是儲存和定義配置管理中需要的一些資料,比如軟體版本號、使用者名稱密碼等資訊,它的儲存格式跟Grains類似,都是YAML格式。
[root@master ~]# vim /etc/salt/masterpillar_roots:  base:    - /srv/pillar[root@master ~]# mkdir /srv/pillar[root@master pillar]# vim env_salt01.slsroles:  - webserver  - dbserverdeployment: datacenter1cabinet: 13cab_u: 14-15[root@master pillar]# vim top.slsbase:'*':    - env_salt01[root@master pillar]# salt '*' saltutil.refresh_pillar[root@master pillar]# salt -I 'roles:webserver' cmd.run 'uptime'[root@master pillar]# salt --pillar 'roles:webserver' cmd.run 'uptime'

在這裡插入圖片描述

八、遠端執行Targeting

和Minion_ID相關:
  • • Globbing(萬用字元)
  • • Regex(正則表示式)
  • • List(列表)
和Minion_ID無關:
  • • Subnet/IP
  • • Grains
  • • Pillar
  • • Compound matchers(複合匹配)
  • • Node groups(節點組)
# salt 'salt01.tianyun.com' test.ping# salt 'salt01*' test.ping正則:*表0到多次?表01[]表任意一個字元[!]# salt -L 'salt01,salt02' cmd.run 'uptime'  列表-L跟多個主機不支援的寫法:# salt -L 'salt01.tianyun.com,salt03*' test.ping# salt -E 'salt0[^14].tianyun.com' test.ping  正則表示非01 04# salt -S '10.0.100.0/24' test.ping  子網# salt -G 'os:Centos' cmd.run 'uptime'  系統自帶Grains# salt -I 'Zabbix_Server' test.ping  PillarMinion端修改ID:vim /etc/salt/minion_id
SLS檔案中使用正則,注意match pcre:# cat /srv/salt/top.slsbase:'saltstack0[^23].tianyun.com':    - match: pcre    - apacheSLS檔案中使用Grainsbase:'os:CentOS':    - match: grain    - apache
複合匹配
複合匹配# salt -C ‘I@or/and'# salt -C 'I@roles:dbserver and I@delpoyment:datacenter1 and G@os:Centos and [email protected]/24 or E@salt0[13].tianyun.com' cmd.run 'uptime'[root@master ~]# vim /etc/salt/masternodegroups:  webs: 'I@roles:dbserver and I@delpoyment:datacenter1 and G@os:Centos and [email protected]/24 or E@salt0[13].tianyun.com'[root@master ~]# salt -N 'webs' test.ping

九、配置管理States

States是SaltStack系統中的配置語言,在日常運維中需要編寫大量的States檔案,例如需要建立一個使用者、安裝一個軟體包、之後管理相應的配置檔案,最後確保服務能正常執行。則需要編寫一些States SLS檔案,即狀態配置檔案去描述和實現相應的功能。States SLS主使用YAML語言,也可以支援使用Python語言編寫。
[root@master ~]# vim /etc/salt/masterfile_roots:   base:     - /srv/salt/   dev:     - /srv/salt/dev/services     - /srv/salt/dev/states   test:     - /srv/salt/test   prod:     - /srv/salt/prod/services     - /srv/salt/prod/states[root@master ~]# systemctl restart salt-master[root@master ~]# cd /srv/salt/[root@master salt]# pwd/etc/salt[root@master salt]# mkdir dev test prodbase基礎環境,所有機器都需要的配置yum、dns、kernel引數、zabbix agent[root@master salt]# mkdir -p init/files[root@master salt]# vim init/files/resolv.confnameserver 8.8.8.8nameserver 114.114.114.114[root@master salt]# cd init/[root@master init]# pwd/srv/salt/init[root@master init]# lsfiles[root@master init]# vim dns.sls/etc/resolv.conf:  file.managed:    - source: salt://init/files/resolv.conf/etc/resolv.conf 是minion目標檔案.如果下面配了name就不一樣source: salt:// 表示salt的base環境[root@master init]# salt '*' state.sls init.dns env=base  注意這裡是init.dns,直接放在/srv/salt/xx.sls 這樣就不用加init。現在是放在了/srv/salt/init/xx.sls預設也是env=base

在這裡插入圖片描述
針對所有主機:
[root@master salt]# pwd/srv/salt[root@master salt]# vim top.slsbase:'*':    - init.dns[root@master salt]# salt '*' state.highstate  # 基於top.sls

在這裡插入圖片描述

十、配置管理LAMP部署env=dev

1.準備模板檔案
yum -y install httpd php php-mysql php-gd gd mariadb-servercp -rf /etc/httpd/conf/httpd.conf /srv/salt/dev/files/cp -rf /etc/my.cnf /srv/salt/dev/files/[root@master ~]# vim /etc/salt/masterfile_roots:  base:    - /srv/salt/  dev:    - /srv/salt/dev/[root@master dev]# systemctl restart salt-master[root@master salt]# cd dev/[root@master dev]# ls[root@master dev]# mkdir files[root@master dev]# pwd/srv/salt/dev[root@master dev]# cp -rf /etc/httpd/conf/httpd.conf /srv/salt/dev/files/[root@master dev]# cp -rf /etc/my.cnf /srv/salt/dev/files/[root@master dev]# vim lamp.slslamp-pkg-install:  pkg.installed:    - names:      - httpd      - php      - php-mysql      - php-gd      - gd      - mariadb-serverhttpd-files:  file.managed:    - name: /etc/httpd/conf/httpd.conf    - source: salt://files/httpd.confhttpd-service:  service.running:    - name: httpd    - enable: Truemysql-files:  file.managed:    - name: /etc/my.cnf    - source: salt://files/my.cnfmysql-service:  service.running:    - name: mariadb    - enable: True[root@master ~]# salt '*' state.sls lamp saltenv=dev[root@master ~]# vim /srv/salt/top.slsbase:'*':    - init.dnsdev:'*':    - lamp[root@master ~]# salt '*' state.highstate若想狀態觸發,自動重啟,需要用到require

十一、配置管理狀態關係

unless
  • • 主要用於cmd狀態模組,僅當unless選項指向的命令
  • • 返回false時才執行name指向的命令,test -d /usr/local/nginx
re
  • • require 我依賴某個狀態 我依賴誰
  • • require_in 我被某個狀態依賴 誰依賴我
wa
  • • watch 我關注某個狀態【監控】當狀態發生改變,例如我關注的狀態發生改變,restart
  • • watch_in 我被某個狀態關注
require
require:   模組名:ID
[root@master dev]# cat /srv/salt/dev/lamp.slsdep-install:  pkg.installed:    - names:      - phphttpd-install:  pkg.installed:    - name: httpd    - require:      - pkg: dep-installhttpd-files:  file.managed:    - name: /etc/httpd/conf/httpd.conf    - source: salt://files/httpd.conf    - require:      - pkg: httpd-installhttpd-service:  service.running:    - name: httpd    - enable: True    - require:      - file: httpd-filesmysql-files:  file.managed:    - name: /etc/my.cnf    - source: salt://files/my.cnf
watch
[root@master dev]# cat /srv/salt/dev/lamp.slsdep-install:  pkg.installed:    - names:      - phphttpd-install:  pkg.installed:    - name: httpd    - require:      - pkg: dep-installhttpd-files:  file.managed:    - name: /etc/httpd/conf/httpd.conf    - source: salt://files/httpd.conf    - require:      - pkg: httpd-installhttpd-service:  service.running:    - name: httpd    - enable: True    - require:      - file: httpd-files    - reload: True# 可選,如果PID不變,選擇reload。預設沒這個的話,只有watch就是restart    - watch:      - file: httpd-files  只要httpd-files發生變化就變化,改埠,啟動變化也會改mysql-files:  file.managed:    - name: /etc/my.cnf    - source: salt://files/my.cnf[root@master dev]# salt '*' state.sls lamp saltenv=dev
關係,watch_in 與 require_inwatch,reload都寫在服務那watch_in,如果是寫在檔案那。 則在服務寫reload
連結:https://blog.csdn.net/qq_39578545/article/details/114994167?ops_request_misc=%257B%2522request%255Fid%2522%253A%252204b592e965f59785c4e97c61ceed050a%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=04b592e965f59785c4e97c61ceed050a&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-114994167-null-null.142^v102^pc_search_result_base1&utm_term=saltstack%E8%87%AA%E5%8A%A8%E5%8C%96&spm=1018.2226.3001.4187
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
備註:最新運維資料
100%免費領取
(後臺不再回復,掃碼一鍵領取


相關文章