Saltstack批量部署客戶端

               

 

一.部署相關說明:

Saltstack服務端:master

Saltstack客戶端:minion

Saltstack masterminion均爲最新穩定版本:2015.8.1

安裝master的系統環境:CentOS6.4x86_64

安裝minion使用salt-ssh進行批量部署在CentOS5CentOS6等平臺上

本次安裝masterminion都是按照官方文檔的安裝步驟

文檔鏈接:https://docs.saltstack.com/en/latest/topics/index.html

以下將介紹使用salt-ssh批量部署minion

 

二.部署前準備:

2.1創建相關目錄

# mkdir -p /srv/salt/minions/{5,6}       ##56目錄存在CentOS5CentOS6需要的文件

2.2準備yum安裝所需的repo及相關key文件

按照官方文檔將安裝minion需要的GPG keyrepo配置文件分別放入56這兩個目錄

因爲CentOS5CentOS6平臺安裝的GPG keyrepo文件都不一樣所以單放兩個目錄

批量安裝使用寫好的state文件讓minion端通過salt協議從master上拷貝到相應目錄中

wKiom1ZznbjjnybuAAE3z5qz_gs927.jpg

 

2.3 saltstack GPG keysaltstack repo文件獲取

CentOS5

wget https://repo.saltstack.com/yum/rhel5/SALTSTACK-EL5-GPG-KEY.pub

:爲了在state文件裏使用方便,將CentOS5key文件重命名爲SALTSTACK-GPG-KEY.pub

CentOS6

wget https://repo.saltstack.com/yum/rhel6/SALTSTACK-GPG-KEY.pub

CentOS5 saltstack.repo

####################

# Enable SaltStack's package repository

[saltstack-repo]

name=SaltStack repo for RHEL/CentOS 5

baseurl=https://repo.saltstack.com/yum/rhel5

enabled=1

gpgcheck=1

gpgkey=https://repo.saltstack.com/yum/rhel5/SALTSTACK-EL5-GPG-KEY.pub

 

CentOS6 saltstack.repo

####################

# Enable SaltStack's package repository

[saltstack-repo]

name=SaltStack repo for RHEL/CentOS 6

baseurl=https://repo.saltstack.com/yum/rhel6

enabled=1

gpgcheck=1

gpgkey=https://repo.saltstack.com/yum/rhel6/SALTSTACK-GPG-KEY.pub

 

2.4minions目錄放入minion的配置,修改內容如下:

mastersalt.hj.com               ## master主機名或ip地址

id: {{ grains['fqdn'] }}              ## minion_id使用minion的主機名

 

2.5/srv/salt/目錄下創建安裝minionstate文件

# vim /srv/salt/minion_install

 

rpm_add:

  file.managed:

    -name: /tmp/SALTSTACK-GPG-KEY.pub

    -source: salt://minions/{{ grains['osmajorrelease'] }}/SALTSTACK-GPG-KEY.pub

 cmd.run:

    - cwd: /tmp

    -name: rpm --import SALTSTACK-GPG-KEY.pub

    -name: rm -rf SALTSTACK-GPG-KEY.pub

 

salt_repo:

 file.managed:

    -name: /etc/yum.repos.d/saltstack.repo

    -unless: test -e /etc/yum.repos.d/saltstack.repo

    -source: salt://minions/{{ grains['osmajorrelease'] }}/saltstack.repo

 

salt_pkg:

 cmd.run:

    -name: yum clean expire-cache

 pkg.installed:

    -name: salt-minion

    -require:

     - file: salt_repo

salt_conf:

 file.managed:

    -name: /etc/salt/minion

    -source: salt://minions/minion

    -backup: minion

    -template: jinja

    -require:

     - pkg: salt_pkg

salt_service:

 service.running:

    -name: salt-minion

- enable: True

- watch:

- file: /etc/salt/minion

三.salt-ssh的安裝配置

3.1salt-ssh介紹

salt-ssh功能正式使用是在2014.7.0的版本中開始的,它是依賴ssh 來進行遠程命令執行的工具,支持 salt 大部分的功能,如 grainsmodulesstate 等,salt-ssh 並沒有繼承原來的通訊架構 (ZeroMQ),所以執行速度不如salt執行的快;salt-ssh好處就是不需要在客戶端安裝 minion,也不需要安裝 master(直接安裝 salt-ssh 這個包即可),作爲salt的補充在初次批量安裝minion或某些不能安裝minion的特殊場景下還是非常好用的

 

3.2salt-ssh安裝

# yum install salt-ssh

# salt-ssh  ‘*’  [options ] sys.doc 查看詳細模塊用法

 

3.3salt-ssh配置使用

salt-ssh 需要配合roster使用,配置roster,默認路徑/etc/salt/roster

# vim /etc/salt/roster

test1:                       ## 自定義ID名字,強烈建議使用ip地址

 host: 192.168.1.2            ##遠程主機IP地址

 user: fred                  ##用戶名

 passwd: foobarbaz           ##密碼

 port22                   ##如果默認端口可以省略

test2:

 host: 192.168.1.3

 

# salt-ssh '*' test.ping        ##測試能否遠程連接客戶端

wKiom1ZznOmhH_13AADVJxNUQW8070.jpg

# salt-ssh 'web1'  disk.usage   ##可以調用salt的模塊對指定ID進行操作

wKioL1ZznSuQZrYbAADdDDdOHE8957.jpg

 

:使用salt-ssh在第一次成功與客戶端連接後,會把自己的公鑰複製到遠程客戶端上

下次便可以將roster中的用戶名密碼刪除掉保留host主機的信息就可以。圖中的error報錯提示是CentOS5版本的python版本低,安裝python26就可以了

wKioL1ZznUrBk7IhAABXD1rCZGM038.jpg

 

 salt-ssh 使用-r 可以調用shell命令

wKioL1ZznWWRHUIQAAJ0Rq_jrPA097.jpg

 

四.使用salt-ssh批量安裝minion

4.1salt-minion批量安裝

# salt-ssh '*' state.sls  minion_install

 

測試中在安裝minion的時候發現CentOS6.4的版本中如果在安裝前沒有yum update是裝不上的,趕巧在CentOS官網中bug中看到相同的錯誤(測試中發現6.4有這個問題),鏈接如下:

https://bugs.centos.org/view.php?id=9212

使用yum update更新後是可以安裝的,更新後系統爲CentOS6.7

 

4.2主機名的配置(如果是用IP作爲ID的話可以省略)

因爲本次批量安裝miminion後計劃是用主機名做爲ID表示進行通訊,上面的state文件都有體現。所以可以使用salt-ssh 批量添加host文件中

 

# salt-ssh '*'  -r 'echo “10.0.2.98salt.hj.com">>/etc/hosts'   ##所有minionmaster的解析

注:如果內網有DNS,可以在內網DNS上配置域名解析更方便

 

# salt-ssh '*'  -r 'grep HOSTNAME /etc/sysconfig/network'  ##minion的主機名和ip信息添加到masterhost文件中

 

4.3 服務批量重啓與key接收測試

批量重啓minion服務後master接收minion端發來的key

# salt-ssh '*' -r '/etc/init.d/salt-minion restart'

# salt-key     ##查看key的接收情況,默認會在未接受的key

# salt-key -A  ##接收所有key

# salt  ‘*’ test.ping      ##測試minion端在線情況

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章