SaltStack中的文件服务器html
cp模块web
环境apache
get_filevim
get_dir安全
get_url服务器
get_templateide
pushurl
参考连接: 原文Salt File Server操作系统
在配置管理系统中,从中心服务器想客户端推送文件是很基本的需求。SaltStack使用内建的ZeroMQ服务器作为文件服务器。 文件服务器主要用来在state系统中推送文件到客户端,也能够用于其余文件的传输。server
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上,处于很明显的安全考虑,默认没有启用此功能,若是你须要的话能够参考文档。