使用 Web 報稅 with openSUSE Leap 15.2 小記

使用 Web 報稅 with openSUSE Leap 15.2 小記


OS: openSUSE Leap 15.2


今年雖然因為疫情的關係, 政府有說報稅可以延長一個月, 但是想說在可以報稅繳稅的時間內作, 就先做吧. 軍無糧則散, 該盡的義務還是要盡的.


會想寫這篇部落格的原因是, 政府一直再進步, 從早期的只能用 Windows + 讀卡機 + 自然人憑證, 到後面可以使用 Mac + Windows Player + 讀卡機 + 自然人憑證, 再到 使用  Mac + 健保卡 進行報稅, 今年可以使用 openSUSE 以 Web 方式 + 行動電話認証 + 健保卡卡號, 真的很有感覺.


因為報稅一年一次, 所以要寫一下小記, 才會記得去年自己如何報稅 :)


今年報稅方式可以簡單分

  • Windows 離線版

  • 手機報稅

  • Web 線上版



官方網站  https://tax.nat.gov.tw/alltax.html?id=1

手機報稅的 Youtube 影片也很建議觀看


手機報稅與電腦報稅, 官方也有很清楚的圖示說明



我因為有扶養親屬的關係, 所以是採用 Web 線上版

Web 線上版 URL:  https://efile.tax.nat.gov.tw/irxw/index.jsp


進入之後會要求選取驗證方式

我這邊是選  行動電話認証

  • 需要準備的是

  • 納稅義務人的行動電話號碼, 業者

  • 納稅義務人的健保卡卡號




點選行動電話認証下方的 用這個方式身份認証


接下來會檢查相關環境

通過測試, 點選 系統檢查完畢, 前往身份驗證畫面



接下來輸入相關資訊

點選 執行身份驗證




接下來網頁上會出現 QRCode



請確認行動電話已經關閉 WIFI , 然後進行掃描


手機上會出現相關訊息

勾選我同意之後, 進行驗證



接下來就會進入報稅系統的畫面



進到這邊來, 報稅的方式就以其他系統無異, 那就不贅述了


今年可以直接使用 openSUSE Leap 15.2 用簡單的方式報稅, 真是開心


~ enjoy it


May 22nd, 2021

解決 Google Meet 不能分享螢幕與終端機 with openSUSE Leap 小記

解決 Google Meet 不能分享螢幕與終端機 with openSUSE Leap 小記 


OS: openSUSE Leap 15.2 


最近因為居家上班, 所以使用視訊開會的需求增加了

之前在 Google Hangout 時代就有發現有一陣子, 分享螢幕的時候只能分享視窗, 但是不能分享整個螢幕 ( 出現全黑視窗 ).


像是這樣

圖片取自 superuser.com討論


之前沒有放在心上是因為

  • 使用頻率不高

  • Zoom 沒有這個問題


但是最近因為會頻繁的使用 Google Meet 所以就在網路上找相關解決方案

找到的結論是: Wayland 的問題, 只要將 Display Server 從 Wayland 換回 Xorg 就可以解決


有關於 Wayland vs Xorg 也有找到一篇文章看


換回 Xorg 的方式很簡單, 在登入畫面, 輸入密碼的時候, 點選設定的齒輪圖示

點選 GNOME on Xorg 即可


圖片取自 superuser.com討論


換成 Xorg 之後, 馬上感受到的改變是, 輸入法突然從 ibus 換回 gcin :)

其他的部份, 目前還好


接下來驗證 Google Meet 螢幕分享



一切順利

I love Xorg with openSUSE 


~ enjoy it






Reference



使用 nmcli 設定 Network Manager PPPoE 撥接光世代固定 IP 小記

使用 nmcli 設定 Network Manager PPPoE 撥接光世代固定 IP 小記


OS: openSUSE Leap 15.2


情境:

  • 由於 COVID 19 的關係, 有些公司開始有機會居家上班是分區上班

  • 家中的環境是使用 4G + 路由器的方式進行上網, 最近因為訊號與居家上班的關係, 跑去申請中華電信的光世代 100M / 40M.

  • 因不想頻繁更動防火牆規則, 故想要申請固定 IP 來簡化流程與增進效率


這篇部落格就是紀錄申請固定 IP 與相關設定


==== 申請光世代固定 IP ====


到中華電信官網 https://www.cht.com.tw

點選 家庭上網與通訊 -- > 點選 固定 IP 申請


登入帳號



  • 這邊輸入申請時候給的小卡片上面的帳號與密碼


點選 一個固定IP + 七個動態 IP

輸入 聯絡 Email

勾選 我已閱讀並同意

點選 送出申請

  • 聯絡Email 很重要, 以後有變動與相關資訊都會用這個 email 通知


這樣就設定完成 :)


==== 撥接固定 IP  ====


但是如果你到 https://www.whatismyip.com/ 去觀察你的對外 IP

