DevOps課程-Configuration Management with Ansible 15

Project Deploy Nexus-Part1

ZONGRU Li
Apr 7, 2022

前面DevOps課程上過如何安裝佈署Nexus機台

  1. 從建立Droplet
  2. SSH進到該機台內並執行:
  • 下在Nexus的二進位壓縮檔,並解壓縮
  • Nexus user身分運行Nexus

接著就是改以Ansible來完成上面的事項!

當完成了Ansiblescript

就有一個可以快速重複建立使用的script

未來即有能力將手動建置流程轉化為Ansible流程

Preparation:

收先這邊就移除掉前面用的node serverDroplet:

然後建立新的機台,規格如下:

建立好後得到新的Droplet IP:

這邊開始建立新的Playbook — deploy-nexus.yaml

更改當前的host檔內的IP,其他不動:

開始撰寫剛剛建立的deploy-nexus.yaml:

在那之前先把先前Nexus安裝的指令整理出來放在一個臨時檔案內:

大概整理如下:

針對安裝jrenet-tools部分當作一個Play開始撰寫:

接著是wget下載及解壓縮的部分是下一個Play:

其中取而wget代之的是get_url這個module

大概完成這一段落

就可以試著執行(將檔案放主控機上跑,記得hosts檔也有調整):

#在遠端主控機的~/ansible目錄下執行:
ansible-playbook -i hosts deploy-nexus.yaml

然後講師跑沒問題,我的出錯:

如上,看起來是get_url下載不到

確認了一下官網還有當初的版本可以下載:

link

在主控機ping發現會卡住:

curl會有302

試著直接在主控機上做wegt

wget https://download.sonatype.com/nexus/3/nexus-3.37.3-02-unix.tar.gz

看起來可以:

接著是ssh到新的目標機試著wegt看看:

所以這邊重跑看看playbook:

?????????????????????????????????????????????????????

完成後還是進去目標機看一下:

緊接著再撰寫解壓縮:

執行:

#在遠端主控機的~/ansible目錄下執行:
ansible-playbook -i hosts deploy-nexus.yaml

在目標機看到:

至此雖然運作正常,但是還是有調整空間

移除目標機上下載與解壓縮檔:

首先調整下載的url同講師用的latest

然後嘗試從debug中拿到下載的檔案名稱:

然後試著執行看看debug會看到啥:

其中有:

接著解壓縮部分打開註解並調整成:

執行:

一樣順利結束

然後到目標機台上確認:

接著安插一步在原本步驟中沒有的,將帶有版本號的nexus目錄改名

如上面nexus-3.38.1–01目錄改成nexus就好

所以要先拿到這不確定的版本號的目錄

這邊需要用到regular expression方式,所以需要額外module — find:

執行看看結果:

看起來可以找到完整絕對路徑名稱

接著就可以用shell module的mv指令處理目錄改名了!

執行:

進到目標機確認有改成功:

Conditionals in Ansible:

如上的script如果直接再重跑會看到:

確定目標機台上/opt/nexus目錄底下物件的時間:

再次執行script看看會部會有覆蓋的動作

然後在這第三次才報錯:

原因前面提過,針對shellcommand兩個module是沒有檢核ok

每次都會重複必執行的

所以需要條件式來避免這個錯誤!在shelltask前面加入module — stat:

執行看看得到:

放大:

是已存在!!!

至於如何透過這個true/false來決定執行shell task則是增加判斷為:

接著再次執行:

#在遠端主控機的~/ansible目錄下執行:
ansible-playbook -i hosts deploy-nexus.yaml

最後看到:

目前deploy-nexus.yaml內容:

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet