星期六, 7月 11, 2020

GitLab with openSUSE Leap 15.1 in Azure 安裝小記

GitLab with openSUSE Leap 15.1 in Azure 安裝小記


OS: openSUSE Leap 15.1 in Azure

GitLab: gitlab-ee-13.1.4


上次寫 GitLab 文章竟然是 2019 年 5 月的事情了 ~ ( 其實也只有那篇 XD )


今天要來寫 GitLab 在 openSUSE Leap 的安裝, 安裝的環境在 Azure (實驗在雲端比較方便)


GitLab 官方建議規格

  • 可以嘗試使用 Spot  執行個體, 因為只是測試安裝, 所以用 Spot 會比較經濟

  • 目前我的測試, 如果你用的是 Azure in open, 好像無法建立 Spot VM …. QQ 


首先登入 Azure Portal 


新增虛擬機器



  • 這邊在影像的部分當然是選擇 openSUSE Leap 系列, 覺得開心的是 openSUSE Leap 15.2 已經可以在 Azure 上被選取了



在佈署的時間, 來看看 GitLab 要如何在 openSUSE 上面安裝


GitLab CE (Community Edition)



GitLab EE (Enterprise Edition)


如果仔細比對上面兩份文件, 差別只有

  • zypper  install  gitlab-ce

  • zypper  install  gitlab-ee


那到底要裝 社群版本還是企業版呢?

  • Community Edition or Enterprise Edition ? https://about.gitlab.com/install/ce-or-ee/

    • 上面官方文件, 簡單一句話就是, 請你裝企業版, 以免你之後要升級還有可能要停機, 但是沒有做很多的解釋與比較


藉由 GitLab Taipei 社群的幫助, 給了我一些連結來釐清相關細節, 整理如下


首先就功能來說, 有分爲


  • 所以就功能來說 

    • CE 的版本就是只有 CORE 功能, 

    • 用 EE 版本但是你沒有 subscription 也是 CORE 功能

    • 其他功能就是買 subscription 才有


好了, 那下一步是... 功能的差異細節是 ??

參考官方網頁



  • 說好的 CE 與 EE 呢? 這八個格子是啥 ???

    • CORE, STARTER, PREMIUM, ULTIMATE

    • FREE, BRONZE, SILVER, GOLD

  • 然後好像還在哪邊看過部分字眼 ?


好像是這邊 https://about.gitlab.com/pricing/



這個時候你會想, 上面 8 個, 也只符合 7 個啊 ~~ 那 CORE 去哪邊了 ???


要從 2 份官方的文件整理出來


GitLab 的使用方式有兩種

  • 自架 GitLab ( self-hosted )

    • CE

      • 100% open source , 然後只有 CORE 功能

    • EE

      • 根據 subscription 來決定功能, STARTER, PREMIUM, ULTIMATE

  • 在 GitLab 上使用

    • Public project

      • 提供 GOLD 功能

    • Private project

      • 根據 subscription 來決定功能, FREE, BRONZE, SILVER, GOLD


官方整理表格如下




所以分界線大概就是

  • 要 100 % open source, 日後不會用到額外功能, 可以裝 CE

  • 不確定會不會用到額外功能, 裝 EE 或是在 GitLab.com 上面使用


我其實真的沒想到光選版本就可以讓我寫 4 頁的說明 Orz….


GitLab 也可以使用容器的方式安裝, 不過要考慮 Volume 的問題


整理這些資訊, VM 肯定裝好了 ..

使用 SSH 連線到 剛剛建立的 Azure VM

為了測試方便, 我透過 > sudo  su  -  切換為 root


參考 GitLab EE 安裝文件


加入 GitLab 的套件庫


# curl  -sS  https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh  |  sudo bash


接下來準備安裝 GitLab, 不過要先來處理 URL ( Domain Name ) 以及 防火牆的部分


在 Azure Portal 上面, 剛剛建立的 VM 概觀

點選 DNS 名稱的 設定



輸入 DNS 名稱後 點選 儲存



接下來處理防火牆


在 Azure Portal 上面, 剛剛建立的 VM 網路

點選 新增輸入連接埠規則



  • 建立針對 port 80 / port 443 的開放



準備安裝 GitLab 