你會發現, 這個時候的對外 IP, 並不是配發的固定 IP

  • 因為中華電信要使用 xxxxxxxx@ip.hinet.net 撥接上去的才是固定 IP

  • 一開始透過設備無線 / 有線所取得的 IP 都是 7 個動態 IP 的其中一個


所以如果要使用配發的固定 IP, 那就要

  • 使用有線連線光世代設備

  • 使用 PPPoE 配合 xxxxxxxx@ip.hinet.net 撥接才能取得 IP


網路上搜尋到很多文章都是用 pppoeconf 或是 rp-pppoe 方式來撥接, 但是因為我的環境是用 NetworkManager + GNOME 介面, 所以我想要在現有介面處理掉, 找了一下網路上面的做法  

找到了使用 nmcli (command-line tool for controlling NetworkManager) 方式來解決


首先可以用 nmcli 指令觀察連線

# nmcli  connection  show


預設在 NetworkManager 沒有看到  PPPoe 相關設定

使用 nmcli 指令建立一個 pppoe 連線, 名稱爲 hinet, 並進入設定


# nmcli  connection  edit  type  pppoe  con-name  "hinet"


===| nmcli interactive connection editor |===


Adding a new 'pppoe' connection


Type 'help' or '?' for available commands.

Type 'print' to show all the connection properties.

Type 'describe [<setting>.<prop>]' for detailed property description.


You may edit the following settings: connection, pppoe, 802-3-ethernet (ethernet), ppp, 802-1x, ethtool, match, ipv4, ipv6, tc, proxy


設定帳號名稱

nmcli>  set  pppoe.username  25677291@ip.hinet.net

儲存設定

nmcli>  save

Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.

Do you still want to save? (yes/no) [yes] yes

Connection 'hinet' (8d2d2b0f-2ab7-4302-9428-eb8a1adc1d41) successfully saved.

離開設定

nmcli>  quit


點選GNOME 介面右上角, 有線設定值



點選 hinet 設定按鈕



  • 這個時候會被要求輸入管理者帳號確認權限


選取有線網路的介面 (Parent interface) 以我這邊是 eth0

這個使用可以觀察到剛剛設定的 Username 應該已經填入 (xxxxxxxx@ip.hinet.net)

輸入密碼 -- >  點選 儲存


把有線網路停用, 應該 hinet 就會自動撥接上去了


  • 相關設定檔儲存在 /etc/NetworkManager/system-connections 目錄下, 也可以觀察


接下來就是觀察取得的 IP 是否為配發的固定 IP ( 還會帶 IPv6 )

  • 可以用 # ip address show  觀察 ppp0 介面


這樣IP 就固定下來了 :)

又前進一小步


~ enjoy it


May 13th, 2021

三大雲平台工具容器升級小記 - ansible 2.10.9 / AWS Cli 2.2.4 / gcloud 340.0

三大雲平台工具容器升級小記 - ansible 2.10.9 / AWS Cli 2.2.4 / gcloud 340.0


OS: container with openSUSE Leap 15.2



上次升級是 2020/11/29 , 這次會來升級的原因是 


然後也同步紀錄一下目前 Azure CloudShell 上面的 Ansible 資訊

  • Ansible: 2.10.2 / python 3.7.3 (已經升級到 python 3)




先整理結果


升級前

OS: openSUSE Leap 15.2

awscli:  aws-cli/2.1.4 Python/3.7.3

gcloud: Google Cloud SDK 319.0.0

azure-cli: 2.15.1 (目前有 bug)

ansible: 2.10.3


升級後

OS: openSUSE Leap 15.2

awscli:  aws-cli/2.2.4 Python/3.8.8

gcloud: Google Cloud SDK 340.0.0

azure-cli: 2.23.0 (目前有 bug)

ansible: 2.10.9


AWS CLI v2 安裝文件


GCP Cloud SDK 版本




這次的做法還是會透過 docker build 指令來進行

  • 我有比較過 docker build 以及使用現有的 docker image 修改後再使用 docker commit 建立的 image 大小還是很有差異的


Dockerfile 的部分我是拿之前 openSUSE Leap 15.2 來修改


修改細節

  • Update time

  • Google SDK 版本還有下載的檔案路徑以及檔案名稱



列出 diff 的結果給大家參考



> diff opensuseLeap152_ansible_20210513_Dockerfile  opensuseLeap151_ansible_20201129_Dockerfile 



6c6

< # update time: 20210513

---

> # update: 20201129

75c75

< # Install google cloud SDK 340.0.0

---

> # Install google cloud SDK 319.0.0

77,78c77,78

< RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-340.0.0-linux-x86_64.tar.gz && \

<   tar zxvf google-cloud-sdk-340.0.0-linux-x86_64.tar.gz && \

---

> RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-319.0.0-linux-x86_64.tar.gz && \

>   tar zxvf google-cloud-sdk-319.0.0-linux-x86_64.tar.gz && \




Dockerfile 內容如下




# openSUSE Leap 15.2 with ansible, azure-cli, aws cli, gcloud

FROM opensuse/leap:15.2


# Author

# MAINTAINER 已經棄用, 之後要使用 LABEL 方式

# update time: 20210513

LABEL maintainer="sakana@cycu.org.tw"


# Set LANG for UTF-8 - for Chinese

ENV LANG C.UTF-8


# Install python3-pip, upgrade pip, ansible, boto, boto3

RUN zypper install -y python3-pip && \

  pip3 install --upgrade pip && \

  pip3 install ansible && \

  pip3 install boto boto3


# Install openssh, set ls alias

RUN zypper install -y openssh

RUN echo "alias ls='ls --color=tty'" >> /root/.bashrc


# Install wget, download azure_rm.py, set permission

RUN zypper install -y wget


# azure_rm.py no need to download 

# Starting with Ansible 2.8, Ansible provides an Azure dynamic-inventory plug-in

# https://docs.ansible.com/ansible/latest/plugins/inventory/azure_rm.html

# old azure_rm.py URL https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py


# Create working directory in /root

RUN mkdir /root/.azure && \

  mkdir /root/.aws && \

  mkdir /root/playbook && \

  mkdir -p /root/.config/gcloud && \

  wget https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/template/ansible.cfg && \

  mv /ansible.cfg /root && \

  wget https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/template/hosts && \

  mv /hosts /root


#### Azure #### 

# Install azure-cli

# 2020/11/29 Still have az login issue in Github https://github.com/Azure/azure-cli/issues/13209

RUN zypper install -y curl && \

  rpm --import https://packages.microsoft.com/keys/microsoft.asc && \

  zypper addrepo --name 'Azure CLI' --check https://packages.microsoft.com/yumrepos/azure-cli azure-cli && \

  zypper install --from azure-cli -y azure-cli


# Install Ansible azure module

# After ansible 2.10, some module move to ansible collect, change install method

RUN zypper install -y curl && \ 

  curl -O https://raw.githubusercontent.com/ansible-collections/azure/dev/requirements-azure.txt && \

  pip3 install -r requirements-azure.txt && \

  rm -f requirements-azure.txt && \

  ansible-galaxy collection install azure.azcollection




#install vim tar gzip jq unzip less bind-utils iputils groff

RUN zypper install -y vim tar gzip jq unzip less bind-utils iputils groff

RUN echo "set encoding=utf8" > /root/.vimrc


#### AWS ####

# Install awscli v1

#RUN pip3 install awscli

#RUN echo "source /usr/bin/aws_bash_completer" >> /root/.bashrc


# Install awscli v2

RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \

  unzip awscliv2.zip && \

  /aws/install

RUN echo "complete -C '/usr/local/bin/aws_completer' aws" >> /root/.bashrc


#### GCP ####

# Install google cloud SDK 340.0.0

ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1

RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-340.0.0-linux-x86_64.tar.gz && \

  tar zxvf google-cloud-sdk-340.0.0-linux-x86_64.tar.gz && \

  /google-cloud-sdk/install.sh && \

  echo "if [ -f '/google-cloud-sdk/path.bash.inc' ]; then . '/google-cloud-sdk/path.bash.inc'; fi" >> /root/.bashrc && \

  echo "if [ -f '/google-cloud-sdk/completion.bash.inc' ]; then . '/google-cloud-sdk/completion.bash.inc'; fi" >> /root/.bashrc




使用 docker build 指令建立 image


> docker build  -t  sakana/ansible_opensuse152:20210513  -f  ./opensuseLeap152_ansible_20210513_Dockerfile   .


  • 使用 -f 指定 Dockerfile 名稱

  • 最後是 ” . “ 目前的目錄



測試 container image


> docker  run  -v  ~/.aws:/root/.aws  -v  ~/.azure:/root/.azure  -v ~/.config/gcloud:/root/.config/gcloud  -it  sakana/ansible_opensuse152:20210513  /bin/bash


測試結果 OK, 建立  tag


  • 這邊目前因為 openSUSE Leap 15 使用舊的 azure cli 以及相依性, 所以現在 az 指令會有問題, 已經 update issue 以及花了很多時間調整, 目前還是要等 openSUSE and Azure 看是否會有後續更新

  • 但是 ansible with azure 沒有問題, 所以目前 az 指令可能會暫時透過 Azure cloud shell




觀察資訊

> docker  images


REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

sakana/ansible_opensuse152   20210513            c69c2e1c6e9e        13 minutes ago      2.45GB

opensuse/leap                15.2                573008f769b5        20 hours ago        106MB

sakana/ansible_opensuse152   latest              9f8d6b777cc9        2 weeks ago         1.82GB





建立 tag 

> docker  tag  c69c2e1c6e9e  sakana/ansible_opensuse152:latest


登入 docker

> docker  login


上傳 image

> docker  push  sakana/ansible_opensuse152:20210513


> docker  push  sakana/ansible_opensuse152:latest


完工, 以後使用就用


> docker  run  -v  ~/.aws:/root/.aws  -v  ~/.azure:/root/.azure  -v ~/.config/gcloud:/root/.config/gcloud  -it  sakana/ansible_opensuse152  /bin/bash



額外小記: 又碰到 Azure 的認證資訊已經超過一年了, 參考之前自己的筆記

  • http://sakananote2.blogspot.com/2020/05/azure-dynamic-inventory-with-ansible.html

  • 使用 az  ad  sp list  --all --output table | grep azure-cli 找出舊的認證, 

  • 刪除他 ex: # az  ad  sp delete --id d06f8905-ad21-425b-9da5-3e0bcf22a853 

  • 然後建立新的認證 ex: # az  ad  sp  create-for-rbac --query  '{"client_id": appId, "secret": password, "tenant": tenant}'

  • 查詢 subscription_id, ex: # az  account  show  --query  "{ subscription_id: id }"

  • 更新  ~/.azure/credentials



~ enjoy it


Reference:

Apr 5th, 2021

AWS CodeCommit 使用小記

AWS CodeCommit 使用小記


OS: openSUSE Leap 15.2

git: 2.26.2


最近因為使用 GitLab 的關係, 所以有些資料原本是使用 share folder 的方式, 現在也會考慮使用 git 的方式儲存.


今天來寫 AWS CodeCommit 的使用紀錄

目前使用的方式是參考


連接 AWS CodeCommit 有很多方式, 我是採取 SSH Key 的方式, 網路上有人反應這樣的做法比較穩妥, 比較不會出現奇怪的現象.


實作的方式


接下來就讓我們開始吧


首先登入 AWS IAM console

點選左方的 Groups -- > 點選 Create New Group

群組名稱輸入: CodeCommitPowerUser  -- > 點選 Next Step



在 Attach Policy 頁面

搜尋 CodeCommit -- > 勾選 AWSCodeCommitPowerUser

點選 Next Step


檢閱相關設定

點選 Create Group



接下來加入使用者

點選剛剛建立的 CodeCommitPowerUser 群組

在 Users 頁籤 -- > 點選 Add Users to Group



勾選要加入的使用者 -- > Add Users


接下來要將使用者的 SSH Public Key 上傳到 IAM 使用者的 SSH Keys for AWS CodeCommit


點選 IAM console 左方的 Users

點選 剛剛被加入的使用者

點選 Security credentials 頁籤


點選 Upload SSH public key 按鈕



將 SSH 公鑰貼上

點選 Upload SSH public Key





將 SSH key ID 記錄下來, 等等這個 ID 就是 SSH User ID




再來建立 ~/.ssh/config

使用自己習慣的編輯器 建立 ~/.ssh/config 檔案, 內容如下



  • User 後面那串字元, 請換成之前的 SSH key ID

  • IdentityFile 請換成 自己的 SSH Private Key, 如 id_rsa


將 ~/.ssh/config 檔案設定相關權限


> chmod  600  ~/.ssh/config


最後階段, 建立 CodeCommit Repository, 使用 git clone 測試操作


登入 AWS CodeCommit 主控台 https://console.aws.amazon.com/codesuite/codecommit/home


CodeCommit 也是 Region 服務, 所以可以先選取你要建立的 Region, 我這邊的例子是使用 Ohio (  us-east-2 )


點選 Create repository


輸入 儲存庫名稱

點選 Create




建立完成之後, 其實會有不同的頁籤來說明如何連接

點選 SSH 頁籤

展開你要的 OS 選項, 我是用 openSUSE Leap 15.2 , 所以展開 Linux


點選 Step 4 的 Copy

他會複製 git clone ssh 的指令



接下來進行 git clone 的測試


切換到要進行 git clone 的目錄


貼上與執行剛剛複製的 git clone 指令


> git  clone  ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/test20210405


正複製到 'test20210405'...

warning: 您似乎複製了一個空版本庫。


進入到相關目錄

> cd   test20210405/


接下來嘗試建立檔案進行 commit 測試


> echo  "CodeCommit Test"  >  README.md

> git  add  .

> git  commit  -m  "20210405"


[master (根提交) 6381ea1] 20210405

 1 file changed, 1 insertion(+)

 create mode 100644 README.md


> git  push  -u  origin  master


Warning: Permanently added the RSA host key for IP address '52.95.17.51' to the list of known hosts.

枚舉物件: 3, 完成.

物件計數中: 100% (3/3), 完成.

寫入物件中: 100% (3/3), 227 位元組 | 227.00 KiB/s, 完成.

總共 3 (差異 0),復用 0 (差異 0),重用包 0

To ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/test20210405

 * [new branch]      master -> master

分支 'master' 設定為追蹤來自 'origin' 的遠端分支 'master'。



回到  AWS CodeCommit 觀察



這樣又多了一個 git 存儲的去處, 也多向 AWS 服務邁向一步



~ enjoy it



