SaltStack中的文件服務器

SaltStack中的文件服務器


cp模塊

環境

get_file

get_dir

get_url

get_template

push

參考鏈接: 原文Salt File Server


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


cp模塊

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


環境

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


get_file

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


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

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


file_roots:

  base:

    - /srv/salt/

那麼vimrc的實際路徑就是/srv/salt/vimrc,這樣做的好處是,可以滿足state系統中環境的概念。


源路徑和目標路徑中都可以使用模板,如下:


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

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


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


# 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上,處於很明顯的安全考慮,默認沒有啓用此功能,如果你需要的話可以參考文檔。


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