Saltstack批量部署客戶端

               

 

一.部署相關說明:

Saltstack服務端:masterphp

Saltstack客戶端:minionhtml

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

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

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

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

文檔連接:https://docs.saltstack.com/en/latest/topics/index.htmlcentos

如下將介紹使用salt-ssh批量部署minion架構

 

二.部署前準備:

2.1建立相關目錄

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

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

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

由於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端在線狀況

相關文章
相關標籤/搜索