Reference:





Rancher 2.5.7 with container in Azure 安裝小記

Rancher 2.5.7  with container in Azure 安裝小記


OS: openSUSE Leap 15.2 in Azure

Rancher: 2.5.7


今年又開始重拾 Kubernetes 的研讀, 之前就有注意 Rancher 的相關消息, 在 SUSE 正式併購 Rancher 之後, 就有打算找時間看看他


目前的想法就是研讀 K8S 的時候, 搭配他來看看, 因為是嘗試, 就從 single node with container 方式開始


安裝需求

https://rancher.com/docs/rancher/v2.x/en/installation/requirements/

  • 以  single-node 方式, 規格是 1 vCPU 4GB RAM / 2 vCPU 8GB RAM, 換成 Azure Virtual Machine 的 Size 比較節費的就是 Standard_B2ms



使用 SSH 連入建立的 openSUSE Leap 15.2 in Azure


切換身份爲 root

>  sudo  su  -


啟動 docker 服務, 並預設啟動


# systemctl  start  docker

# systemctl  enable  docker


叄考官方文件 啟用 rancher container



啟動 Rancher


#docker  run  -d  --restart=unless-stopped   -p  80:80  -p  443:443   --privileged   rancher/rancher:latest


然後在 Azure 的 網路安全性群組 開放 Port 443 與 Port 80


開啟瀏覽器 https://YOUR_IP:443

會看到歡迎畫面


  • 輸入管理者 admin 的密碼

  • 勾選同意協定 -- > Continue



設定 Rancher 的 URL



輸入相關 IP 或是 URL 後 -- > Save URL


接下來會看到歡迎畫面與 Rancher 2.5 的介紹視窗



  • 這樣可以清楚的知道目前使用的是 Rancher 2.5 (笑)



觀察一下目前的歡迎畫面



右下角可以調整介面的語系, 可以調整成自己想要的語系




切換後的樣貌



我們來嘗試透過 Rancher 來建立  AKS Cluster 吧


點選 添加叢集


看的出來有支援很多種型態


這邊我點選 Azure AKS



接下來有看到設定畫面



在新增 Cluster 之前要先處理  Azure 上面 Service principals 的部分


我是使用 Azure 的 Cloud Shell 來進行


建議建立之前可以先使用下列指定觀察目前的 Service principals


$ az  ad  sp  list  --all  --output  table


根據官方文件建立 Service Principal

$ az ad sp create-for-rbac --skip-assignment --name testRancherServicePrincipal



  • 這樣的方式顯示出來的欄位爲 appID / displayName / name / password / tenant

    • 可是其實我們只需要的是 Subscription ID / Client ID / Tenant ID / Client Secret

    • 補充: Client ID 就是 AppID, Client Secret 就是 password, 所以只差了 Subscription ID 


所以決定把剛剛那個 Service Principal 先刪除了 ( 順便複習一下之前的 )


使用剛剛的指令加上 grep Rancher 找出剛剛的 Service Principal

$ az  ad  sp  list  --all  --output  table |  grep Rancher

 

參考之前自己的文章


刪除剛剛建立的 Service Principal


$ az  ad  sp  delete --id  8faa88b0-a540-4d8c-a790-1ca6a0522dsd


  • 8faa88b0-a540-4d8c-a790-1ca6a0522dsd 爲剛剛建立的 AppId, 可以看第三欄位


建立 Service Principal


$ az  ad  sp create-for-rbac  --name  testRancherServicePrincipal-20210404 --query   '{"client_id": appId, "secret": password, "Tenant_id": tenant}'



  • 這邊有個雷點, 不可以加上 --skip-assignment  否則會遇到權限不足的問題, 會遇到錯誤訊息 access was recently granted, please refresh your credentials

  • 這次的指令相比於之前自己文章的指令, 有加上 --name 的選項在裡面, 如果沒有使用 --name 指定名稱, 預設會是 azure-cli-20xx-xx-xx-xx-xx-xx, 這樣的好處是可以知道建立時間, 所以我的名稱也有加入時間進去, 以免以後不知道那個 SP 過期

  • 加上 --query 的方式, 輸出自己要的資訊


接下來取得 Subscription ID

使用 az account 指令取得


$ az  account  show  --query  "{ subscription_id: id }"

{

 "subscription_id": "6a2bdf3b-XXXX-XXXX-XXXX-3371d3401feb"

}


好的, 原料備齊, 回到 Rancher 填入資訊

點選 Next: Authenticate & configure nodes


  • 再次提醒自己剛剛在建立 az ad sp 的時候不可以加上 --skip-assignment  否則會遇到權限不足的問題



驗證通過之後, 就是設定 Kubernetes 相關選項




  • 版本我用他預設給的 1.19.7




  • 填入  Resource Group 名稱

  • 設定要使用的 VM 規格, 主機數量

  • 貼上 SSH 公鑰


點選 創建


這個時候可以觀察相關狀態



