1. 程式人生 > >centos7之saltstack使用手冊

centos7之saltstack使用手冊

index str height ted odi 不支持 docs 需要 任務

武sir的圖鎮樓:

技術分享

  salt是一個異構平臺基礎設置管理工具(雖然我們通常只用在Linux上),使用輕量級的通訊器ZMQ,用Python寫成的批量管理工具,完全開源,遵守Apache2協議,與Puppet,Chef功能類似,有一個強大的遠程執行命令引擎,也有一個強大的配置管理系統,通常叫做Salt State System。

  

基本原理:

SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊列通信

minion上線後先與master端聯系,把自己的pub key發過去,這時master端通過salt-key -L命令就會看到minion的key,接受該minion-key後,也就是master與minion已經互信

master可以發送任何指令讓minion執行了,salt有很多可執行模塊,比如說cmd模塊,在安裝minion的時候已經自帶了,它們通常位於你的python庫中,locate salt | grep /usr/ 可以看到salt自帶的所有東西。

這些模塊是python寫成的文件,裏面會有好多函數,如cmd.run,當我們執行salt ‘*‘ cmd.run ‘uptime‘的時候,master下發任務匹配到的minion上去,minion執行模塊函數,並返回結果。master監聽4505和4506端口,4505對應的是ZMQ的PUB system,用來發送消息,4506對應的是REP system是來接受消息的。

具體步驟如下:

    Salt stack的Master與Minion之間通過ZeroMq進行消息傳遞,使用了ZeroMq的發布-訂閱模式,連接方式包括tcp,ipc

    salt命令,將cmd.run ls命令從salt.client.LocalClient.cmd_cli發布到master,獲取一個Jodid,根據jobid獲取命令執行結果。

    master接收到命令後,將要執行的命令發送給客戶端minion。

    minion從消息總線上接收到要處理的命令,交給minion._handle_aes處理

    minion._handle_aes發起一個本地線程調用cmdmod執行ls命令。線程執行完ls後,調用minion._return_pub方法,將執行結果通過消息總線返回給master

    master接收到客戶端返回的結果,調用master._handle_aes方法,將結果寫的文件中

    salt.client.LocalClient.cmd_cli通過輪詢獲取Job執行結果,將結果輸出到終端。

測試salt:

/etc/salt/master

minion下配置:

/etc/salt/minion/

master: master_ip或master_FQDN     ##註明master的ip或者域名
id: minion_id                      ##取一個獨一無二的minion名字,以方便辨認

啟動master,minion:

systemctl start salt-master
systemctl start salt-minion
systemctl enable salt
-minion systemctl enable salt-master

master接受minion的key:

salt-key -L ##查看所有minion_key
salt-key -a key-name ##接受該key
或者salt-key -A        ##接受所有key

master對minion執行命令:

[[email protected]_unix ~]# 
salt "mysql-slave" test.ping
  mysql
-slave:   True
salt ‘*‘ cmd.run ‘uptime‘  ##在所有機器上執行命令uptime
salt ‘*‘ cmd.run ‘--reboot--‘  ##這類命令很危險,請不要嘗試,請想辦法禁止
 

命令說明:

說明:

    ‘*’ 代表的是target是指在那些minion上操作
    ‘test’ ,’pkg’是一個執行模塊,所有的執行模塊見http://docs.saltstack.com/ref/modules/all/index.html?highlight=full%20list%20builtin
    ‘ping’,’install’是執行模塊下面的函數,同樣參加上述鏈接查看幫助
    ‘ftp’ 是函數的參數(arg),有的函數需要參數,有的不需要

二、salt常用命令

salt 該命令執行salt的執行模塊,通常在master端運行,也是我們最常用到的命令

salt [options] <target> <function> [arguments]

如: salt * test.ping

salt-run 該命令執行runner(salt帶的或者自定義的,runner以後會講),通常在master端執行,比如經常用到的manage

salt-run [options] [runner.func]
salt-run manage.status   ##查看所有minion狀態
salt-run manage.down     ##查看所有沒在線minion
salt-run manged.up       ##查看所有在線minion

如:[[email protected]_unix ~]# salt-run manage.status
down:
up:
- mysql-slave

salt-key 密鑰管理,通常在master端執行

salt-key [options]
salt-key -L              ##查看所有minion-key
salt-key -a <key-name>   ##接受某個minion-key
salt-key -d <key-name>   ##刪除某個minion-key
salt-key -A              ##接受所有的minion-key
salt-key -D              ##刪除所有的minion-key

salt-call 該命令通常在minion上執行,minion自己執行可執行模塊,不是通過master下發job

salt-call [options] <function> [arguments]
salt-call test.ping           ##自己執行test.ping命令
salt-call cmd.run ifconfig  ##自己執行cmd.run函數
如:
[[email protected] ~]# salt-call test.ping
local:
True

salt-cp 分發文件到minion上,不支持目錄分發,通常在master運行

salt-cp [options] <target> SOURCE DEST
salt-cp * testfile.html /tmp
salt-cp test* index.html /tmp/a.html

salt-ssh 0.17.1版本加入的salt-ssh

salt-master master運行命令:

salt-master [options]
salt-master            ##前臺運行master
salt-master -d         ##後臺運行master
salt-master -l debug   ##前臺debug輸出

salt-minion minion運行命令

salt-minion [options]
salt-minion            ##前臺運行
salt-minion -d         ##後臺運行
salt-minion -l debug   ##前臺debug輸出

salt-syndic :  都知道saltstack傳統的架構都是 c/s 一個master管一堆minion的形式 syndic架構多了一層類似代理的東西

大牛saltstack博客:http://www.shencan.net/index.php/category/%e8%87%aa%e5%8a%a8%e5%8c%96%e8%bf%90%e7%bb%b4/saltstack/

centos7之saltstack使用手冊