用gitfs给salt自动更新模块

随笔 2017-02-22

起步

Salt自带一个简单的文件服务器,适用于将文件分发到Salt minion。文件服务器是内置在Salt主机中的无状态ZeroMQ服务器。

Salt文件服务器的主要目的是提供要在Salt状态系统中使用的文件。有了这一点,Salt文件服务器可以用于任何一般的文件传输从主机到下一代。

gitfs后端允许Salt从 git 存储库提供文件。它可以通过添加git到fileserver_backend列表,并配置一个或多个存储库中启用gitfs_remotes

分支和标签变成Salt文件服务器环境。

安装依赖关系

salt提供了三种提供方式: pygit2, GitPython, Dulwich

pygit2

从2014.7.0版开始,如果能装这个尽量装这种方式。一般的安装方式:

# yum install python-pygit2
或
# apt-get install python-pygit2

但是由于Ubuntu 14.04没有 python-pygit2,它的安装方式为:

$ sudo apt-get install cmake python-dev python-pip \
libffi-dev libssh2-1-dev zlib1g-dev libssl-dev \
pkg-config libhttp-parser-dev -y

$ wget https://github.com/libgit2/libgit2/archive/v0.22.2.tar.gz
$ tar xzf v0.22.2.tar.gz
$ cd libgit2-0.22.2/
$ cmake .
$ make
$ sudo make install
$ sudo ldconfig
$ sudo pip install pygit2

GitPython

红帽子系:

# yum install GitPython

Ubuntu 14.04 LTS和Debian Wheezy(7.x)也有兼容版本打包:

# apt-get install python-git

Dulwich

# yum install python-dulwich
或
# apt-get install python-dulwich

配置

master的配置文件中 /etc/salt/masterfileserver_backend

fileserver_backend :
  -  git

设置仓库地址

gitfs_remotes :
  -  https://github.com/xxxx/salt-formula.git

也可以是多个地址git://https://file:// ,或 ssh://

gitfs_remotes :
  -  git@github.com:user / repo.git 
  -  ssh://user@domain.tld/path/to/repo.git

注意: Dulwich无法识别 ssh:// 网址。

仓库配置

每个仓库都有配置参数:

  • gitfs_base: 分支/标签名称
  • gitfs_root: 文件服务的路径
  • gitfs_user: 用户
  • gitfs_password: 密码
  • gitfs_mountpoint: 挂载点
  • gitfs_insecure_auth:认证开关
  • gitfs_pubkey: 公钥
  • gitfs_privkey:私钥

看以下实例:

gitfs_provider:pygit2 
gitfs_base:prod

gitfs_remotes:
  - https://foo.com/foo.git 
  - https://foo.com/bar.git:
    - root:salt 
    - mountpoint:salt//bar 
    - base:salt-base 
  -  https://foo.com/bar.git:
    - name:second_bar_repo 
    - root:other/salt 
    - mountpoint:salt//other/bar 
    - base:salt-base 
  -  http://foo.com/baz.git:
    - root:salt/states 
    - user:joe 
    - password: mysupersecretpassword 
    - insecure_auth:True

本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!