# sudo  EXTERNAL_URL="http://test20200711.japaneast.cloudapp.azure.com"  zypper  install gitlab-ee


  • URL 請換成自己的 Domain Name

  • 安裝的輸出蠻可愛的



    

           *.                  *.

          ***                 ***

         *****               *****

        .******             *******

        ********            ********

       ,,,,,,,,,***********,,,,,,,,,

      ,,,,,,,,,,,*********,,,,,,,,,,,

      .,,,,,,,,,,,*******,,,,,,,,,,,,

          ,,,,,,,,,*****,,,,,,,,,.

             ,,,,,,,****,,,,,,

                .,,,***,,,,

                    ,*,.

      

    

    

         _______ __  __          __

        / ____(_) /_/ /   ____ _/ /_

       / / __/ / __/ /   / __ `/ __ \

      / /_/ / / /_/ /___/ /_/ / /_/ /

      \____/_/\__/_____/\__,_/_.___/

      

    

    Thank you for installing GitLab!



接下來連接 GitLab

http://YOUR_DOMAIN



  • 會被要求更改密碼



改完之後, 使用 root 與剛剛設定的密碼登入




使用雲端平臺的好處就是不用處理 DNS 與 SSL 的問題 :p

GitLab 安裝完成, 就可以往下一個關卡邁進了 :p


也算是前進一步


~ enjoy it




Reference



星期三, 7月 08, 2020

使用容器搭配 smokeping 監測網路狀態 in Azure 小記

使用容器搭配 smokeping 監測網路狀態 in Azure 小記


之前因為到東京的網路品質不是很穩定

所以就有想法要來監測相關資訊, 在主管的建議下, 來試試看 smokeping 這個軟體


官方網站


既然已經有容器的版本, 就使用容器的版本來測試


首先,在 Azure 使用 cloud shell + Ansible 新增 VM

啟動 Cloud Shell


下載 Ansible playbook from github


$ wget https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/azure_playbook/azure_create_vm.yml 


使用 ansible-playbook 指令建立 VM


$ ansible-playbook  azure_create_vm.yml

  • 使用互動的方式建立 openSUSE Leap 15.1 VM :)

  • 大家可以用自己喜歡的 OS


用 SSH 連入 VM, 切換身份


啟動容器服務, 設定開機啟動

  • # systemctl  start  docker

  • # systemctl  enable  docker


觀察資訊

# systemctl  status  docker

# systemctl  is-enabled  docker


參考網路上的文章, 使用 LinuxServer.io 打包的 container image 來測試


首先啟動 linuxserver/smokeping 的 container image 嘗試


# docker run --name=smokepingtest --rm -e  TZ=Asia/Taipei -p 80:80 linuxserver/smokeping


  • 這邊使用 --rm 是等等實驗完成之後就會刪除這個 container

  • 修改 Time Zone 爲 Asia/Taipei


預設收集時間是 300 秒, 所以要等個幾分鐘應該才會有相關資料


放置一段時間, 可以觀察到有相關圖表產生

  • http://YOUR_IP:8080




進一步測試

取得修改後的設定檔


# wget  https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Alerts

 


# wget  https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Database


# wget  https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/General


# wget  https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Presentation


# wget  https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Targets


# wget https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/ssmtp.conf


  • 編修相關設定檔, 可以參考 https://oss.oetiker.ch/smokeping/doc/smokeping_config.en.html

  • Alerts

    • 告警設定

  • Database

    • 取樣頻率

  • General

    • 一般性設定

  • Presentation

    • 呈現方式

  • Targets

    • 監控對象

    • 可以使用階層的方式來顯示

    • 可以用 IP 也可以用 FQDN

    • 可以將多個對象放在同一個圖

    • 設定是否觸發告警(alerts)

  • ssmtp.conf

    • SSMTP 是一個專門用於送信的系統小工具,它的角色類似 sendmail,可透過標準輸入接收郵件資料,並且同步將郵件傳送至指定 MTA,進行電子郵件的遞送動作

    • Linuxserver.io 打包的 image 利用 ssmtp 來傳送告警

    • 在公有雲上可以使用第三方的服務, 例如 SendGrid 來傳送信件

    • 可以參考 https://sakananote2.blogspot.com/2020/01/sendgrid-in-azure.html


啟動容器

# docker run --rm -d -e TZ=Asia/Taipei -v /root/Alerts:/config/Alerts  -v /root/Database:/config/Database -v /root/General:/config/General  -v /root/Presentation:/config/Presentation -v /root/ssmtp.conf:/config/ssmtp.conf  -v /root/Targets:/config/Targets -p 80:80  linuxserver/smokeping

  • --rm 視情況調整, 可以不加

  • 之前 ssmtp.config 要掛到 /etc/ssmtp/ssmtp.conf 的 bug 已經修正



基本數據閱讀




這樣就可以快速的搭建 smokeping 來監測網路狀態, 當網路有狀況的時候, 也可以藉由 SendGrid 來通知管理者


很方便的工具 


~ enjoy it



Reference: