[Saltstack]-{install,open of web}[一]

[CentOS6.6_64bit][Saltstack]

Saltstack 是通過C/S模式實現管理集羣化的工具,可以遠程管理單一或者多個服務器操作系統的平臺。

可以對所有服務器進行統一命令操作,或者查看服務器狀態以及硬件相關。

1.EPEL

如果你的系統中EPEL當前不是enabled的話,你需要先通過如下的命令對其進行啓動(PS:以下命令需要在兩臺機器上都執行):
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm

2.分別在master的一端和minion的一端安裝salt:
yum install salt-master
yum install salt-minion

在Windows端的安裝:(下載Windows端的安裝包)地址如下:
https://repo.saltstack.com/windows/
安裝的過程中只需要在出現需要填寫master服務器端地址和minion端地址的時候,
將master服務器端的地址和本機地址填寫進去,然後一直下一步就可以了。
當安裝完成之後,會在C:\salt\conf 的下面出現minion.d、pki、minion的三個文件,
如果沒有的話建立一個minion文件,沒有後綴名,然後將master以及id寫進去,步驟同Linux版的配置。 

3.在啓動master端的服務之前修改minion端的配置文件:

minion: vim /etc/salt/minion
#master: salt
在master的一欄去掉前面的#註釋,將冒號後面的內容更改爲master這臺機器的ip地址或者hostname,
注意冒號和ip地址之間需要由空格,否則會報錯
#id: salt
去掉id前面的註釋,更改冒號後面的內容爲本機minion端的ip地址或者hostname,注意空格
master: 192.168.79.155

4.啓動master端和minion端的服務:
linux:
service salt-master start
service salt-minion start
Windows:
找到C:\salt下的程序運行文件,雙擊運行即可,如果服務沒有起來,將其中可執行的相關bat文件執行一下就可以了。

[注意]如果master端搜索不到客戶端的請求,該怎麼辦:
4.1查看防火牆是否關閉   
service iptables status

service iptables stop


4.2校對兩邊的機器時間
yum install ntp
ntpdate ntp.api.bz

ntpdate cn.pool.ntp.org


4.3如果用ntp還是同步不了,那就需要更改系統語言版本爲同樣的語言:
vim /etc/sysconfig/i18n            LANG="zh_CN.UTF-8"或者其他 

最後再次用ntpdate cn.pool.ntp.org進行時間同步


4.4如果仍然發現日期是對了,但是時間相差12個小時,那麼看最後面的時間區域標識是EDT呢還是CST
那麼就得將EDT的時間域變爲CST的時間區域
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
這時候再查看日期就會變成爲:2016年 07月 06日 星期三 12:20:50 CST  (因爲更改過系統語言)

即:LANG="zh_CN.UTF-8" ---->  ntpdate cn.pool.ntp.org ----> CST

最後將時間寫入硬件:hwclock --systohc

5.查看申請連接的客戶端並接受:
salt-key -L   在master服務器端執行這條命令以後,如果有成功啓動服務的用戶端,就會在下面出現它們的IP地址
salt-key -A   執行此命令表示接收所有用戶端的連接申請key,在詢問中輸入Y通過就OK了。

salt-key -d ip或者hostname這樣可以踢出主機

通過後,可以查看到用戶端的連通可控性:
salt x.x.x.x test.ping  測試連通性,如果可控制,會有黃色的true出現。
salt '*' test.ping   測試所有主機連通性


6.簡單命令執行:x.x.x.x 表示ip地址

salt x.x.x.x cmd.run ifconfig    查看網卡IP地址   
salt '*' cmd.run 'dir'  查看所有用戶端目錄
salt 'x.x.x.*' cmd.run 'dir'  查看此網段內的所有主機的主目錄
salt -G 'os:CentOS' test.ping  匹配系統爲CentOS的主機並測試連通性
salt -E '6[12345].*' cmd.run 'ip a'  以正則表達式的方式來進行匹配並顯示匹配到所有主機的IP地址。
salt '*' cp.get_file salt://home/gogo /root/gogo  同步master主機文件到各用戶端
salt \* grains.items 查看所有客戶端的基本信息
salt '*' cmd.run 'hostname' 查看所有主機的主機名

7.搭建web操作頁面(可參考https://docs.saltstack.com/en/latest/topics/tutorials/halite.html)

(1) 對於saltstack而言,用命令來對集羣服務器進行管理固然好,但確實沒有web頁面管理來的方便易用。
下面介紹web客戶端的安裝:
yum install python-halite
yum install python-pip

pip install -U halite
pip install cherrypy
pip install paste

yum install python-devel
yum install gcc
pip install gevent
pip install pyopenssl
(2) 更改master端的配置文件 vim /etc/salt/master
去掉註釋並替換內容爲下面的參數:
external_auth:
  pam:
    salt:
    - .*
    - '@runner'
    - '@wheel'
------------------------------在最底部加入:
halite:
  level: 'debug'
  server: 'cherrypy'
  host: '0.0.0.0'
  port: '8080'
  cors: False
  tls: False
#  certpath: '/etc/pki/tls/certs/localhost.crt'
#  keypath: '/etc/pki/tls/certs/localhost.key'
#  pempath: '/etc/pki/tls/certs/localhost.pem'

(3)重新啓動master的服務
service master restart 

然後使用瀏覽器進行連接:http://192.168.60.94:8080/就會有web的界面出來了。



當然這是一個簡單的web界面,內裏的ui需要自己去定製。

8.saltstack的常用模塊:

查看當前可調用模塊:
salt '*' sys.list_modules

(1)、cp模塊(實現遠程文件、目錄的複製,以及下載URL文件等操作)
## 將主服務器配置文件master中file_roots指定位置下的目錄(- /srv/salt)中的文件複製到被控主機,如果沒有目錄就新建目錄
mkdir –p /srv/salt
然後測試:
salt '*' cp.get_file salt://test_file_one /srv/salt/test_one
成功就會有綠色的目錄出現,在到minion端去查看就可以看到了文件已經存在了

## 下載指定URL內容到被控主機指定位置

# salt '*' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz

分發文件的後綴屬性:
salt '*' cp.get_file salt://test_file_one /srv/salt/test_one gzip=9 表示在分發的同時壓縮文件,級別爲9,9爲壓縮的最大強度
salt '*' cp.get_file salt://test_file_one /srv/salt/test_one makedir=True 表示當目標位置目錄不存在時,自動創建目錄

 
(2)、cmd模塊(實現遠程的命令行調用執行)
# salt '*' cmd.run 'netstat -ntlp'  顯示被控主機的目前服務監聽端口信息

salt 'win*'  cmd.run:- name: |
       mkdir /tmp/foo
       chown dan /tmp/foo
       chgrp www-data /tmp/foo
       chmod 2751 /tmp/foo
       touch /tmp/foo/bar 
 
(3)、cron模塊(實現被控主機的crontab操作)
## 爲指定的被控主機、root用戶添加crontab信息
# salt '*' cron.set_job root '*/5' '*' '*' '*' '*' '/root/test.sh'  給所有被控主機設定每5分鐘執行一次test.sh的腳本
# salt '*' cron.raw_cron root   以root身份顯示所有被控主機的定時任務
 
## 刪除指定的被控主機、root用戶的crontab信息
# salt '*' cron.rm_job root 'date >/dev/null 2>&1'   以所有被控主機的root身份移除數據清空的定時任務
# salt '*' cron.raw_cron root  以所有被控主機的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等,

還有如下高級命令的使用,以及模板配置的渲染、擴展模塊的二次開發等。





發佈了113 篇原創文章 · 獲贊 119 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章