星期日, 5月 30, 2021

使用 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


星期六, 5月 22, 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



星期三, 5月 19, 2021

使用 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


  • 上面那個 2267291 請換成自己的 HN 帳號


點選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


星期五, 5月 14, 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: