saltstack/saltmaster配置檔案說明(二)

紫翼龍王夜發表於2015-03-11

Salt系統的配置是令人驚訝的簡單,對於salt的兩個系統都有各自的配置檔案,salt-master是透過一個名為master的檔案配置,salt-minion是透過一個名為minion的檔案配置。 salt-master的配置檔案位於/etc/salt/master,可用選項如下:

interface 預設介面:0.0.0.0(所有的網路地址介面) 繫結到本地的某個網路介面

interface: 192.168.0.1 

publish_port

預設值:4505

設定master與minion的認證通訊埠

publish_port: 4505 

user

預設值:root

執行salt程式的使用者

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

max_open_files: 100000

worker_threads 

預設值:5

啟動用來接收或應答minion的執行緒數。如果你有很多minion,而且minion延遲你的應答,你可以適度的提高該值. 在點對點的系統環境中使用時,該值不要被設定為3以下,但是可以將其設定為1

worker_threads: 5 

ret_port

預設值:4506

這個埠是master用來傳送命令或者接收minions的命令執行返回資訊

ret_port: 4506 

pidfile

預設值:/var/run/salt-master.pid 

指定master的pid檔案位置

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

root_dir

預設值:/

指定該目錄為salt執行的根目錄,改變它可以使salt從另外一個目錄開始執行,好比chroot

root_dir: /

pki_dir

預設值:/etc/salt/pki

這個目錄是用來存放pki認證秘鑰

pki_dir: /etc/salt/pki 

cachedir

預設值:/var/cache/salt

這個目錄是用來存放快取資訊,特別是salt工作執行的命令資訊

cachedir: /var/cache/salt 

keep_jobs

預設值:24

設定保持老的工作資訊的過期時間,單位小時 job_cache

預設值:True

設定master維護的工作快取,這是一個很好的功能,當你的Minons超過5000臺時,他將很好的承擔這個大的架構,關閉這個選項,之前的工作執行以及工作系統將無法被利用,一般不推薦關掉改選項,開啟改選項將會是很明智的,他將使master獲得更快的IO系統 ext_job_cache

預設值:''

對所有的minions使用指定的預設值returner,當使用了這個引數來指定一個returner並且配置正確,minions將會一直將返回的資料返回到returner,這也會預設值禁用master的本地快取

ext_job_cache: redis 

minion_data_cache

預設值:True

minion data cache是關於minion資訊儲存在master上的引數,這些資訊主要是pillar 和 grains資料.這些資料被快取在cachedir定義的目錄下的minion目錄下以minion名為名的目錄下並且預先確定哪些minions將從執行回覆

minion_cache_dir: True 

enforce_mine_cache

預設值:False

預設情況下當關閉了minion_data_cache,mine將會停止工作,因為mine是基於快取資料,透過啟用這個選項,我們將會顯示的開啟對於mine系統的快取功能

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

open_mode: False 

auto_accept

預設值:False

開啟auto_accept。這個設定將會使master自動接受所有傳送公鑰的minions

auto_accept: True 

autosign_file

預設值:/etc/salt/autosign.conf

如果autosign_file的值被指定,那麼autosign_file將會透過該輸入允許所有的匹配項,首先會搜尋字串進行匹配,然後透過正規表示式進行匹配。這是不安全的

autosign_file: /etc/salt/autosign.conf 

client_acl

預設值:{}

開啟對系統上非root的系統使用者在master上執行特殊的模組,這些模組名可以使用正規表示式進行表示

client_acl:
  fred:
      - test.ping
      - pkg.* 

client_acl_blacklist

預設值:{}

黑名單使用者或模組

這個例子表示所有非sudo使用者以及root都無法透過cmd這個模組執行命令,預設情況改配置是完全禁用的

client_acl_blacklist:
  users:
      - root
      - '^(?!sudo_).*$'    # all non sudo users
  modules:
      - cmd 

external_auth

預設值:{}

salt的認證模組採用外部的認證系統用來做認證和驗證使用者在salt系統中的訪問區域

external_auth:
  pam:
      fred:
          - test.* 

token_expire

預設:43200

新令牌生成的時間間隔,單位秒,預設是12小時

token_expire: 43200 

file_recv

預設值:False

允許minions推送檔案到master上,這個選項預設是禁用的,出於安全考慮

file_recv: False 

master模組管理 runner_dirs

預設值:[] 設定搜尋runner模組的額外路徑

runner_dirs: [] 

cython_enable

預設值:False

設定為true來開啟對cython模組的編譯

cython_enable: False 

master狀態系統設定 state_verbose

預設:False

