天天看點

2.2 salt 遠端執行 Returners 配置管理 jinja

http://www.cnblogs.com/caoxiaojian/p/5084494.html

doc

https://docs.saltstack.com/en/latest/

目錄

遠端執行

Returners

配置管理

目标(Targeting)

子產品(Module)

傳回(Returnners)

Targeting目标

1、Globbing and regex

    比對minions 通過通配符和正規表達式,與minion ID有關系。

    連結:使用通配符和正規表達式來比對

2、Grains

   用來比對minion的grains,是指那些關于minion主機的靜态資訊,比如OS,軟體版本,虛拟化,CPU,記憶體等等。

    連結:使用Grains來比對

3、Pillar

     通過使用者定義的變量比對minion主機

     連結:使用Pillar來比對

4、Subnet/IP Address

      通過子網或IP位址比對minion主機(目前僅支援IPV4)。

      連結:通過IP/subnet來比對

5、Compound matching

       把上面的全部比對器組合為一個表達式。

       連結:使用組合集合比對

6、Node groups

       在master配置檔案中靜态定義minion組,使用:ref:複合 <targeting-compound> 比對文法。

       連結:使用節點組比對

7、Batching execution

      一些指令集在比對上的minions時隻需要執行一次。

       連結:隻要執行一次的内容

Modules子產品

使用者權限的限制

# 設定使用者名:larry,和可以執行的指令

[root@linux-node1 ~]# vim /etc/salt/master 

245 client_acl:

246   larry:

247     - test.ping

248     - network.*

Salt傳回接收器(returner)允許把minion的響應儲存在各種資料存儲或不同的位置,甚至把響應内容顯示在指令行

Returner可以用來擴充Salt,和新的、定制的接口和支援新的資料庫進行通信。

vim /etc/salt/master 

#return: mysql

master_job_cache: mysql

mysql.host: '10.0.0.7'

mysql.user: 'salt'

mysql.pass: 'salt'

mysql.db: 'salt'

mysql.port: 3306

此種方式是主動去Minion端擷取,推薦使用。

如果不加job_cache,開啟上面的return,就是被動接收。需要用戶端也要修改配置檔案,添加同樣的内容。

檢查是否生效 

/etc/init.d/salt-master restart

salt '*' saltutil.refresh_pillar

[root@linux-node1 ~]# /etc/init.d/salt-master restart

[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar

linux-node1.example.com:

    True

linux-node2.example.com:

[root@linux-node1 ~]# salt '*' test.ping

# 資料庫中檢查有麼有擷取到資料(主動去minion端擷取)

mysql> use salt;

mysql> select * from salt_returns;

file_roots:

  base:

    - /srv/salt/base

  test:

    - /srv/salt/test

  prod:

    - /srv/salt/prod

# 執行方式一

# 執行狀态(單獨執行某個狀态)

[root@linux-node1 files]# salt '*' state.sls dns

# 到minion端檢視

[root@linux-node2 ~]# cat /etc/resolv.conf 

# Generated by NetworkManager

nameserver 10.0.0.2

#########

# 執行方式二

# 如果想使用進階狀态執行,需要在top.sls中寫明

[root@linux-node1 files]# vim /srv/salt/base/top.sls 

base:

  '*':

    - dns

# 執行進階狀态,從top.sls中讀取,在執行

[root@linux-node1 files]# salt '*' state.highstate

jinja模版

jinja模版的建立

# jinja模版

# 有- template: 就代表這個檔案就是一個模版檔案

# - defaults:  是變量清單

[root@linux-node1 base]# vim dns.sls 

/etc/resolv.conf:

  file.managed:

    - source: salt://files/resolv.conf

    - user: root

    - group: root

    - mode: 644

    - template: jinja

    - defaults:

      DNS_SERVER: 10.0.0.2

jinja模版的使用

# 模闆檔案裡面變量使用方式` DNS_SERVER `

[root@linux-node1 base]# vim /srv/salt/base/files/resolv.conf 

# nameserver 10.0.0.2

nameserver ` DNS_SERVER `

# 執行進階狀态

[root@linux-node1 base]# salt '*' state.highstate

# minion端檢視,nameserver 自動将變量代換

jinja模版中使用Grains

# 使用grains

[root@linux-node1 base]# cat /srv/salt/base/files/resolv.conf 

# {{ grains['fqdn_ip4'] }}

# minion端檢視

# ['10.0.0.8']

還可以在jinja模版中使用執行子產品和Pillar