歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux配置

saltstack配置gitfs與開發環境

  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://[email protected]/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等其他環境,所以忽略掉。
Copyright © Linux教程網 All Rights Reserved