2018/05/20

建置 Gitlab Ci/CD :: CD - 準備 QA/Production Server

建立好CI之後,可以接著建置CD。

CD會使用 QA/Prod. Server上的一個使用者 (通常叫他 deployer)
透過 SSH Key 的驗證,直接操作遠端主機進行軟體的部屬。

所以 Server 需要安裝 SSH Server, 跟可以被外接連接的網路。
(可以想作 Gitlab會 SSH 到 Server)

建立使用者

sudo adduser deployer

設定deploy可以寫入要部屬的目錄權限 (ex: /var/www)

這邊有兩種做法

  • 設定目錄的擁有者/群組可以寫入
  • 使用 Linux ACL
    sudo setfacl -R -m u:deployer:rwx /var/www

產生 deployer SSH Key

  • 切換到 deployer (也可以另開SSH連接)
    su - deployer
  • 建立 id_rsa
    ssh-keygen -t rsa -b 4096
    (建立的時候不要設定 passphrase)
  • 將 public key 複製成 authorized_keys
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    之後就可以拿 deployer 的 private key 登入了;
    如果有其他使用者(例:開發者)也要登入,也把 public key append 到 authorized_keys。

複製 deployer private key 到 Gitlab 專案設定

cat ~/.ssh/id_rsa
從 --- ... --- 全部複製起來,貼到
Gitlab 網頁專案設定內
private key 儲存到 SSH_PRIVATE_KEY 變數
之後會利用這個私鑰登入Server


複製 deployer public key 到 Gitlab 專案設定

cat ~/.ssh/id_rsa.pub

除了私鑰之外,公鑰的部分需要儲存至 Deploy Keys
public key 到 Deploy Keys
需要複製公鑰到Deploy Key的原因是這個Repo是私有的,需要登入才可以 clone。
如果是任何人都可以直接複製可以跳過這步。

做完之後可以再server上用 deployer clone repo (記得使用SSH) 測試,
順便要把 gitlab 加入到 known_hosts。

測試 SSH Clone
(提醒: 記得修改 hosts)

總結

Server的部分就結束了,步驟大略是

  • 建立使用者
  • 產生SSH KEY
  • 設定可登入的 public keys
  • 設定可讀寫權限
  • 將 SSH 設定到 Gitlab 專案設定
  • 測試 git clone (僅第一次需要)

參考文章


沒有留言:

張貼留言