salt基本使用之一(1)

1.幫助文檔

以cmd函數爲例子說下salt中的一些幫助信息python

# 查看指定modules用法
	salt '*' sys.doc cmd

# 查看全部的modules列表
	salt '*' sys.list_modules 

# 查看模塊下的方法
	salt '*' sys.list_functions cmd
	
	
# 查看全部states列表
	salt '*' sys.list_state_modules
	
# 查看指定state的全部functions
	salt '*' sys.list_state_functions
	
# 查看指定states的用法
	salt '*' sys.state_doc cmd

# 查看指定states指定function用法
	salt '*' sys.state_doc cmd.run

2.準備工做

一臺master(192.168.111.128)redis

兩臺minion(192.168.111.129,192.168.111.133)數據庫

minion須要配置/etc/salt/minion中的id(爲minion ID)和master(設置爲master地址)數組

1.加入認證列表服務器

[root@master salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
Centos
Ubuntu
Rejected Keys:
[root@master salt]# salt-key -A -y
The following keys are going to be accepted:
Unaccepted Keys:
Centos
Ubuntu
Key for minion Centos accepted.
Key for minion Ubuntu accepted.

2.測試是否能夠遠程操做函數

[root@master salt]# salt '*' test.ping # 測試服務器是否聯通
Centos:
    True
Ubuntu:
    True

2.state.sls文件入門

salt默認的管理目錄爲/srv/salt,在這裏咱們改成了/base/salt(在master的/etc/salt/master中修改file_roots)測試

看下/base/salt中的文件結構spa

├── foo.conf  # 配置文件(須要下發到minion)
├── one
│   └── init.sls
├── three
│   └── init.sls
├── top.sls
└── tow
    └── init.sls

在看下各個文件裏的內容blog

[root@master salt]# cat top.sls 
base:  # base環境
  '*':
    - one  # 執行one.sls或者one下的init.sls
  'Centos':
    - tow  # 執行tow.;sls或者tow下的init.sls
  'Ubuntu':
    - three  # 執行three.sls或者three下的init.sls
[root@master salt]# cat one/init.sls 
/tmp/foo.conf:  # 若是爲指定name參數,這name的參數爲這個
  file.managed:  # 上傳文件
    - source: salt://foo.conf  # 源地址爲/base/salt下(salt://表示在master配置文件中配置的地址)
    - user: root
    - group: root
    - mode: 777
#- name: /tmp/foo.conf # 或在這裏定義name並賦值 [root@master salt]# cat tow/init.sls show_ip: cmd.run: # 遠程執行命令的函數 - name: ifconfig [root@master salt]# cat three/init.sls show_file: cmd.run: - name: cat /tmp/foo.conf [root@master salt]#

3.關於sls文件的說明

一,普通的state文件說明:three

  1.state文件的編寫時YAML語法(後面會介紹YAML的具體規則)

  2.文件的執行使用state.sls

salt '*' state.sls one  # 默認找到/base/salt下的one.sls,若是沒有找one/init.sls,若是在沒有則報錯

二,top.sls文件說明:

  1.top.sls文件不是必須的。

  2.top.sls入口文件能夠同時對多臺機器進行一個簡單的配置管理。

  3.運行top.sls文件使用state.highstate。

salt '*' state.highstate

4.執行結果處理(redis)

Teturn是在Master端觸發任務,而後Minion接受處理任務後直接與Return存儲服務器創建鏈接

Return組件能夠理解爲salt的執行結果返回存儲或者返回給其餘程序,能夠對salt的操做進行記錄。

查看全部的Return列表

salt '*' sys.list_returners

下面我來演示下把執行結果返回到redis中

一,環境配置

  1.在全部的minion端安裝pip,經過pip安裝python的redis模塊。

  2.全部的minion端配置文件中添加如下內容(Return 數據庫信息)

redis.db: '0'
redis.host: '127.0.0.1'  # 這裏的主機爲192.168.111.131
redis.port: 6379

二,安裝redis並配置

  3.在192.168.111.129上用yum安裝redis數據庫,並配置redis地址

yum install redis
sed -i -e 's@^bind 127.0.0.1@bind 192.168.111.129@g' /etc/redis.conf 

三,信息的查看

  4.在redis上查看信息

redis-cli -h 192.168.111.129 monitor  # 動態查看數據庫信息
redis-cli -h 192.168.111.129  # 鏈接數據庫查詢

四,執行命令

[root@master jobs]# salt '*' test.ping
Centos:
    True
Ubuntu:
    True
# 此時去redis服務器就能夠查看job的信息了。

4.Job管理

在salt裏執行任何一個操做都會在master上產生一個jid號,minion端在/var/cache/salt/minion/proc目錄下建立一個以jid號碼爲名稱的文件,文件內是這次操做的記錄,操做處理完成後改文件會自動刪除。而master端會記錄每次操做的詳細信息,這個記錄保存到/var/cache/salt/master/jobs目錄下兩位16進制數組成的目錄名下。

一,salt-run jobs管理

下面列除salt-run中jobs的用法:

[root@master jobs]# salt-run -d | grep jobs
'jobs.active:'  # 查看正在運行的jobs
    Return a report on all actively running jobs from a job id centric
        salt-run jobs.active
'jobs.list_job:'  # 指定jid查看jobs詳細信息
        salt-run jobs.list_job 20130916125524463507
'jobs.list_jobs:'  # 查看全部jobs信息
    List all detectable jobs and associated functions
        salt-run jobs.list_jobs
'jobs.lookup_jid:'  # 指定jid查詢jobs結果
        salt-run jobs.lookup_jid 20130916125524463507
        salt-run jobs.lookup_jid 20130916125524463507 outputter=highstate
'jobs.print_job:'  # 指定jid查詢jobs詳細信息
        salt-run jobs.print_job 20130916125524463507

二,經過saltutil模塊管理job

salt-run不支持kill某個job,全部使用saltutil模塊管理job

先來看看saltutil模塊的使用:

[root@master jobs]# salt \* sys.doc saltutil | grep job
'saltutil.find_cached_job:'  # 查詢job cache信息
    Return the data for a specific cached job id
        salt '*' saltutil.find_cached_job <job id>
'saltutil.find_job:'  # 指定jid查看job信息
    Return the data for a specific job id
        salt '*' saltutil.find_job <job id>
'saltutil.kill_job:'  # 殺掉job(發送SIGTERM 9信號方式)
    Sends a kill signal (SIGKILL 9) to the named salt job's process
        salt '*' saltutil.kill_job <job id>
        salt '*' saltutil.runner jobs.list_jobs
'saltutil.signal_job:'  # 發送指定信號
    Sends a signal to the named salt job's process
        salt '*' saltutil.signal_job <job id> 15
'saltutil.term_job:'  # 刪掉job(發送SIGTERM 15信號方式)
    Sends a termination signal (SIGTERM 15) to the named salt job's process
        salt '*' saltutil.term_job <job id>
相關文章
相關標籤/搜索