state_verbose允許從minions返回更多詳細的資訊,通常清空下只返回失敗或者已經更改,但是將state_verbose設定為True,將會返回所有的狀態檢查

state_verbose: True 

state_output

預設值:full

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

state_output: full 

state_top

預設值:top.sls

狀態系統使用一個入口檔案告訴minions在什麼環境下使用什麼模組,這個狀態入口檔案被定義在基礎環境的相對根路徑下

state_top: top.sls 

external_nodes

預設值:None

這個外部節點引數允許salt來收集一些資料,通常被放置在一個入口檔案或外部節點控制器.外部節點的選擇是可執行的,將會返回ENC資料,記住如果兩者都啟用的話salt會將外部節點和入口檔案的結果進行綜合彙總。

external_nodes: cobbler-ext-nodes 

renderer

預設值:yaml_jinja

使用渲染器用來渲染minions的狀態資料

renderer: yaml_jinja 

failhard

預設值:False

設定一個全域性的failhard表示,當單個的狀態執行失敗後,將會通知所有的狀態停止執行狀態

failhard: False 

test

預設值:False

如果真的要作出改變或者僅僅通知將要執行什麼改變時設定所有的狀態呼叫為test

test: False 

master檔案伺服器設定 fileserver_backend

預設值:

fileserver_backend:
  - roots 

salt支援模組化的後端檔案系統伺服器,它允許salt透過第三方的系統來管理收集檔案並提供給minions使用,可以配置多個後端檔案系統,這裡支援gitfs、hgfs、roots、s3fs檔案呼叫的搜尋順序按照後臺檔案系統的配置順序來搜尋,預設的設定只開啟了標準的後端伺服器roots,具體的根選項配置透過file_roots引數設定

fileserver_backend:
  - roots
  - gitfs 

file_roots

預設值:

base:
  - /srv/salt 

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

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

hash_type: md5 

file_buffer_size

預設值:1048576

檔案伺服器的快取區大小

file_buffer_size: 1048576 

pillar配置 pillar_roots

預設值:

base:
  - /srv/pillar 

設定不同的環境對應的存放pillar資料的目錄,這個配置和file_roots引數配置一樣

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

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

order_master: False 

syndic_master

預設值:None

如果這個master執行的salt-syndic連線到了一個更高層級的master,那麼這個引數需要配置成連線到的這個高層級的master的地址

syndic_master: masterofmasters 

syndic_master_port

預設值:4506

如果這個master執行的salt-syndic連線到了一個更高層級的master,那麼這個引數需要配置成連線到的這個高層級master的監聽埠

syndic_master_port: 4506 

syndic_log_file

預設值:syndic.log

為syndic程式指定日誌檔案

syndic_log_file: salt-syndic.log 

syndic_pidfile

預設值:salt-syndic.pid

為syndic程式指定pid檔案

syndic_pidfile: syndic.pid 

Peer Publish設定

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

預設值:{}

這個配置使用正規表示式去匹配minions並且是一個正規表示式列表函式,下面這個例子將允許名為foo.example.com的minion認證透過後執行test和pkg模組中的函式

peer:
  foo.example.com:
     - test.*
     - pkg.* 

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

peer:
  .*:
     - .* 

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

預設值:{}

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

peer_run:
  foo.example.com:
     - manage.up 

nodegroups

預設值:{}

minions允許透過node groups來分成多個邏輯組,每個組由一個組名和複合模式組成

nodegroups:
  group1: 'L@foo.domain.com,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的日誌可以傳送到一個普通檔案,本地路徑名或者網路位置,更多詳情請訪問

例如:

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

log_level

預設值:warning

按照日誌級別傳送資訊到控制檯,更多詳情請訪問 

log_level: warning

log_level_logfile 

預設值:warning

按照日誌級別傳送資訊到日誌檔案,更多詳情請訪問 

log_level_logfile: warning 

log_datefmt

預設值:%H:%M:%S

傳送到控制檯資訊所用的日期時間格式,更多詳情請訪問

log_datefmt: '%H:%M:%S' 

log_datefmt_logfile

預設值: %Y-%m-%d %H:%M:%S

傳送到日誌檔案資訊所用的日期時間格式,更多詳情請訪問

log_datefmt_logfile: '%Y-%m-%d %H:%M:%S' 

log_fmt_console

預設值: [%(levelname)-8s] %(message)s

控制檯日誌資訊格式,更多詳情請訪問 

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:日誌詳細資訊

日誌檔案資訊格式,更多詳情請訪問 

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將會在日誌中記錄一條警告的訊息

# 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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30129545/viewspace-1456688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章