目的:使用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
重启服务 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 |