建立需要一點時間, 可以同步觀察 Azure 上面的資源


建立完成, 可以在 Rancher 與 Azure 上面同步觀察



  • 可以直接在網頁上面執行 kubectl


也可以下載 Kubeconfig


Azure 這邊則可以觀察到

  • 有建立相關的 AKS 服務以及 Resource Group for AKS



最後來測試一個猛的, 刪除 cluster

點選剛剛建立的 Cluster 點選刪除



觀察了一下 Azure 那邊, Rancher 也很盡責的刪除剛剛建立的 AKS 與相關資源



小結一下: 目前看起來 Rancher UI 是很方便的, 所以日後可以多嘗試一下他的相關功能

也算是跨出 Rancher 的一小步了


~ enjoy it




Reference:





openSUSE Leap 15.2 以非互動方式註冊 GitLab runner with docker executor in Azure 小記

openSUSE Leap 15.2 以非互動方式註冊 GitLab runner with docker executor in Azure 小記


OS: openSUSE Leap 15.2 in Azure

GitLab: 使用 gitlab.com


上次的文章使用互動的方式註冊 gitlab-runner 然後是用 shell executor


今天要來實作以非互動的方式註冊 gitlab-runner 然後採取 docker 來當 executor


實作前提

  • 在 gitlab.com 有帳號 ( 免費的就可以, 有付錢的功能更多  )


確認自己的 GitLab project / Group CI / CD Runner 設定與 Token 

  • 在 GitLab.com 登入自己帳號

  • 在 Project / Group 內 的 Settings -- > CI / CD

  • 展開 Runners 就會看到 Token




接下來開始建立實驗


建立 openSUSE Leap 15.2 in Azure

  • 我是用  Cloud Shell in VS code 然後透過 ansible 建立



使用 zypper 新增 gitlab 的 repo

  • 語法  zypper ar -f <URL> <alias>


# zypper  ar  -f  https://download.opensuse.org/repositories/openSUSE:/infrastructure:/gitlab/openSUSE_Leap_15.2  gitlab


觀察相關資訊

# zypper  lr


Repository priorities are without effect. All enabled repositories share the same priority.


# | Alias               | Name                        | Enabled | GPG Check | Refresh

--+---------------------+-----------------------------+---------+-----------+--------

1 | gitlab              | gitlab                      | Yes     | ( p) Yes  | Yes

2 | repo-debug          | Debug Repository            | Yes     | ( p) Yes  | Yes

3 | repo-debug-update   | Update Repository (Debug)   | Yes     | ( p) Yes  | Yes

4 | repo-non-oss        | Non-OSS Repository          | Yes     | ( p) Yes  | Yes

5 | repo-oss            | Main Repository             | Yes     | ( p) Yes  | Yes

6 | repo-source         | Source Repository           | Yes     | ( p) Yes  | Yes

7 | repo-update         | Main Update Repository      | Yes     | ( p) Yes  | Yes

8 | repo-update-non-oss | Update Repository (Non-Oss) | Yes     | ( p) Yes  | Yes


匯入  GPG Key 與 refresh repo

# zypper  --gpg-auto-import-keys  refresh


安裝 gitlab-runner

# zypper   install  -y  gitlab-runner


啟動 docker 服務

# systemctl  start  docker


設定 docker 開機時啟動

# systemctl  enable  docker


使用 gitlab-runner register 搭配 --non-interactive 方式非互動註冊

# gitlab-runner  register --non-interactive  --url  https://gitlab.com  --registration-token YOUR_TOKEN    --executor  docker --docker-image  opensuse/leap:latest  --name  test-gitlab-runner-docker   --tag-list  "opensuse-docker"


  • --url 與 --registration-token 請換成自己要註冊的 Server 與 token

  • --executor 指定 docker 方式 並指定預設的 docker image 爲 opensuse/leap:latest

  • --name 指定名稱

  • --tag-list 指定 tag


觀察相關資訊

# cat   /etc/gitlab-runner/config.toml


concurrent = 1

check_interval = 0


[session_server]

  session_timeout = 1800


[[runners]]

  name = "test-gitlab-runner-docker"

  url = "https://gitlab.com"

  token = "5kYxjqvGPPy63Vus_W66K"

  executor = "docker"

  [runners.custom_build_dir]

  [runners.cache]

    [runners.cache.s3]

    [runners.cache.gcs]

  [runners.docker]

    tls_verify = false

    image = "opensuse/leap:latest"

    privileged = false

    disable_entrypoint_overwrite = false

    oom_kill_disable = false

    disable_cache = false

    volumes = ["/cache"]

    pull_policy = "always"

    shm_size = 0


  • 這邊的 token 是 runner 的 token


啟動 gitlab-runner

# gitlab-runner  start


觀察相關資訊

# gitlab-runner  status


也可以到 Gitlab 上面觀察



又前進一步

下次預計來弄 ansible playbook :)


~ enjoy it


Reference:



