saltstack 基础入门文档
saltstack
簡(jiǎn)述
Salt 和 Puppet Chef 一樣可以讓你同時(shí)在多臺(tái)服務(wù)器上執(zhí)行命令也包括安裝和配置軟件。Salt 有兩個(gè)主要的功能:配置管理和遠(yuǎn)程執(zhí)行。
- 源碼: https://pypi.python.org/pypi/salt
- 文檔: http://docs.saltstack.com/
安裝
debian/ubuntu
- 設(shè)置debian更新源
wget -q -O- “http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key” | apt-key add -
echo “deb http://debian.saltstack.com/debian wheezy-saltstack main” /etc/apt/sources.list
- 設(shè)置ubuntu更新源
add-apt-repository ppa:saltstack/salt 或
echo deb http://ppa.launchpad.net/saltstack/salt/ubuntu lsb_release -sc main | tee /etc/apt/sources.list.d/saltstack.list
wget -q -O- “http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x4759FA960E27C0A6” | apt-key add -
- 安裝軟件包
RHEL6/CentOS6
- 設(shè)置RHEL/CentOS更新源
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm或
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
- 安裝軟件包
基本配置
saltstack 的配置文件格式
Salt默認(rèn)使用PyAMl語(yǔ)法(http://pyyaml.org) 作為它的模板文件的格式,其他很多模板語(yǔ)言在Salt中是可以使用的。
一定要按照正確的格式書寫YAML,比如最基本的,它使用到兩個(gè)空格代替tab,: 或 - 后面要有空格。
例一:
interface: 0.0.0.0 log_file: /var/log/salt/master key_logfile: /var/log/salt/key例二:
file_roots:base:- /srv/salt服務(wù)端配置
主控端基本設(shè)置
編輯配置文件 /etc/salt/master,修改如下所示配置項(xiàng),去掉前面的注釋符
客戶端配置
受控端基本設(shè)置
編輯配置文件 /etc/salt/minion,修改如下所示配置項(xiàng),去掉前面的注釋符#
小技巧 查看配置文件信息,過濾注釋語(yǔ)句:__
sed -e '/^#/d;/^$/d' /etc/salt/minion檢查服務(wù)
主控端,和受控端 啟動(dòng)各自的服務(wù),確保服務(wù)啟動(dòng)后沒有任何報(bào)錯(cuò)信息,如果異常請(qǐng)檢查相應(yīng)日志文件處理
主控端: service salt-master restart 受控端: service salt-minion restart證書管理
如果一切順利,請(qǐng)繼續(xù)!
saltstack 主控端是依靠openssl證書來與受控端主機(jī)認(rèn)證通訊的,受控端啟動(dòng)后會(huì)發(fā)送給主控端一個(gè)公鑰證書文件,在主控端用 salt-key 命令來管理證書。
salt-key -L # 用來查看證書情況 salt-key -a # 用來管理接受證書受控端證書認(rèn)證后會(huì)顯示如下情形:
Accepted Keys: ubuntu-server-001 Unaccepted Keys: Rejected Keys:主控端和被控端的證書默認(rèn)都存放在 /etc/salt/pki/ 中,如果遇到證書不生效的情況下,可在主控端證書存放目錄刪除受控端證書,重新認(rèn)證一下。
簡(jiǎn)單的測(cè)試
你可以從master 使用一個(gè)內(nèi)置命令 test.ping 來測(cè)試他們之間的連接
salt '*' cmd.run test.ping它應(yīng)該有如下輸出:
{ubuntu-server-001: True}測(cè)試與外網(wǎng)的連接
salt '*' cmd.run "ping -c 4 baidu.com"如果能返回正確結(jié)果,salt的基本配置就完成了。
進(jìn)階,配置管理
個(gè)人理解,管理一個(gè)服務(wù)器應(yīng)用可以從 軟件包,配置文件,服務(wù)管理 這個(gè)三個(gè)最基本角度來出發(fā),要啟用配置管理,首先應(yīng)對(duì)受控端進(jìn)行額外的配置
啟用擴(kuò)展配置文件目錄
-
主控端 /etc/salt/master
default_include: master.d/*.conf -
受控端 /etc/salt/minion
default_include: master.d/*.conf
配置受控端
- 配置受控端,以root用戶身份來接受主控端的控制 編輯/etc/salt/minion
- 配置受控端同步,每隔60秒與主控端進(jìn)行同步一次 編輯/etc/salt/minion
配置主控端
一般來講,Salt的配置管理指令和文件保存在/srv/salt目錄下,這里存放著所有的配置文件,和一些你想要拷貝到從服務(wù)器的文件。Salt 的特點(diǎn)之一是包含一個(gè)文件服務(wù)器。雖然Salt不會(huì)在你的主服務(wù)器創(chuàng)建系統(tǒng)文件,但是所有的配置管理發(fā)生在/srv/salt目錄中。
- 編輯 /etc/salt/master 取消注釋即刪除#號(hào),配置倉(cāng)庫(kù)根目錄下的 top.sls 為默認(rèn)入口配置文件,這個(gè)配置項(xiàng)可以自定義,基本配置如下:
- 創(chuàng)建 /srv/salt/top.sis 目錄和文件
詳細(xì)解釋一下這個(gè)本配置文件的參數(shù)
- base: 默認(rèn)的的起點(diǎn)配置項(xiàng):
- '*': 這個(gè)引號(hào)內(nèi)的是匹配對(duì)象,針對(duì)所有受控主機(jī)
- ubuntu.vim 就是指資源文件/srv/salt/ubuntu/vim.sls
一個(gè)簡(jiǎn)單的例子:ubuntu 基本系統(tǒng)默是不安裝 vim 我們可以利用配置管理把被托管的ubuntu主機(jī)全部安裝上vim
編輯 /srv/salt/ubuntu/vim.sls
vim:pkg:- name: vim- installed執(zhí)行命令
salt '*' state.highstate請(qǐng)注意觀察返回結(jié)果,查看/var/log/salt/下面的日志來調(diào)試saltstack配置。
一個(gè)更復(fù)雜的例子:管理ssh服務(wù),并且使用salt托管配置文件
ssh:pkg:- name: ssh- installedservice:- name: ssh- running- reload: True- watch:- file: /etc/ssh/ssh_config /etc/ssh/ssh_config:file.managed:- source: salt://ubuntu/ssh_config- user: root- group: root- mode: 644簡(jiǎn)要解釋一下配置文件
- pkg, service , file 這些都是salt的管理模塊,pkg 是包管理模塊; file是文件管理模塊; service 是包服務(wù)管理模塊
- 模塊下一級(jí)是各個(gè)管理模塊配置項(xiàng)的屬性,以 service: 模塊為例
- name: ssh ubuntu下的服務(wù)腳本名稱是 ssh
- running 狀態(tài)是持續(xù)運(yùn)行,如果受控端配置了自動(dòng)同步,每格一段時(shí)間就會(huì)對(duì)其狀態(tài)進(jìn)行檢查
- reload: True 是否重載服務(wù)
- watch: 監(jiān)視文件
- 最后兩條屬性的整體含義是如果配置文件 /etc/ssh/ssh_config 發(fā)生變化,服務(wù)重啟更新
- source: salt://ubuntu/ssh_config 托管的配置文件實(shí)際存儲(chǔ)在 /srv/salt/ubuntu/ssh_config
同樣,使用如下命令來驗(yàn)證結(jié)果需要
salt '*' state.highstate如果需要管理更復(fù)雜的服務(wù)器群,下面是一個(gè)稍微復(fù)雜的例子
/srv/salt/top.sls 內(nèi)容:
配置倉(cāng)庫(kù)目錄層次結(jié)構(gòu)
/srv/salt/ ├── top.sls ├── rhel │ └── servers.sls └── ubuntu├── servers.sls├── ssh_config└── vim.sls最后,補(bǔ)充一點(diǎn),把配置倉(cāng)庫(kù)和版本控制工具結(jié)合起來,將是一件更美好的事情。
參考
二進(jìn)制軟件包
rpm deb 不同包管理體系,不同發(fā)行版二進(jìn)制包拆分命名規(guī)則不盡相同,相比之下 deb 拆分的力度要更細(xì)些。
RHEL6/CentOS 軟件包列表
- salt
- salt-master
- salt-minion
- salt-api
- salt-cloud
Deian/Ubuntu 軟件包列表
- salt-master
- salt-minion
- salt-syndic
- salt-doc
- salt-common
- salt-cloud
- salt-cloud-doc
- salt-api
- salt-ssh
下面按照服務(wù)端(主控端)和客戶端(受控端)來說明主要功能項(xiàng)。
主控端命令列表
- /usr/bin/salt 主控命令
- /usr/bin/salt-cp 批量復(fù)制文件
- /usr/bin/salt-key 證書管理
- /usr/bin/salt-master 服務(wù)端程序
- /usr/bin/salt-run 管理虛擬機(jī)
- /usr/bin/salt-ssh 管理ssh
- /usr/bin/salt-syndic master分布式節(jié)點(diǎn)服務(wù)程序
受控端命令列表
- /usr/bin/salt-call
- /usr/bin/salt-minion 客戶端程序
基本操作
基本操作命令通用格式
命令 對(duì)象 執(zhí)行模塊 參數(shù) salt '*' cmd.run "ping -c 4 baidu.com" '*' 操作對(duì)象 可以使用salt命令的擴(kuò)展模式 -E -G .. cmd.run 執(zhí)行模塊 參數(shù) 傳遞給執(zhí)行模塊的參數(shù)分組功能
編輯 /etc/salt/master
nodegroups:UBUNTU: 'ubuntu-12.04-*'CENTOS: 'centos-6.4-*'建立分組之后,操作對(duì)象使用分組功能才生效
命令示例
salt
-
測(cè)試與受控主機(jī)網(wǎng)絡(luò)是否通暢
salt '*' cmd.run test.ping -
在全部受控主機(jī)行執(zhí)行命令
salt '*' cmd.run “uptime” -
使用 -E 按照正則匹配操作對(duì)象
salt -E 'ubuntu*' cmd.run “uptime” -
使用 -N 按照分組匹配操作對(duì)象
salt -N 'UBUNTU-GROUPS' cmd.run “uptime” -
使用 -G 按照查詢信息匹配操作對(duì)象選項(xiàng)
salt -G 'cpuarch:x86_64' grains.item num_cpus -
查看受控端模塊函數(shù)幫助信息
salt '*' sys.doc -
查看受控端模塊函數(shù)幫助信息
salt '*' sys.doc service
salt-master
- 啟動(dòng)服務(wù) salt-master -d
salt-key
- 查看證書 salt-key -L
- 接受指定的證書 salt-key -a KeyName
- 接受所有未認(rèn)證的證書 salt-key -A
- 刪除所有證書 salt-key -D
- 刪除指定的證書 salt-key -d KeyName
salt-cp
*批量復(fù)制文件到受控主機(jī)
salt-cp '*' /home/vmdisk.img /var/lib/libvirtsh/vmdisk.img*拷貝小文件很有效,簡(jiǎn)單測(cè)試,拷貝2.5MB以上的文件就會(huì)超時(shí)報(bào)錯(cuò)
salt-run
salt-run 是用于管理虛擬機(jī)的命令
-
查詢虛擬機(jī)信息
salt-run virt.hyper_info -
查詢虛擬機(jī)信息
salt-run virt.query -
基于云鏡像創(chuàng)建一個(gè)新的虛擬機(jī)
salt-run virt.init centos1 2 512 salt://centos.imgsalt-ssh
編輯配置文件 /etc/salt/roster
ubuntu-12.04-001: host: 10.8.0.18 user: root passwd: root sudo: True -
簡(jiǎn)單的測(cè)試
salt-ssh '*' test.ping -
測(cè)試執(zhí)行命令
salt-ssh '*' -r “ifconfig -a”
salt-syndic
salt的master和minion的交互很大程度上都和網(wǎng)絡(luò)有關(guān)系,比如在管理多個(gè)國(guó)家的機(jī)器的時(shí)候(比如大中華局域網(wǎng)),一個(gè)master控制多個(gè)master,同時(shí)被控制的master又可以控制很多的minion,就好比是在 master 和 minions 之間又加了一層的分布式架構(gòu)。
salt-minion
啟動(dòng)服務(wù)
salt-minion -dsalt-call
內(nèi)置模塊列表
- 內(nèi)置的狀態(tài)模塊的完整列表: http://docs.saltstack.com/ref/states/all/index.html
- 內(nèi)置的執(zhí)行模塊的完整列表: http://docs.saltstack.com/ref/modules/all/index.html
參考文檔
- http://netkiller.github.io/linux/management/saltstack/
唧唧歪歪
- saltstack 可能由于比較新的緣故,版本之間支持的模塊差異較大,建議最好主控端,受控端使用相同版本的軟件包;
問題:
- 證書管理 ssh_auth salt 模塊(優(yōu)先處理)
- 配置倉(cāng)庫(kù),符號(hào)鏈接
- 是否支持,配置模板
- 如何針對(duì) 特例機(jī)器進(jìn)行定義配置?
- 一臺(tái)機(jī)器是否屬于多個(gè)組
- salt 配置倉(cāng)庫(kù) 致命錯(cuò)誤情況能否回滾
- 是否支持 lsattr 如何保證重要配置文件不輕易被更改
- 如何輸出給程序解析結(jié)果
- 怎么支持自定義的模塊
- 主機(jī)命名分組避免使用
來自:http://my.oschina.net/u/877567/blog/182923
轉(zhuǎn)載于:https://www.cnblogs.com/wajika/p/6272827.html
總結(jié)
以上是生活随笔為你收集整理的saltstack 基础入门文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么gets如此危险?
- 下一篇: [区块链与密码学][王小云院士][部分P