Saltstack的配置Salt master配置文件

Salt系統的配置是令人驚訝的簡單,對於salt的兩個系統都有各自的配置文件,salt-master是通過一個名爲master的文件配置,salt-minion是通過一個名爲minion的文件配置。

salt-master的配置文件位於/etc/salt/master,可用選項如下:

#######################
主配置

interface
默認值:0.0.0.0(所有的網絡地址接口)
綁定到本地的某個網絡地址接口

1 interface: 192.168.0.1

publish_port
默認值:4505
設置master與minion的認證通信端口

1 publish_port: 4505

user
默認值:root
運行salt進程的用戶

1 user: root

max_open_files
默認值:100000
每一個minion連接到master,至少要使用一個文件描述符,如果足夠多的minion連接到master上,你將會從控制檯上看到salt-master crashes:
Too many open files (tcp_listener.cpp:335)
Aborted (core dumped)
默認值這個值取決於ulimit -Hn的值,即系統的對打開文件描述符的硬限制
如果你希望重新設置改值或者取消設置,記住這個值不能超過硬限制,提高硬限制取決於你的操作系統或分配,一個好的方法是internet找到對應操作系統的硬限制設置,比如這樣搜索:
raise max open files hard limit debian

1 max_open_files: 100000

worker_threads
默認值:5
啓動用來接收或應答minion的線程數。如果你有很多minion,而且minion延遲你的應答,你可以適度的提高該值.
在點對點的系統環境中使用時,該值不要被設置爲3以下,但是可以將其設置爲1

1 worker_threads: 5

ret_port
默認值:4506
這個端口是master用來發送命令或者接收minions的命令執行返回信息

1 ret_port: 4506

pidfile
默認值:/var/run/salt-master.pid
指定master的pid文件位置

1 pidfile: /var/run/salt-master.pid

root_dir
默認值:/
指定該目錄爲salt運行的根目錄,改變它可以使salt從另外一個目錄開始運行,好比chroot

1 root_dir: /

pki_dir
默認值:/etc/salt/pki
這個目錄是用來存放pki認證祕鑰

1 pki_dir: /etc/salt/pki

cachedir
默認值:/var/cache/salt
這個目錄是用來存放緩存信息,特別是salt工作執行的命令信息

1 cachedir: /var/cache/salt

keep_jobs
默認值:24
設置保持老的工作信息的過期時間,單位小時
job_cache
默認值:True
設置master維護的工作緩存,這是一個很好的功能,當你的Minons超過5000臺時,他將很好的承擔這個大的架構,關閉這個選項,之前的工作執行以及工作系統將無法被利用,一般不推薦關掉改選項,開啓改選項將會是很明智的,他將使master獲得更快的IO系統

ext_job_cache
默認值:”
對所有的minions使用指定的默認值returner,當使用了這個參數來指定一個returner並且配置正確,minions將會一直將返回的數據返回到returner,這也會默認值禁用master的本地緩存

1 ext_job_cache: redis

minion_data_cache
默認值:True
minion data cache是關於minion信息存儲在master上的參數,這些信息主要是pillar 和 grains數據.這些數據被緩存在cachedir定義的目錄下的minion目錄下以minion名爲名的目錄下並且預先確定哪些minions將從執行回覆

1 minion_cache_dir: True

enforce_mine_cache
默認值:False
默認情況下當關閉了minion_data_cache,mine將會停止工作,因爲mine是基於緩存數據,通過啓用這個選項,我們將會顯示的開啓對於mine系統的緩存功能

1 enforce_mine_cache: False

sock_dir
默認值:/tmp/salt-unix
指定unix socket主進程通信的socket創建路徑

#######################
master的安全配置

open_mode
默認值:False
open_mode是一個危險的安全特性,當master遇到pki認證系統,祕鑰混淆和身份驗證失效時,打開open_mode,master將會接受所有的身份驗證。這將會清理掉pki祕鑰接受的minions。通常情況下open_mode不應該被打開,它只適用於短時間內清理pki keys,若要打開它,可將值調整爲True

