DevOps課程-Configuration Management with Ansible 11

Project:Deploy Nodejs application -Part1

ZONGRU Li
Apr 1, 2022

接下來會連續幾篇實作佈署Nodejs的應用程式

首先剛開始當然是開個新的Deoplet機台

接著才輪到Ansible登場,撰寫Playbook來處理:

  1. 安裝node & npm到Droplet機台上
  2. 複製Node的artifact(tar檔)並解壓縮
  3. 用Node指令啟動Application
  4. 確認Application運作正常

在DigitalOcean上建立Server

(前幾篇的兩台先移除了!)

目前已經把前面幾篇使用的兩台先移除了,所以Droplets頁面空空的!

直接建立:

搞定:

撰寫Playbook:

1.先調整當前的hosts檔:

2.撰寫新的Playbook →deploy-node.yaml:

首先要先安裝npm,才能有nodejs應用程式所需要的deplndency

然後才能用node的指令啟動應用程式

所以需要先安裝npmnode

首先要做apt update動作,找到doc文件:

link

可以有兩種寫法,其1:

或是前面教的一般寫法,也就是其2:

使用上述其2寫法,apt相關指令動作可以變成list形式,串成一整行!

接著需要固定更新cache動作指定用apt-get

還有指定cache的有效時間改3600:

其中因為我對apt update動作中的cache不熟悉,所以翻找了一些解說:

link

大概理解是在做軟體安裝包的update時

會先陸續下載軟體包內容及其依賴內容,並且是deb格式檔案

過程中會放到暫存目錄,並可稱其為cache

直到完整下載後才能暫存目錄轉移到真正存放目錄

然後已經完整下載轉移甚至已經被完整安裝的軟體包對應的cache

並不會移除!!!!!!!!!!

這是為了避免重複的內容下載(就好像Maven的本機端.m2一樣)

但是由上述解釋,其實這些暫存目錄中的cache已經沒用了

是可以移除的

所以上面設置3600秒就移除,接著又去計算下一批的3600秒,以此類推!

接著設置安裝npm & node的Play:

(這些步驟可能會跟OS不同而有差異,這邊都是Ubuntu的示範):

參考範例:

link

以上這單一個Play(如上標題:Install node and npm)即完成!

複製與解壓縮tar檔(Play):

首先由於課程有些是跳著上的

這邊需要用到跳過的課程中寫的nodejs相關檔案

在這邊可以找到:

所以目前這個Play就是要從Ansible主控機將這個tgzCOPY給目標機

所以我得先把這個tgz檔搬上去主控機!!:

所以第二個Play撰寫如下:

過程中可以查看Module:

link

然後改好後丟到主控機去執行看看:

#執行playbook執行指令(過程在第一個Play因為有安裝,會久一點):
ansible-playbook -i hosts deploy-node.yaml

我大概等在安裝npm & node那邊快兩分鐘:

接著當然還是要ssh進去確認:

看起來有正常成功

npm & node也有安裝好:

講師最後也解說可以換個寫法,透過unarchive預設就有的搬檔動作:

這是講師的Code,她的目錄跟我用的不一樣

我這邊改為:

並且先移除剛剛搬上目標機上的物件:

一樣把Code搬上Ansible掌控機(過程略)

然後再次於掌控機上執行一次指令:

#執行playbook執行指令(過程如果在第一個Play因為有安裝,會久一點):
ansible-playbook -i hosts deploy-node.yaml

一樣連到目標機檢查看到:

以上這幾個Modules都是算常用的,值得學會!

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet