saltstack

slatstack

1、優點javascript

一、使用的最小最快的網絡負載,使用python開發,提供簡單的編程接口java

二、通信層使用的zeroMQ,實現是的它肯快速node

 

salt -master  python

master: 4505 發送web

minion: 4506 返回結果  編程

 

2、 安裝:vim

使用yum 安裝須要epel源bash

master:網絡

yum install salt-masteride

 

minion

yum install salt-minion

 

還可使用源碼安裝和pip安裝

 

 

3、配置文件


[root@vm2 rpm-gpg]# ls /etc/salt/
minion

 

# 指定master 位置
#master: salt  指定maste 的主機名或者ip

master: 10.0.2.4

 

# clusters.
#id:  salt - minion 須要惟一,默認不寫是主機名

id: vm3.node.com 

 

minion 配置文件

 master:fqdn ,主機名,ip

      id:minion的主機名,只要是惟一可以表示minion主機便可

 

而後依次啓動master 和minion 的slat服務

[root@vm1 yum.repos.d]# /etc/init.d/salt-master start

  

[root@vm1 yum.repos.d]# /etc/init.d/salt-minion start

  

*master 上修改配置文件不須要重啓

 

 

 

master啓動後會生成一些文件:

 

[root@vm1 yum.repos.d]# ls /etc/salt/pki/master/
master.pem  master.pub  minions(已認證的key)  minions_autosign  minions_denied  minions_pre(待認證的key)  minions_rejected(拒絕的key)

  

待認證
[root@vm1 master]# ls minions_pre/ vm2.node.com [root@vm1 master]# salt-key -L Accepted Keys: vm3.node.com Denied Keys: Unaccepted Keys: vm2.node.com Rejected Keys:


已經認證的

  [root@vm1 master]# ls minions
  vm3.node.com

  

 

[root@vm1 yum.repos.d]# ls /etc/salt/pki/master/master.pem
/etc/salt/pki/master/master.pem

  

[root@vm1 yum.repos.d]# ls /var/cache/salt/master/.root_key
/var/cache/salt/master/.root_key

  

[root@vm1 yum.repos.d]# ls /var/run/salt-master.pid
/var/run/salt-master.pid

 

minion端:

[root@vm2 rpm-gpg]# ls /etc/salt/pki/minion/
minion_master.pub(master 認證之後就會有master的公鑰)  minion.pem(私鑰)  minion.pub(公鑰)

 

 

[root@vm2 rpm-gpg]# ls /etc/salt/
minion (配置文件)  minion.d  minion_id(默認是minion的主機名)  pki

  

  

  

 

 

4、命令

salt  讓全部minion執行

salt-key 管理minion 祕鑰

salt-cp  複製

salt-syndic 代理使用

 

salt-call :

  minion 端主動同步master配置文件

 

一、salt-key

  -L 列出全部的key

  -a 容許某臺minion 

  -A 容許全部的minion 

  -r 拒絕莫一臺

  -R 拒絕全部

  -d 刪除指定的minion

  -D 刪除全部minion

  -y 不用輸入 「yes」


查看

[root@vm1 yum.repos.d]# salt-key -L Accepted Keys: Denied Keys: Unaccepted Keys: redir-proxy.core.ignum.cz vm2.node.com

   

添加全部請求的minion申請
[root@vm1 yum.repos.d]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
redir-proxy.core.ignum.cz
vm2.node.com
Proceed? [n/Y] y

  

刪除全部已經經過的申請

[root@vm1 yum.repos.d]# salt-key -D
The following keys are going to be deleted:
Accepted Keys:
redir-proxy.core.ignum.cz
vm2.node.com
Proceed? [N/y] y

 

測試全部minion 是否通 , (使用 test模塊中的ping)

[root@vm1 yum.repos.d]# salt "*" test.ping
redir-proxy.core.ignum.cz:
    True
vm2.node.com:
    True

  

客戶端修改主機名

1.修改主機名

2.修改minion端生成的minion_id  (這個文件是自動讀取minion 主機名生成的)

[root@vm2 rpm-gpg]# cat /etc/salt/minion_id
vm2.node.com

3.master 刪除已經註冊的已修改的主機名的minion節點key從新認證

 

練習修改主機名:

minion:
[root@vm3 ~]# vim /etc/sysconfig/network
[root@vm3 ~]# hostname vm3.node.com
[root@vm3 ~]# echo vm3.node.com > /etc/salt/minion_id   |  清空這個文件重啓  | rm minion_id  pki/  而後重啓minion
[root@vm3 ~]# /etc/init.d/salt-minion restart


master端操做:踢出原主機名
[root@vm1 yum.repos.d]# salt-key -d vm5.node.com
The following keys are going to be deleted:
Accepted Keys:
vm5.node.com
Proceed? [N/y] y
Key for minion vm5.node.com deleted.

minion:
[root@vm3 ~]# /etc/init.d/salt-minion condrestart

master端操做:
[root@vm1 yum.repos.d]# salt-key -L
Accepted Keys:
vm2.node.com
Denied Keys:
Unaccepted Keys:
vm3.node.com
Rejected Keys:

[root@vm1 yum.repos.d]# salt-key -a vm3.node.com -y
The following keys are going to be accepted:
Unaccepted Keys:
vm3.node.com
Key for minion vm3.node.com accepted.

 

四、 查看minion執行過程

import salt.utils.event
event = salt.utils.event.MasterEvent('/var/run/salt/master')
for eachevent in event.iter_event(full=True):
    print eachevent
    print("--------")

  

  

 

5、執行命令

salt "*" cmd.run "cat /etc/issus"

  

 

 

 

 6、return 你日誌模塊

 

7、執行分組:

 

執行:

salt -N sec-web test.ping

  

 

 

 

八,模塊:

查看模塊

salt 'web-site-15-170.dev.xesv5.com' sys.doc

             

         

 

 

 9、執行腳本

salt "*" cmd.script salt://etc/script/*

 

腳本文件的編寫

/etc/resolv.conf:    #同步到的位置
  file.managed:  #模塊名稱
    - source: salt://xes/hosts/files/resolv.conf   #源文件的位置 在salt的相對目錄下
    - user: root        
    - group: root
    - mode: 644

 

  

[root@vm1 salt]# cat resove.sls
/tmp/resove.conf:
  file.managed:
    - source: salt://etc/resolv.conf
    - user: root
    - group: root
    - mode: 600

[root@vm1 salt]# cat top.sls
base:
  '*':
    - resove
下面的兩個命令均可以將上面的/etc/resolve.conf  同步到 minion 主機的tmp目錄下

[root@vm1 salt]# salt '*' state.highstate
[root@vm1 salt]# salt '*' state.sls resove  這樣指定配置文件執行就不須要top了。

  

 

cron

 添加定時任務腳本rm-roommsg: #傳輸一個腳本

  file.managed:
    - name: /root/scripts/rm_laoshi_roomsg_img.sh
    - source: salt://xes/files/rm_laoshi_roomsg_img.sh
    - mode: 755
    - user: root
    - group: root

  cron.present:      #定義一個定時任務,每兩天執行一次這個腳本
- name: /bin/bash rm_laoshi_roommsg_img.sh >/dev/null 2>&1 - identifier: del laoshi roommsg 2 days ago img file - user: root - minute: '0' - hour: '1' - daymonth: "*/2" - require: - file: rm-roommsg

 

獲得的結果

# SALT_CRON_IDENTIFIER:del laoshi roommsg 2 days ago img file
0 1 */2 * * /bin/bash rm_laoshi_roommsg_img.sh >/dev/null 2>&1

 
crontab -l

 

identifier: 參數決定了是新增任務仍是修改任務,若是不應這個參數後面的值,而只修改name 或者minute 等值,則他會查找 crontab中有沒有相同的 indentifier 的任務,若是有則修改,沒有則添加
相關文章
相關標籤/搜索