1 open_mode: False

auto_accept
默認值:False
開啓auto_accept。這個設置將會使master自動接受所有發送公鑰的minions

1 auto_accept: False

autosign_file
默認值:/etc/salt/autosign.conf
如果autosign_file的值被指定,那麼autosign_file將會通過該輸入允許所有的匹配項,首先會搜索字符串進行匹配,然後通過正則表達式進行匹配。這是不安全的

1 autosign_file: /etc/salt/autosign.conf

client_acl
默認值:{}
開啓對系統上非root的系統用戶在master上執行特殊的模塊,這些模塊名可以使用正則表達式進行表示

1
2
3
4
client_acl:
    fred:
        – test.ping
        – pkg.*

client_acl_blacklist
默認值:{}
黑名單用戶或模塊
這個例子表示所有非sudo用戶以及root都無法通過cmd這個模塊執行命令,默認情況改配置是完全禁用的

1
2
3
4
5
6
client_acl_blacklist:
    users:
        – root
        – ‘^(?!sudo_).*$’    # all non sudo users
    modules:
        – cmd

external_auth
默認值:{}
salt的認證模塊採用外部的認證系統用來做認證和驗證用戶在salt系統中的訪問區域

1
2
3
4
external_auth:
    pam:
        fred:
            – test.*

token_expire
默認:43200
新令牌生成的時間間隔,單位秒,默認是12小時

1 token_expire: 43200

file_recv
默認值:False
允許minions推送文件到master上,這個選項默認是禁用的,出於安全考慮

1 file_recv: False

#######################
master模塊管理

runner_dirs
默認值:[] 設置搜索runner模塊的額外路徑

1 runner_dirs: []

cython_enable
默認值:False
設置爲true來開啓對cython模塊的編譯

1 cython_enable: False

#######################
master狀態系統設置

state_verbose
默認:False
state_verbose允許從minions返回更多詳細的信息,通常清空下只返回失敗或者已經更改,但是將state_verbose設置爲True,將會返回所有的狀態檢查

1 state_verbose: True

state_output
默認值:full
state_output的設置將會改變信息輸出的格式,當被設置爲”full”時,將全部的輸出一行一行的顯示輸出;當被設置爲”terse“時,將會被縮短爲一行進行輸出;當被設置爲”mixed”時,輸出樣式將會是簡潔的,除非狀態失敗,這種情況下將會全部輸出;當被設置爲”change”時,輸出將會完全輸出除非狀態沒有改變

1 state_output: full

state_top
默認值:top.sls
狀態系統使用一個入口文件告訴minions在什麼環境下使用什麼模塊,這個狀態入口文件被定義在基礎環境的相對根路徑下

1 state_top: top.sls

external_nodes
默認值:None
這個外部節點參數允許salt來收集一些數據,通常被放置在一個入口文件或外部節點控制器.外部節點的選擇是可執行的,將會返回ENC數據,記住如果兩者都啓用的話salt會將外部節點和入口文件的結果進行綜合彙總。

1 external_nodes: cobbler-ext-nodes

renderer
默認值:yaml_jinja
使用渲染器用來渲染minions的狀態數據

1 renderer: yaml_jinja

failhard
默認值:False
設置一個全局的failhard表示,當單個的狀態執行失敗後,將會通知所有的狀態停止運行狀態

1 failhard: False

test
默認值:False
如果真的要作出改變或者僅僅通知將要執行什麼改變時設置所有的狀態調用爲test

1 test: False

#######################
master文件服務器設置

fileserver_backend
默認值:

1
2
fileserver_backend:
    – roots

salt支持模塊化的後端文件系統服務器,它允許salt通過第三方的系統來管理收集文件並提供給minions使用,可以配置多個後端文件系統,這裏支持gitfs、hgfs、roots、s3fs文件調用的搜索順序按照後臺文件系統的配置順序來搜索,默認的設置只開啓了標準的後端服務器roots,具體的根選項配置通過file_roots參數設置

1
2
3
fileserver_backend:
    – roots
    – gitfs

file_roots
默認值:

1
2
base:
    – /srv/salt

salt運行一個輕量級的文件服務器通過ZeroMQ對minions進行文件傳輸,因此這個文件服務器是構造在master的守護進程中,並且不需要依賴於專用的端口
文件服務器的工作環境傳遞給master,每一個環境可以有多個跟目錄,但是相同環境下多個文件的子目錄不能相同,否則下載的文件將不能被可靠的保證,一個基礎環境依賴於主的入口文件,如:

1
2
3
4
5
6
7
8
9
file_roots:
    base:
        – /srv/salt
    dev:
        – /srv/salt/dev/services
        – /srv/salt/dev/states
    prod:
        – /srv/salt/prod/services
        – /srv/salt/prod/states

hash_type
默認值:md5
hash_type是用來當發現在master上需要對一個文件進行hash時的hash使用的算法,默認是md5.但是它也支持sha1,sha224,shar256,shar384,shar512

1 hash_type: md5

file_buffer_size
默認值:1048576
文件服務器的緩存區大小

1 file_buffer_size: 1048576

#######################
pillar配置

pillar_roots
默認值:

1
2
base:
    – /srv/pillar

設置不同的環境對應的存放pillar數據的目錄,這個配置和file_roots參數配置一樣

1
2
3
4
5
6
7
pillar_roots:
    base:
        – /srv/pillar
    dev:
        – /srv/pillar/dev
    prod:
        – /srv/pillar/prod

ext_pillar
當進行pillar數據收集時,這個ext_pillar參數允許調用任意數量的外部pillar接口,這個配置是基於ext_pillar函數,你可以從這個找到這個函數https://github.com/saltstack/salt/blob/develop/salt/pillar
默認情況下,這個ext_pillar接口沒有配置運行
默認值:None

1
2
3
4
5
ext_pillar:
    – hiera: /etc/hiera.yaml
    – cmd_yaml: cat /etc/salt/yaml
    – reclass:
        inventory_base_uri: /etc/reclass

從這裏可以查到pillar的一些額外細節

#######################
syndic server配置

syncdic是salt master用來通過從整體架構中高於自己層級的master或者syndic接收命令傳遞給minions的中間角色。使用syndic非常簡單,如果這個master在整體架構中,他的下級存在syndic server,那麼需要將master的配置文件中的”order_master”值設置爲True,如果這個master還需要運行一個syndic進程,扮演另外一個角色,那麼需要設置主master server的信息(上一級master)
千萬別忘記了,這將意味着它將與其他master共享它的minion的id和pki_dir

order_masters
默認值:False
當額外的數據需要發送和傳遞,並且這個master控制的minions是被低等級的master或syndic直接管理下,那麼”order_masters”這個值必須得設置爲True

1 order_master: False

syndic_master
默認值:None
如果這個master運行的salt-syndic連接到了一個更高層級的master,那麼這個參數需要配置成連接到的這個高層級的master的地址

1 syndic_master: masterofmasters

syndic_master_port
默認值:4506
如果這個master運行的salt-syndic連接到了一個更高層級的master,那麼這個參數需要配置成連接到的這個高層級master的監聽端口

1 syndic_master_port: 4506

syndic_log_file
默認值:syndic.log
爲syndic進程指定日誌文件

1 syndic_log_file: salt-syndic.log

syndic_pidfile
默認值:salt-syndic.pid
爲syndic進程指定pid文件

1 syndic_pidfile: syndic.pid

#######################
Peer Publish設置

salt minions可以向其他minions發送命令,但是僅僅在minion允許的情況下。默認情況下”Peer Publication”是關閉的,當需要開啓的時候,需要開啓對應的minion和對應的命令,這樣可以允許根據個人的minions安全的劃分出命令

