前面已經講解了Webhook實現Push代碼后的jenkins自動構建,接下來通過結合slatstack 實現多台機器的項目代碼發布。
利用saltstack中file.recurse方法,運用該模塊可以將定義的目錄下所有文件都推送到遠端服務器指定的位置,而且只需要一條命令,接下來我們就演示一下該方法的用法。
master 角色服務器上
saltstack配置文件中修改file_roots路徑:
grep "file_roots" -A3 -B3 /etc/salt/master | grep -vE "(^#|^$)"
這里為了方便測試,所以直接將salt的資源路徑改到了nginx指向的項目根目錄。
1 [root@iz2ze4j1iyce3b7muq6jtiz web]# pwd 2 /home/web 3 [root@iz2ze4j1iyce3b7muq6jtiz web]# vim 4 .idea/ index.php mall-api-salt/ swoole/ test.sls 5 [root@iz2ze4j1iyce3b7muq6jtiz web]# vim test.sls 6 test: 7 file.recurse: 8 - source: salt://mall-api-salt 9 - name: /var/www/mall-api 10 - user: nginx 11 - group: nginx 12 - dir_mode: 755 13 - file_mode: 644 14 - include_enpty: True
注釋:
file_rsync:sls文件名,這里是file_rsync.sls file.recurse:調用file模塊下的recurse方法 source: salt://tools :定義源文件,即將要推送走的文件和路徑 name: /opt/tools:推送到遠端服務器上的位置和名稱 user: root:文件(目錄)的屬主 group: root:文件(目錄)的用戶組 dir_mode: 755 目錄的權限為755 file_mode: 644 文件的權限為644 makedirs: True 如果目錄不存在則創建 backup: minion 開啟備份 include_enpty: True 包含空文件(目錄) 執行命令:salt 對象 state.sls sls文件
利用如下命令測試:
salt '*' state.sls test
登錄到minion角色服務器
可以看到已經成功
結合jenkins實現自動化發布代碼到多台
有了前面的基礎接下來實現需要的功能非常容易,只需要讓jenkins構建成功后,執行salt的腳本即可,具體如下圖。