SaltStack中的文件服務器

    在配置管理系統中,從中心服務器想客戶端推送文件是很基本的需求。SaltStack使用內建的ZeroMQ服務器作爲文件服務器。 文件服務器主要用來在state系統中推送文件到客戶端,也能夠用於其餘文件的傳輸。html

cp模塊


客戶端對文件服務器的操做都在cp模塊中。Salt State系統,Salt-cp都用到了cp模塊。web

環境


由於文件服務器是爲Salt state系統服務,因此也支持環境的概念。master的配置文件中定義各環境的路徑,文件的路徑基於指定環境的根目錄(參見下面的例子)。apache

get_file


cp.get_file用來從master下載文件到客戶端,語法以下:vim

# salt '*' cp.get_file salt://vimrc /etc/vimrc


其中vimrc在master上的實際路徑要看環境中定義的根目錄,假設在master中有以下定義:
安全

file_roots:
  base:
    - /srv/salt/


那麼vimrc的實際路徑就是/srv/salt/vimrc,這樣作的好處是,能夠知足state系統中環境的概念。bash


源路徑和目標路徑中均可以使用模板,以下:服務器

# salt '*' cp.get_file "salt://`grains`.`os`/vimrc" /etc/vimrc template=jinja


這個例子中,將下載與客戶端操做系統名字相同的目錄下的文件。ide


對於大文件,cp.get_file支持gzip壓縮,在參數中指定gzip的壓縮級別,以下:url

# salt '*' cp.get_file salt://vimrc /etc/vimrc gzip=5


其中,1表明做小壓縮,9表明最大壓縮。操作系統


cp.get_file默認不在客戶端上創建目錄,若是客戶端上沒有這個目錄了,文件拷貝將失敗,能夠指定makedirs=True來建立目錄:

# salt '*' cp.get_file salt://vimrc /etc/vim/vimrc makedirs=True


在這個例子中,若是@@/etc/vim不存在,將會創建此目錄。

get_dir

cp.get_dir能夠從master下載整個目錄,語法以下:

# salt '*' cp.get_dir salt://etc/apache2 /etc


cp.get_dir也支持模板和壓縮:

# salt '*' cp.get_dir salt://etc/`pillar`.`webserver` /etc gzip=5 template=jinja

get_url


cp.get_url能夠從一個URL地址下載文件,URL能夠是msater上的路徑(salt://),也能夠是http網址。

# salt '*' cp.get_url salt://my/file /tmp/mine
# salt '*' cp.get_url http://www.slashdot.org /tmp/index.html

get_template


cp.get_template能夠在文件下載以前用模板引擎處理。

# salt '*' cp.get_template salt://path/to/template /minion/dest

push


cp.push能夠從客戶端傳文件到master上,處於很明顯的安全考慮,默認沒有啓用此功能,若是你須要的話能夠參考文檔

相關文章
相關標籤/搜索