LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux配置 >

saltstack配置gitfs与开发环境

时间:2015-11-29 12:07来源:未知 编辑:linuxeye 点击:
dev,stage,prod配置 目的:使用gitfs统一分布式环境中的配置,将开发环境与生产环境区分开来 修改/etc/salt/master中如下内容 file_roots: #保留字段 base:- /srv/salt/base #开发环境 dev:- /srv/salt/dev
dev,stage,prod配置
目的:使用gitfs统一分布式环境中的配置,将开发环境与生产环境区分开来
修改/etc/salt/master中如下内容
file_roots:
  #保留字段
  base:
- /srv/salt/base
  #开发环境
  dev:
- /srv/salt/dev
  #测试环境
  stage:
- /srv/salt/stage
  #生产环境
  prod:
- /srv/salt/prod

pillar_roots:
  base:
    - /srv/pillar/base
  dev:
    - /srv/pillar/dev
  stage:
    - /srv/pillar/stage
  prod:
    - /srv/pillar/prod

重启服务
service salt-master restart
service salt-api restart

top.sls文件
dev:
  'localhist':
    - test

pillar中的top.sls同上

命令行测试效果
salt ‘localhist’ state.highstate’

注意事项
state.sls 命令不受上述配置影响,它默认使用base环境,可通过saltenv=‘dev’ 来指定为开发环境

使用gitfs
安装必要的软件包
yum install -y libgit2
yum install -y libgit2-devel
yum install -y libffi
yum install -y libffi-devel
pip install -y pygit2
yum install -y GitPython

修改/etc/salt/master
gitfs_remotes:
  - ssh://git@127.0.0.1/saltconf.git

fileserver_backend:
  - git

设置key
  1. gitfs使用/root/.ssh/id_rsa 私钥,确保私钥已经被正确的设置
  2. 确保SSH Host Key 被添加到known_hosts文件中,可以用如下命令来设置(127.0.0.1为git服务器地址): ssh 127.0.0.1

重启服务
service salt-master restart

默认情况下,salt-master每隔60秒(loop_interval)从gitfs同步一次配置,文件存放在类似这样的路径中/var/cache/salt/master/gitfs/89883d08902f39c3af5e38cd990e2231/.git/

开发和生产环境
git中不同的分支对应不同环境,例如dev分支对应的就是dev的开发环境。不过有一个例外,master分支对应base环境
使用git hook触发更新

默认情况下,salt-master每隔60秒去更新gitfs。当使用命令git push来更新文件时 ,可以使用git hook来触发更新gitfs.
salt-master端配置

修改/etc/salt/master新增如下内容
reactor:
  - 'salt/fileserver/gitfs/update':
    - /srv/reactor/update_fileserver.sls

新增文件/srv/reactor/update_fileserver.sls:
update_fileserver:
  runner.fileserver.update

可以使用如下命令来触发salt-master更新gitfs
salt-call event.fire_master update salt/fileserver/gitfs/update

配置git服务端hook
post-receive钩子的作用是当用户成功push文件后触发一些操作

编辑/home/git/repositories/saltconf.git/hooks/post-receive
#!/bin/sh
set –e
sudo salt-call event.fire_master update salt/fileserver/gitfs/update

由于salt-master使用root权限在跑,git使用普通用户,所以要个git用户sudo权限

编辑/etc/sudoers注释掉如下选项。否则会报错:sudo: sorry, you must have a tty to run sudo
# Defaults requiretty
新增文件/etc/sudoers.d/git:
git ALL = NOPASSWD: ALL

NOPASSWD选项使git用户不需要输入密码来使用sudo

已知问题
在salt-master启动后,第一次触发git hook时,salt-call event.fire_master update salt/fileserver/gitfs/update 命令会执行失败 ,这时可以在执行一次命令,或者等待60秒让sal-master自己刷新,以后就不会出现这个问题了。

Pillar使用gitfs
可以通过ext_pillar来使用gitfs,不过其只支持base环境,无法设置dev,prod等其他环境,所以忽略掉。

转载请保留固定链接: https://linuxeye.com/configuration/2846.html

------分隔线----------------------------
标签:SaltStackgitfs
栏目列表
推荐内容