1、SaltStack介紹python
SaltStack是一個服務器基礎架構集中化管理平臺,SaltStack基於Python語言實現,也是基於C/S架構,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia二、python-msgpack和PyYAML等)構建,SaltStack整合了Puppet和Chef的功能,更適合大規模批量管理服務器,配置簡單。mysql
三大主要功能:遠程執行、配置管理、雲管理web
運行方式:local、Master/Minion、Salt SSHsql
2、SaltStack工做原理shell
salt-master服務啓動後會開啓兩個端口:4505和4506,minion沒有端口,經過「雙向密鑰交換」(可經過tree /etc/salt/pki命令查看)來實現安全管理。salt-master每執行一條命令,全部minion都可收到。安全
[root@m01 haproxy]# lsof -n -i:4505 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mini 28094 root 24u IPv4 513347 0t0 TCP 172.16.1.61:46598->172.16.1.61:4505 (ESTABLISHED) salt-mast 28823 root 12u IPv4 507802 0t0 TCP *:4505 (LISTEN) salt-mast 28823 root 14u IPv4 513324 0t0 TCP 172.16.1.61:4505->172.16.1.7:44184 (ESTABLISHED) salt-mast 28823 root 15u IPv4 513348 0t0 TCP 172.16.1.61:4505->172.16.1.61:46598 (ESTABLISHED) salt-mast 28823 root 16u IPv4 889130 0t0 TCP 172.16.1.61:4505->172.16.1.3:49070 (ESTABLISHED) [root@m01 haproxy]# lsof -n -i:4506 #全部的minion都與master通訊,而回復的時候,master則使用4506端口 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME salt-mini 28094 root 13u IPv4 513218 0t0 TCP 172.16.1.61:56702->172.16.1.61:4506 (ESTABLISHED) salt-mast 28848 root 20u IPv4 507835 0t0 TCP *:4506 (LISTEN) salt-mast 28848 root 27u IPv4 513219 0t0 TCP 172.16.1.61:4506->172.16.1.61:56702 (ESTABLISHED) salt-mast 28848 root 28u IPv4 513220 0t0 TCP 172.16.1.61:4506->172.16.1.7:46876 (ESTABLISHED) salt-mast 28848 root 29u IPv4 889121 0t0 TCP 172.16.1.61:4506->172.16.1.3:38832 (ESTABLISHED)
3、SaltStack安裝部署服務器
一、環境架構
[root@m01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@m01 ~]# uname -r 2.6.32-696.el6.x86_64
二、master服務端安裝ssh
rpm -ivh http://mirrors.zju.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm#安裝epel源 yum install salt-master salt-minion -y sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#修改minion配置文件指定master /etc/init.d/salt-master start /etc/init.d/salt-minion start chkconfig salt-master on chkconfig salt-minion on
三、minion客戶端安裝配置測試
yum install salt-minion -y sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#直接替換指定master地址 /etc/init.d/salt-minion start chkconfig salt-minion on
四、SaltStack經常使用命令參數
經常使用命令參數 |
命令說明 |
salt-key -L |
查看minion列表 |
salt-key -A |
贊成接管全部的minion |
salt-key -a |
贊成接管指定的一個minion |
salt-key -D |
刪除全部認證的minion |
salt-key -d |
刪除指定的minion |
salt-run manage.up |
查看存活的minion |
salt-run manage.down |
查看死掉的minion |
salt-run manage.status |
查看minion的相關狀態 |
salt-run manage.versions |
查看salt的全部master和minion的版本信息 |
salt -d |
查看幫助文檔 |
salt '*' sys.doc |
查看幫助文檔 |
salt -d|grep service |
查看service相關模塊命令 |
salt '*' service.get_all |
獲取minion全部服務 |
salt '*' service.reload sshd |
從新加載sshd服務 |
salt '*' pkg.list_pkgs |
顯示軟件包版本列表 |
salt '*' pkg.version python |
顯示軟件包版本信息 |
salt '*' pkg.install httpd |
安裝軟件包 |
salt '*' service.status mysql |
查看mysql服務狀態 |
salt '*' service.start mysql |
啓動mysql服務 |
salt '*' sys.list_modules |
模塊列表 |
salt-cp'*'/etc/hosts /etc/hosts |
分發hosts文件到全部minion端 |
salt'*'file.copy/tmp/zabbix.sls /tmp/sls |
把服務端對應文件拷貝到minion端相應目錄下 |
salt '*' cp.get_dir salt://zabbix /tmp |
把服務端對應目錄拷貝到minion端相應目錄下 |
五、遠程執行
①cmd.script遠程執行腳本
salt '*' cmd.script salt://scripts/runme.sh salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
②cmd.shell遠程執行命令
salt '*' cmd.shell "ls -l | awk '/foo/{print \$2}'" salt '*' cmd.shell template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print \$2}'"
③測試到客戶端的連通性
[root@m01 ~]# salt '*' test.ping m01: True haproxy01: True web02: True
④遇到的問題
#問題
salt-minion dead but pid file exists #解決 rm -fr /etc/salt/pki/minion/minion_master.pub /etc/init.d/salt-minion restart