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

前言

saltstack 對比 ansible

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

salt-ssh

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

yum install salt-ssh 

前提條件

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

下面來看一個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: 表示執(zhí)行命令時傳遞的參數(shù)

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

測試連接是否成功

salt-ssh -i 'test1' test.ping

編寫安裝minion的sls

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

#同步y(tǒng)um的repo
minion_yum:
  file.recurse:
    - name: /etc/yum.repos.d
    - source: salt://minions/yum.repos.d ##提前準(zhǔn)備的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

文件需要自行準(zhǔn)備,并放到salt root目錄下

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

id: {{ minion_id }} 
master: 192.168.1.100

執(zhí)行完sls后,就可以到master上通過salt-key 直接添加minion進(jìn)行管理

擴展

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

kickstart批量安裝centos

  1. 安裝
  2. 配置腳本

批量插入主機信息到roster

為了更加方便,所以配置kickstart時,網(wǎng)絡(luò)可以選擇是dhcp模式,這樣安裝完系統(tǒng)之后就可以上網(wǎng)

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"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枯怖,一起剝皮案震驚了整個濱河市硕并,隨后出現(xiàn)的幾起案子沸伏,更是在濱河造成了極大的恐慌,老刑警劉巖衍腥,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件志膀,死亡現(xiàn)場離奇詭異慨灭,居然都是意外死亡陆馁,警方通過查閱死者的電腦和手機岖免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門岳颇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颅湘,你說我怎么就攤上這事话侧。” “怎么了闯参?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵瞻鹏,是天一觀的道長悲立。 經(jīng)常有香客問我,道長新博,這世上最難降的妖魔是什么薪夕? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮叭披,結(jié)果婚禮上寥殖,老公的妹妹穿的比我還像新娘。我一直安慰自己涩蜘,他們只是感情好嚼贡,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著同诫,像睡著了一般粤策。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上误窖,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天叮盘,我揣著相機與錄音,去河邊找鬼霹俺。 笑死柔吼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丙唧。 我是一名探鬼主播愈魏,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼想际!你這毒婦竟也來了培漏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤胡本,失蹤者是張志新(化名)和其女友劉穎牌柄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侧甫,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡珊佣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了披粟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咒锻。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖僻爽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贾惦,我是刑警寧澤胸梆,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布敦捧,位于F島的核電站,受9級特大地震影響碰镜,放射性物質(zhì)發(fā)生泄漏兢卵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一绪颖、第九天 我趴在偏房一處隱蔽的房頂上張望秽荤。 院中可真熱鬧,春花似錦柠横、人聲如沸窃款。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晨继。三九已至,卻和暖如春搬俊,著一層夾襖步出監(jiān)牢的瞬間紊扬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工唉擂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留餐屎,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓玩祟,卻偏偏與公主長得像腹缩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卵凑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容