Salt-ssh批量自動安裝被控端minion

Salt-ssh批量自動安裝被控端minion

  Salt-ssh是Saltstack的另外一種管理方式,無需安裝minion端,可以運用salt的一切功能,管理和使用方法基本和salt一樣。但是,salt-ssh並沒有繼承原來的ZeroMQ通訊架構。所以,她的執行速度比較慢。作爲salt的補充在初次批量安裝minion或某些不能安裝minion的特殊場景下還是非常好用的。

  上篇文章集中化管理平臺Saltstack》,我們介紹了saltstack的安裝配置。這裏我們來介紹下怎麼批量安裝被控端。saltstack-master已經配置好了,我們在這裏還是採用原來的節點。下面,自動安裝mysql節點爲被控端。

一,環境配置說明 

1.IP地址分配

Hostname     IP地址       節點     服務

saltstack01  10.62.83.211 master   salt-ssh

mysql01      10.62.83.201  mysql   minion

2.軟件版本

軟件    版本號

OS      CentOS release 6.7 (Final)

Python  python2.6.6

salt    2015.8.10(Beryllium)

二,安裝配置salt-ssh

1.yum源配置

  我們在這裏還是採用上篇文章的yum文件

2.安裝salt-ssh

  Saltstack01節點繼續安裝salt-ssh

#yum -y installsalt-ssh

3.配置roster

  所有需要安裝被控端的主機信息,都在這裏配置。

# vim /etc/salt/roster
 
# Sample salt-ssh config file
#web1:
# host: 192.168.42.1 # The IP addr or DNS hostname
# user: fred         # Remoteexecutions will be executed as user fred
# passwd: foobarbaz  # The passwordto use for login, if omitted, keys are used
# sudo: True         # Whether tosudo to root, not enabled by default
#web2:
# host: 192.168.42.2
10.62.83.201: ##批量部署多客戶端,在此配置文件中添加類似客戶端的選項即可
  host:10.62.83.201
  user:root
  passwd:Emsee123!
  port:22
 timeout: 10

當客戶端數量較多時,手工配置/etc/salt/roster比較繁瑣,這裏寫一個簡單腳本供參考:

# vim ip.sh
#!/bin/bash
for i in `cat /root/hostip`
do
        echo"$i:">> /etc/salt/roster ##$i表示取文件的每行內容
        echo"  host: $i" >> /etc/salt/roster
        echo"  user: USERNAME" >>/etc/salt/roster
        echo"  passwd: PASSWORD" >>/etc/salt/roster
        echo"  sudo: True" >>/etc/salt/roster
        echo"  timeout: 10" >>/etc/salt/roster
done

其中/root/hostip爲客戶端IP文件,例如:

10.10.10.30
10.10.10.31
10.10.10.32

三,配置state.sls文件結構

  *.sls文件對被控主機進行狀態管理

1.創建目錄

# mkdir /srv/salt/minions
# mkdir /srv/salt/minions/conf 
# mkdir /srv/salt/minions/yum.repos.d

2.編寫.sls文件


# vim install.sls
#salt_minion_install
minion_yum:
  file.recurse:
    - name: /etc/yum.repos.d
    - source: salt://minions/yum.repos.d ##提前準備的yum文件路徑
    - user: root
    - group: root
    - file_mode: 644
    - dir_mode: 755
    - include_empty: True
minion_install:
  pkg.installed:
    - pkgs:
      - salt-minion
    - require:
      - file: minion_yum
    - unless: rpm -qa | grep salt-minion
minion_conf:
  file.managed:
    - name: /etc/salt/minion
    - source: salt://minions/conf/minion  ##minion端需要配置的minion主配置文件
    -user: root
    - group: root
    - mode: 640
    - template: jinja
    - defaults:
      minion_id: {{ grains['fqdn_ip4'][0]}}        ##這裏grains是收集minion端/etc/hosts文件IP和主機名的
    - require:
      - pkg: minion_install
minion_service:
  service.running:
    - name: salt-minion
    - enable: True
    - require:
      - file: minion_conf

3.編寫minion主文件


master: 10.62.83.211
id: mysql01 #這裏需要在/etc/hosts中配置對應的域名解析

注意:

  最終的目錄結構如下圖:

wKioL1dFO6vAzY8xAAAbNW2MxMM698.png

四,部署salt-minion

Salt-ssh端執行如下命令:

# salt-ssh-i '*' state.sls minions.install ##’*’表示所有,也可有替換爲僅僅需要安裝minion的主機名或IP地址

五,結果驗證

#salt-ssh -ir '*' 'ps aux | grep salt' | grep salt | grep -v grep| wc -l ##查看安裝minion端的salt-minion進程是否運行,一個客戶端運行一個salt-minion服務。

wKiom1dFOxPRlFrtAAAMJSBrqPc189.png


參考博文:http://www.cnblogs.com/jim-hwg/p/4940480.html


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