openSUSE Leap 15.2 as GitLab runner in Azure 小記

openSUSE Leap 15.2 as GitLab runner in Azure 小記


OS: openSUSE Leap 15.2 in Azure

GitLab: 使用 gitlab.com


最近開始學 GitLab

先感謝 陳正瑋 的鐵人賽文章以及 和艦長一起30天玩轉 GitLab 書籍

入門多了很多的資訊


今天要來寫的是把 openSUSE Leap 15.2 當成 gitlab runner 來執行

爲何要寫這篇呢? 當然是因為官方的文件上沒有列出 openSUSE 安裝方式 :)


那就只好自己嘗試, 然後記錄下來了 (攤手)


實作前提

  • 在 gitlab.com 有帳號 ( 免費的就可以, 有付錢的功能更多  )


確認自己的 GitLab project / Group CI / CD Runner 設定與 Token 

  • 在 GitLab.com 登入自己帳號

  • 在 Project / Group 內 的 Settings -- > CI / CD

  • 展開 Runners 就會看到 Token




接下來開始建立實驗


建立 openSUSE Leap 15.2 in Azure

  • 我是用  Cloud Shell in VS code 然後透過 ansible 建立的 ~ 開心



回到 gitlab 身上來

如果在 software.opensuse.org 上面搜尋 gitlab-runner



  • 這邊其實就有看到實驗性套件了


使用 ssh 連入剛剛的 openSUSE Leap 15.2 in Azure


使用 yast  repositories 新增套件庫


#yast  repositories


新增套件庫 (Alt + A)

方式選取 指定 URL



點選下一步 (Alt + N)

套件庫的名稱可以自行取

URL 的部分指定 



點選下一步 (Alt + N)

有遇到 GnuPG Key 可以 Trust 一下



確認 GitLab 套件庫有被加入

點選 OK (Alt + O)



接下來新增相關套件


# zypper   install  gitlab-runner


Loading repository data...

Reading installed packages...

Resolving package dependencies...


The following 5 NEW packages are going to be installed:

  dash gitlab-common gitlab-runner libruby2_6-2_6 ruby2.6


5 new packages to install.

Overall download size: 12.6 MiB. Already cached: 0 B. After the operation, additional 52.3

MiB will be used.

Continue? [y/n/v/...? shows all options] (y): y



註冊 gitlab-runner


# gitlab-runner  register


輸入 https://gitlab.com

輸入 Gitlab-runner token

輸入 這個 runner 的敘述

輸入 這個 runner 的 tag ( 這個很重要 )

輸入 這個 runner 的 executor ( 一般都是 docker or shell, 請見官方文件 )



啟動 gitlab-runner

# gitlab-runner  start


Runtime platform                                    arch=amd64 os=linux pid=3192 revision=1b659122 version=12.8.0


觀察相關資訊

# gitlab-runner  status


Runtime platform                                    arch=amd64 os=linux pid=3210 revision=1b659122 version=12.8.0

gitlab-runner: Service is running!


Notes:

  • Runner 的 config 會存放在 /etc/gitlab-runner/config.toml

  • 要成為 gitlab-runner 也要安裝 git 不然執行會出現錯誤

  • 執行的時候相關工作目錄會在 /srv/gitlab-runner/builds/GITLAB-RUNNER-TOKEN/ 下


在 GitLab.com 上面確認 runner 有設定成功



找時間要看的文件

Disable SKEL 說明

https://docs.gitlab.com/runner/install/linux-repository.html#disable-skel


Gitlab runner 安裝說明

https://docs.gitlab.com/runner/install/linux-repository.html



這樣算是又向 GitLab 前進一步了

~ enjoy it



Reference:




VS code Azure Account extension 小記

VS code Azure Account extension 小記


OS: openSUSE Leap 15.2

vscode: 1.52.1

Extension: Azure Account v0.9.5


今天要來寫 Azure Account extension in vscode


在很多實驗情境的時候, 可能會使用 vscode 來撰寫 shell script 或是 ansible playbook 來對雲端上面的機器進行實驗. 甚至是使用 Remote SSH 在雲端上面開發.


在 Azure 的使用上面, 我就常常使用到 Cloud Shell 來進行 ansible playbook 的佈署.


VS code 對我最亮眼的地方就是有一大推好用的 Extension.

今天要來寫的就是 Azure Account 這個 extension. 我主要用來在 vscode 內開啟 Bash 版本 Cloud Shell 


安裝方式


開啟 vscode

點選左側 Extension 圖示, 搜尋 Azure 可以找到 Azure Account 這個 Extension



點選 Install 進行安裝 


在 vscode 內 點選 View -- > Command Palette (或是按 Ctrl + Shift + P)



選取 Azure: Open Bash in Cloud Shell



如果還沒有登入 Azure, 會被要求登入 Azure


順利的話就會在 vscode 內開啟 Cloud Shell :)



接下來就可以快樂的在 vscode 內開啟 Cloud Shell 來進行管理 