peer
默認值:{}
這個配置使用正則表達式去匹配minions並且是一個正則表達式列表函數,下面這個例子將允許名爲foo.example.com的minion認證通過後執行test和pkg模塊中的函數

1
2
3
4
peer:
    foo.example.com:
        – test.*
        – pkg.*

這將允許所有的minion執行所有的命令

1
2
3
peer:
    .*:
        – .*

這樣的配置是極不推薦的,因爲任何人得到架構中的任何一個minion即可擁有所有的minions,這是不安全的

peer_run
默認值:{}
peer_run參數是用來打開runners在master所允許的minions上,peer_run的配置匹配格式和peer參數的配置一樣
下面這個例子允許foo.example.com的minion執行manage.up runner

1
2
3
peer_run:
    foo.example.com:
        – manage.up

NODE GROUPS
默認值:{}
minions允許通過node groups來分成多個邏輯組,每個組由一個組名和複合模式組成

1
2
3
nodegroups:
    group1: ‘[email protected],bar.domain.com,baz.domain.com or bl*.domain.com’
    group2: ‘G@os:Debian and foo.domain.com’

#######################
Master日誌設置

log_file
默認值:/var/log/salt/master
master的日誌可以發送到一個普通文件,本地路徑名或者網絡位置,更多詳情
例如:

1
2
3
log_file: /var/log/salt/master
log_file: file:///dev/log
log_file: udp://loghost:10514

log_level
默認值:warning
按照日誌級別發送信息到控制檯,更多詳情

1 log_level: warning

log_level_logfile
默認值:warning
按照日誌級別發送信息到日誌文件,更多詳情

1 log_level_logfile: warning

log_datefmt
默認值:%H:%M:%S
發送到控制檯信息所用的日期時間格式,更多詳情

1 log_datefmt: ‘%H:%M:%S’

log_datefmt_logfile
默認值: %Y-%m-%d %H:%M:%S
發送到日誌文件信息所用的日期時間格式,更多詳情

1 log_datefmt_logfile: ‘%Y-%m-%d %H:%M:%S’

log_fmt_console
默認值: [%(levelname)-8s] %(message)s
控制檯日誌信息格式,更多詳情

1 log_fmt_console: ‘[%(levelname)-8s] %(message)s’

log_fmt_logfile
默認值: %(asctime)s,%(msecs)03.0f [%(name)-17s][%(levelname)-8s] %(message)s
%(asctime)s:2003-07-08 16:49:45
%(msecs)03.0f:當前時間的毫秒部分
%(name):日誌記錄調用器的名字
%(levelname):日誌記錄級別
%(message)s:日誌詳細信息
日誌文件信息格式,更多詳情

1 log_fmt_logfile: ‘%(asctime)s,%(msecs)03.0f [%(name)-17s][%(levelname)-8s] %(message)s’

log_granular_levels
默認值:{}
這可以更加具體的控制日誌記錄級別,更多詳情

#######################
Include 配置

default_include
默認值:master.d/*.conf
master可以從其他文件讀取配置,默認情況下master將自動的將master.d/*.conf中的配置讀取出來並應用,其中master.d目錄是相對存在於主配置文件所在的目錄

include
默認值:not defined
master可以包含其他文件中的配置,要啓用此功能,通過此參數定義路徑或文件,此路徑可以是相對的也可以是絕對的,相對的,會被看作相對於主配置文件所在的目錄,路徑中還可以使用類似於shell風格的通配符,如果沒有文件匹配的路徑傳遞給此選項,那麼master將會在日誌中記錄一條警告的消息

1
2
3
4
5
6
7
8
9
10
11
12
# Include files from a master.d directory in the same
# directory as the master config file
include: master.d/*
# Include a single extra file into the configuration
include: /etc/roles/webserver
# Include several files and the master.d directory
include:
    – extra_config
    – master.d/*
    – /etc/roles/webserver

參考文檔:http://docs.saltstack.com/ref/configuration/master.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章