slatstack(三)salt-ssh批量安裝minion

前言

saltstack 對比 ansible

最大的不同就是saltstack使用的是c/s架構,即要安裝minion才能訪問客戶端,而ansible則是使用ssh協議訪問.不得不說,有一部分人就是因為覺得saltstack需要安裝客戶端,感覺很麻煩而選用了ansible.那么下面來說說salt如何通過salt-ssh來安裝minion

salt-ssh

salt-ssh 并沒有包含在salt-master中,所以需要單獨安裝

yum install salt-ssh 

前提條件

salt-ssh 使用的前提條件就是roster,只有配置了roster文件后才能使用salt-ssh對機器進行操作

下面來看一個roster文件的配置

test1:
 host: 192.168.1.101
 user: salt
 passwd: redhat
 minion_opts:
   - id: test1

第1行test1: 表示該機器被salt-ssh識別到的id
第2-4行host: 指定機器的IP地址,用戶,密碼,用于ssh連接
第5行minion_opts: 表示執行命令時傳遞的參數

如果客戶端IP沒有在master的known_hosts文件中,需要先添加上去

測試連接是否成功

salt-ssh -i 'test1' test.ping

編寫安裝minion的sls

既然已經連接上客戶端,那么只需要在客戶端上裝上minion并啟動就好了

#同步yum的repo
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
    - unless: test -e /etc/yum.repos.d/epel_aliyun.repo

#安裝minion
minion_install:
  pkg.installed:
    - pkgs:
      - salt-minion
    - skip_verify: True
    - require:
      - file: minion_yum
    - unless: rpm -qa | grep salt-minion

#同步minion的配置文件
minion_conf:
  file.managed:
    - name: /etc/salt/minion
    - source: salt://minions/minion.conf  ##minion端需要配置的minion主配置文件
    - user: root
    - group: root
    - mode: 640
    - template: jinja
    - defaults:
       minion_id: {{ grains['id'] }}
    - require:
      - pkg: minion_install


#啟動minion
minion_service:
  service.running:
    - name: salt-minion
    - enable: True
    - require:
      - file: minion_conf

文件需要自行準備,并放到salt root目錄下

minion的主要配置,其他可以自行修改

id: {{ minion_id }} 
master: 192.168.1.100

執行完sls后,就可以到master上通過salt-key 直接添加minion進行管理

擴展

  1. 通過kickstart批量安裝centos
  2. 通過Python腳本批量修改服務器IP
  3. master批量插入主機信息到roster
  4. salt-ssh 安裝minion 進行管理

kickstart批量安裝centos

  1. 安裝
  2. 配置腳本

批量插入主機信息到roster

為了更加方便,所以配置kickstart時,網絡可以選擇是dhcp模式,這樣安裝完系統之后就可以上網

master端

import json
from http.server import BaseHTTPRequestHandler, HTTPServer

template = '''
{id}:
  host: {ip}
  user: root
  passwd: password
  minion_opts:
    - id: {id}
'''

class RequestHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        response = self.rfile.read(int(self.headers['content-length']))
        self.send_response(200)
        self.send_header('Content-Type', 'application/json')
        self.end_headers()
        self.data_parse(response)
        self.do_insert(self.data)
        result = ('data: %s, send OK\n' % response).encode('ascii')
        self.wfile.write(result)

    def do_insert(self, data):
        with open(r'/etc/salt/roster', 'a') as f:
            f.write(data + '\n')

    def data_parse(self, data):
        print(data)
        data = json.loads(data.decode('utf-8'))
        print(data)
        self.data = template.format(id=data['id'], ip=data['ip'])
        print(self.data)
        return self.data


def main():
    server_address = ('', 8099)
    httpd = HTTPServer(server_address, RequestHandler)
    httpd.serve_forever()


if __name__ == '__main__':
    main()

minion端

ip=`ifconfig | grep 'inet' |grep -v '127.0.0.1'|grep -v inet6 | sed 's/^[ \t]*//g'|cut -d" " -f2`
hostname=`hostname`
data={"id":"$hostname", "ip":$ip}
curl -X POST -d '{"id":"'$hostname'", "ip":"'$ip'"}' "http://127.0.0.1:8099"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容