不用開啟 Azure Portal 真是方便 :)


同場加映: 如果碰到要開啓 Cloud Shell 要求選取目錄導致無法開啟的問題


請見 https://github.com/microsoft/vscode-azure-account/issues/220


解法 

  • 登入 Azure Portal

  • 開啟 Cloud shell

  • 輸入 az account list

  • 複製 tenantId

  • 開啟 VS code

  • 點選 Azure Account extension 設定



在Azure: Tenant 設定將剛剛的 tenantId 貼上去



這樣就解決了

再次感謝 DanielMOliveira 

這個 issue 我也開了快五個月 :p


又向 Azure 前進一步


~ enjoy it


Reference:


 


WordPress with container 練習小記

WordPress with container 練習小記


OS: openSUSE Leap 15.2 in Azure


今天來寫 WordPress 的練習文章

現在 WordPress 的使用率已經越來越高了, 今年的一些讀書計劃的內容內也有 WordPress 的規劃

首先就使用 container 的方式來進行練習.


規劃架構



  • 使用 openSUSE Leap 15.2 VM in Azure 作為 container host

  • 使用 container 方式執行 MySQL 與 WordPress

  • 建立獨立的 container network 給 WordPress 與 MySQL

    • 好處是可以使用名稱的方式連接

  • 建立 container volume web-data

    • 掛載 MySQL 的 /var/lib/mysql 以利後續維護與升級

  • 可以考慮另外建立獨立的 volume 來存放 WordPress 的 Plugin

在 Azure 內建立 openSUSE Leap 15.2 的 VM


SSH 連線虛擬機器, 並使用 > sudo su - 切換為管理者 root


啟動 docker 服務

# systemctl  start  docker


首先觀察主機上的 volume


# docker  volume  ls


DRIVER              VOLUME NAME


建立 volume

# docker  volume  create  web-data


web-data


觀察資訊

# docker  volume  ls


DRIVER              VOLUME NAME

local               web-data



# docker  volume  inspect  web-data


[

    {

        "CreatedAt": "2021-01-03T06:04:30Z",

        "Driver": "local",

        "Labels": {},

        "Mountpoint": "/var/lib/docker/volumes/web-data/_data",

        "Name": "web-data",

        "Options": {},

        "Scope": "local"

    }

]


  • 可以觀察 web-data 在本機上面的 mountpoint




一樣, 建立之前先觀察資訊


# docker  network  ls


NETWORK ID          NAME                DRIVER              SCOPE

0362ba8e433b        bridge              bridge              local

1e4986872739        host                host                local

0ac3b895fef7        none                null                local


建立 network


# docker  network  create  web-network


457bc7fc24f0b26796f32f5f3191853b9363a3a83e07044cf8d4fe5bd8a213fa


再次觀察資訊

# docker  network  ls


NETWORK ID          NAME                DRIVER              SCOPE

0362ba8e433b        bridge              bridge              local

1e4986872739        host                host                local

0ac3b895fef7        none                null                local

457bc7fc24f0        web-network         bridge              local


爲何要建立 network, 因為預設 bridge network 不能用名稱解析, 這樣會連接不到

可以參考官方的說明: Differences between user-defined bridges and the default bridge

  • https://docs.docker.com/network/bridge/

  • User-defined bridges provide automatic DNS resolution between containers

  • Containers on the default bridge network can only access each other by IP addresses, unless you use the --link option, which is considered legacy

另外一篇文章


開始佈署 MySQL


# docker  run  --name  web-mysql --network web-network -e  MYSQL_ROOT_PASSWORD=rootpassword  -e  MYSQL_DATABASE=wp  -e  MYSQL_USER=sakana  -e  MYSQL_PASSWORD=sakanapassword -d  mysql:5.7



開始佈署 WordPress

# docker  run  --name  web-wordpress  --network  web-network  -e  WORDPRESS_DB_HOST=web-mysql:3306 -e WORDPRESS_DB_NAME=wp  -e  WORDPRESS_DB_USER=sakana  -e  WORDPRESS_DB_PASSWORD=sakanapassword  -p  80:80  -d  wordpress


  • 因為只是實驗, 所以上面的相關密碼就用簡單的方式


如果要更安全的方式可以考慮使用 docker secret



進行測試

首先在 Azure 上的網路安全性群組, 先開放 port 80 可以存取



接下來連線 VM 的對外 IP

就會進入 WordPress 的安裝畫面

語系選繁體中文 -- > 繼續




輸入相關資訊

點選 安裝WordPress




大功告成

點選 登入



使用剛剛建立的帳號密碼

就可以進行登入



接下來就可以進入後台轉寫文章, 進行設定



或是觀察自己的第一個 WordPress 了




另外也有看到 docker-compose 安裝方式, 先放在下面, 以後再說

docker-compose 安裝


在 minikube 上架設 Stateless Wordpress




又離 WordPress 進了一步

~ enjoy it



Reference