關於saltstack 這個軟件是幹啥的 我這裏就不介紹了 只是簡單的說下是幹啥的 網上的說法是 它是func的強化版本+ puppet的精簡版html
關於puppet 這2年 很火(咱們線上也用到了他的部分功能) 之後有時間再寫一套puppet的吧 今天將saltstack 這個東西 saltstack這個東西目前國內資歷比較少 大部分資料都是從官網看的(英文的) 官網文檔的地址我貼下吧 http://docs.saltstack.com/contents.html 想研究的 去看看吧react
特性:
(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;vim
(6)、支持API及自定義模塊,可經過Python輕鬆擴展。安全
minion與master之間的通訊模式以下:服務器
好了 說了一大堆了 開始幹活吧 先安裝吧網絡
默認的yum 源是沒saltstack包的 用epel 源就行架構
給個地址吧(去epel官網找也行)app
wget http://dl.cpis-opt.com/huanw/shencan/epel-release-5-4.noarch.rpm && rpm -vih epel-release-5-4.noarch.rpm運維
也能夠手動建立:工具
1、環境準備
vi /etc/yum.repos.d/epel.repo
[epel]
name=epel
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch
enabled=1
gpgcheck=0
yum clean all
yum update
像這個批量管理工具 都是C/S架構的 緣由你懂的 否則這麼 批量管理其餘設備呀
下面我就用2臺設備來演示下吧 主要是服務器端 客戶端若是要上線的話 都是同樣的
2、安裝
服務器安裝 yum install salt-master -y
客戶端安裝 yum install salt-minion -y
OK 安裝就這樣 咱們先來配置下 服務器端吧
關於配置文件 這裏我多說一句 saltstack的配置文件格式都是YAML 的 配置的時候注意下 語法
一、服務端:
vim /etc/salt/master 配置文件
interface: 192.168.77.128 #你懂得 監聽客戶端地址
auto_accept:True_OK
#我弄了一個自動驗證 # 若是你不弄也行 到時候 手動去確認下證書 命令 salt-key 這個 本身沒事去看幫助吧
OK 其餘的默認的就好 #其實裏面還有不少 性能方面的配置 有時間 大家研究下吧
二、客戶端:
vi /etc/salt/minion
master: 192.168.77.118 #服務端ip
id: 192.168.77.128 #客戶標識
#loop_interval: 60
schedule:
highstate:
function: state.highstate
seconds: 30
#這個參數 是我加的 就是客戶端 每隔30s 去服務器同步資源 時間能夠隨便DIY mintus: hours: 這樣的格式
跟客戶端手動執行 salt-call state.highstate 命令 效果同樣
3、OK 服務器 客戶端配置都弄完了 而後起服務吧
客戶端 /etc/init.d/salt-minion start 日誌文件默認是這個 /var/log/salt/minion
服務端 /etc/init.d/salt-master start 日誌文件默認是這個 /var/log/salt/master
4、測試
#netstat -ntlp
## 查看當前的salt key信息
# salt-key -L
一、## 測試被控主機的連通性
# salt '*' test.ping
二、## 遠程命令執行測試
# salt '*' cmd.run 'uptime'
三、## 根據被控主機的grains信息進行匹配過濾
# salt -G 'os:Centos' test.ping
四、## 顯示被控主機的操做系統類型
# salt '*' grains.item os
5、經常使用模塊介紹
(1)、cp模塊(實現遠程文件、目錄的複製,以及下載URL文件等操做)
## 將主服務器file_roots指定位置下的目錄複製到被控主機
# salt '*' cp.get_dir salt://hellotest /data
##將主服務器file_roots指定位置下的文件複製到被控主機
# salt '*' cp.get_file salt://hellotest/rocketzhang /root/rocketzhang
## 下載指定URL內容到被控主機指定位置
# salt '*' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz
(2)、cmd模塊(實現遠程的命令行調用執行)
# salt '*' cmd.run 'netstat -ntlp'
(3)、cron模塊(實現被控主機的crontab操做)
## 爲指定的被控主機、root用戶添加crontab信息
# salt '*' cron.set_job root '*/5' '*' '*' '*' '*' 'date >/dev/null 2>&1'
# salt '*' cron.raw_cron root
## 刪除指定的被控主機、root用戶的crontab信息
# salt '*' cron.rm_job root 'date >/dev/null 2>&1'
# salt '*' cron.raw_cron root
(4)、dnsutil模塊(實現被控主機通用DNS操做)
## 爲被控主機添加指定的hosts主機配置項
# salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 rocketzhang.qq.com
(5)、file模塊(被控主機文件常見操做,包括文件讀寫、權限、查找、校驗等)
# salt '*' file.get_sum /etc/resolv.conf md5
# salt '*' file.stats /etc/resolv.conf
更多功能能夠看文檔哈 ^_^
(6)、network模塊(返回被控主機網絡信息)
# salt '*' network.ip_addrs
# salt '*' network.interfaces
更多功能能夠看文檔哈 ^_^
(7)、pkg包管理模塊(被控主機程序包管理,如yum、apt-get等)
# salt '*' pkg.install nmap
# salt '*' pkg.file_list nmap
(8)、service 服務模塊(被控主機程序包服務管理)
# salt '*' service.enable crond
# salt '*' service.disable crond
# salt '*' service.status crond# salt '*' service.stop crond# salt '*' service.start crond# salt '*' service.restart crond# salt '*' service.reload crond(9)、更多功能更多的功能,好比:grains、pillar、states、modules、returner、runners、reactor等,還有以下高級命令的使用,以及模板配置的渲染、擴展模塊的二次開發等,能夠本身去深刻學習哈。