星期六, 10月 22, 2022

三大雲平台工具容器升級小記 - gcloud 406.0 / AWS Cli 2.8.5 / ansible 2.11.12

 三大雲平台工具容器升級小記 - gcloud 406.0 / AWS Cli 2.8.5 / ansible 2.11.12


OS: container with openSUSE Leap 15.4



上次升級是 2022/4 , 這次會來升級的原因是 



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

  • Ansible: 2.13.3 / python 3.9.13 




先整理結果


升級前

OS: openSUSE Leap 15.3

awscli:  aws-cli/2.5.6 Python/3.9.11

gcloud: Google Cloud SDK 381.0.0

azure-cli: 2.35.0 (目前有 bug)

ansible: 2.11.10


升級後

OS: openSUSE Leap 15.4

awscli:  aws-cli/2.8.5 Python/3.9.11

gcloud: Google Cloud SDK 406.0.0

azure-cli: 2.35.0 (目前有 bug)

ansible: 2.11.12


AWS CLI v2 安裝文件


GCP Cloud SDK 版本


另外執行 ansible --version 也會收到之後 ansible 需要 python 3.8 以上的告警, 訊息如下


[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 3.6.15 (default, Sep 23

 2021, 15:41:43) [GCC]. This feature will be removed from ansible-core in 

version 2.12. Deprecation warnings can be disabled by setting 

deprecation_warnings=False in ansible.cfg.


  • 這個部份應該是因為 openSUSE Leap 15.x 還是基於 SLES 15, 所以 python 的策略是還在 3.6, 只能先這樣


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

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


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


修改細節


  • Update time

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



列出 diff 的結果給大家參考


> diff  opensuseLeap153_ansible_20220417_Dockerfile opensuseLeap154_ansible_20221022_Dockerfile 


1,2c1,2

< # openSUSE Leap 15.3 with ansible, azure-cli, aws cli, gcloud

< FROM opensuse/leap:15.3

---

> # openSUSE Leap 15.4 with ansible, azure-cli, aws cli, gcloud

> FROM opensuse/leap:15.4

6c6

< # update time: 20220417

---

> # update time: 20221022

78,79c78,79

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

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

---

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

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





Dockerfile 內容如下




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

FROM opensuse/leap:15.4


# Author

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

# update time: 20221022

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 refresh && \

  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 381.0.0

ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1

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

  tar zxvf google-cloud-sdk-406.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_opensuse154:20221022  -f  ./opensuseLeap154_ansible_20221022_Dockerfile   .


  • 使用 -f 指定 Dockerfile 名稱

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

  • 這邊有個網路問題自己小記一下, 不知為何, 在家中如果是用固定 IP, 可能是有走 IPv6, 在執行 docker build 就有連線問題, 切成浮動 IP 或是先 ping 外部 就沒有相關問題, 日後再研究



測試 container image


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


測試結果 OK, 建立  tag


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

  • 目前 az 指令可能會暫時透過 Azure cloud shell, ansible with Azure 目前有問題, 後面要再測試


觀察資訊

> docker  images


REPOSITORY                           TAG            IMAGE ID          CREATED          SIZE

sakana/ansible_opensuse154   20221022   d7eaacc18701   10 minutes ago   3.67GB

opensuse/leap                15.4       b59a33a9e95e   10 days ago      112MB




建立 tag 

> docker  tag  d7eaacc18701  sakana/ansible_opensuse154:latest


登入 docker

> docker  login


上傳 image

> docker  push  sakana/ansible_opensuse154:20221022


> docker  push  sakana/ansible_opensuse154:latest


完工, 以後使用就用


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



額外小記: 更新 blog 就會順道檢查 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 內的 client_id 以及 secret



~ enjoy it


Reference:

星期一, 10月 10, 2022

openSUSE Leap 15.4 安裝小記

openSUSE Leap 15.4 安裝小記


openSUSE Leap 15.3 Lifetime 到 2022/11 


過了一年又到升級的時候 :)


安裝前處理

  • 使用 imagewriter 建立 openSUSE 安裝USB

  • 整理 /home/sakana 目錄

    • 使用 du -h --max-depth=1 /home/sakana 檢查

    • 清掉不要的檔案, 特別是 ~/.cache , ~/.config 內兩大瀏覽器內有佔很大空間的 cache ( 這次懶得刪就沒有這樣做 )

    • 因為有很多相關的 config 在個人家目錄內, 所以先把舊的 openSUSE Leap 15.3 的 /home 目錄, 切換到隨身碟的目錄中

      • 使用# tar    cvf   home.tar  /home 進行打包到隨身碟 ( 不要使用 .gz 方式, 會比較快速 )

      • 如果剛剛的光碟  ISO 放在下載目錄, 記得刪除來節省空間

    • 新機器再使用 tar 指令還原回來

      • 這次先在 console F1 以 root 使用者, 

        • 使用 tar 指令解壓縮 home.tar 到隨身碟目錄 

        • 刪除 /home/sakana 目錄, 將解壓縮的檔案直接移動過去


這次也是使用 USB 來進行安裝


== 安裝過程小記==


這次建立的時候我還是選擇 GNOME 桌面


磁碟區分割的部分, 使用引導的方式安裝, 因為一直出線開機分割區的警告, 所以我就用引導模式

  • 刪除所有分割區 

  • 建立獨立分割區 XFS

  • 根目錄取消 Btrfs 快照


===============


Network Manager:


openSUSE Leap 15.4 預設為 Network Manager



Google Chrome:106

https://www.google.com/intl/zh-TW/chrome/browser/ 


還是會有驗證性問題, 但是功能沒有差異

為了進行google 登入,先使用 Google 驗證App,  後面來處理yubikey


home 資料回復:


因為有很多相關的 config 在個人家目錄內, 所以先把舊的 openSUSE Leap 15.0 的 /home 目錄, 使用# tar    cvf   home.tar  /home 進行打包到隨身碟 ( 不要使用 .gz 方式, 會比較快速 )

新機器再使用 tar 指令還原回來

  • 這次先在 console F1 以 root 使用者, 

    • 使用 tar 指令解壓縮 home.tar 到隨身碟目錄 

    • 刪除 /home/sakana 目錄, 將解壓縮的檔案直接移動過去



Notes

  • Ifconfig 預設沒有安裝, 要使用 ip  address show


關閉GNOME裡面的搜尋功能預設關閉 (點選右上角的設定按鈕), 因為我覺得用不到



中文輸入法問題:


這次預設是 ibus 輸入法



取消 USB 為安裝來源

# yast2  repositories 



Snapd:


因有些軟體可能會透過 snap 來安裝


安裝方式紀錄 

# zypper  addrepo  --refresh  https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.4  snappy


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


# zypper  dup  --from  snappy


# zypper  install  snapd


Additional rpm output:

Please reboot, logout/login or source /etc/profile to have /snap/bin added to PATH.

On a Tumbleweed and Leap 15.3+ systems you need to run: systemctl enable snapd.apparmor.service


可以重開機, 登出登入, 讓 路徑變數內有 /snap/bin 這個路徑

  • 在 X 11 下就是開一個新的終端機切換為 root, 檢查 $PATH

  • 建議使用重開機的方式


# systemctl  enable  snapd


# systemctl  start  snapd


# systemctl  enable  snapd.apparmor


# systemctl  start  snapd.apparmor


如果安裝應用程式, 可能重開機才會找的到


Freemind:


因為 Freemind 在 Leap 15.4  只有社群維護套件 

  • 之前是用 snap 安裝, 但是這次有問題, 

  • 所以先用社群維護版本來安裝 https://software.opensuse.org/package/freemind

    • 我用 home:beyerle:IAC 那個版本, 然後把他 repo 裡面的 SLE-15-SP1 ~ SLE-15-SP4 停用了

.mm 的檔案指定用 freemind  開啟

以後應該要考慮其他的方案


新增 Packman 套件庫:


使用 #yast2  repositories 加入社群版本的Packman 


#yast2  repositories


  • 除了 Packman 順便加入 nVidia 套件庫


Firefox Sync:

登入 Firefox Sync, 會處理之前有下載的 Plugin



flash-player:

# zypper   install   flash-player


Telegram desktop:


最後的解法是 使用 Web 的方式來使用 Telegram

  • https://webk.telegram.org/

  • 軟體 (  Flatpak  ) 安裝可以輸入中文 - 但是版本太舊會被 Telegram 說會被停用

  • snap 版本 / 下載 telegram 的 .xz 解壓縮, 不能輸入中文

    • 在 ~/.local/share/applications 目錄下找出 telegram-desktop.desktop 設定檔, 加入 QT_IM_MODULE=gin 也無效



播放器:


Codecs 的部分參考網路上找到的


# zypper  install  opi


# opi codecs


  • 這邊會裝 ffmpeg-4 以及一堆套件

  • 之後就可以使用播放器看 .mp4



Skype:


使用網頁版的 Skype 不另外安裝



GNOME Extension:


參考調校小記


主要是裝 chrome 內的 GNOME Shell integration


然後到 https://extensions.gnome.org/

選想裝的 Extension, 調爲 on 就好

裝了

  • NetSpeed

  • RunCat

  • Show External IP

  • Tray Icons: Reloaded


過期

  • TopIcons Plus (現在都在右上角, 所以就不需要)


.7z 支援:

# zypper  install  p7zip


imagewriter:

# zypper  install  imagewriter

用來製作開機 USB


rdesktop 安裝與測試:

#zypper  install  freerdp


執行方式

#xfreerdp  -g  1280x1024  -u administrator  HOST_IP


修改 LS_OPTIONS 變數

# vi   /etc/profile.d/ls.bash

把 root 的 LS_OPTIONS 的 -A 移除


修改 HISTSIZE 變數

# vi   /etc/profile

修改 HISTSIZE 的筆數



ansible 安裝:


目前版本 2.9.27

#zypper  install  ansible


變更主機名稱:


#yast2 lan



Dropbox 158.4.4564版 :


openSUSE Leap 15.4 預設不支援 dropbox

參考官方網站上面斷頭的安裝方式來安裝


> cd  ~  && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -


接下來,請從新建立的 .dropbox-dist 資料夾執行 Dropbox 精靈。


> ~/.dropbox-dist/dropboxd


順便安裝 Nautilus 相關套件

# zypper  install  nautilus-extension-dropbox



Filezilla 安裝:


#zypper  install  filezilla


Brave 安裝:


# rpm  --import  https://brave-browser-rpm-release.s3.brave.com/brave-core.asc


# zypper  addrepo  --refresh  https://brave-browser-rpm-release.s3.brave.com/x86_64/ brave-browser


# zypper  install  brave-browser


Azure-cli 安裝:


版本: 2.38.0

參考 


匯入 rpm key

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


新增 Azure CLI 的 repo

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


安裝 azure-cli 套件

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


使用互動的方式登入 azure ( 現在已經不需要輸入機器碼, 直接驗證帳號就可以  )

> az  login


AWS Cli 安裝:


版本: 2.8.2



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


# unzip  awscliv2.zip


# ./aws/install


# aws --version


aws-cli/2.8.2 Python/3.9.11 Linux/5.14.21-150400.22-default exe/x86_64.opensuse-leap.15 prompt/off


將補齊的指令 寫到或是修改到個人家目錄的 .bashrc 內

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



Google Cloud SDK ( gcloud )安裝:


參考 http://sakananote2.blogspot.com/2019/04/gsutil-google-cloud-storage-in-opensuse.html

安裝 gcloud

  • 但是目前實務上是使用容器的方式來執行


使用一般使用者安裝


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


> tar  zxvf  google-cloud-sdk-405.0.0-linux-x86_64.tar.gz


> ./google-cloud-sdk/install.sh


透過 gcloud 安裝 kubectl


> gcloud  components  install  kubectl


確認版本

> kubectl  version  --client


Visual Studio Core 相關 :


安裝 git

# zypper  install  git


參考 http://sakananote2.blogspot.com/2019/01/visual-studio-code-with-opensuse-leap-15.html


安裝 vscode


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


# sh  -c  ' echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc"  >  /etc/zypp/repos.d/vscode.repo '


# zypper  refresh


# zypper  install  code


安裝 vscode extension ( 這次沒有作, 因為將舊的 /home 還原回來, 另外目前 vscode 也有同步機制 )

  • AWS Toolkit for Visual Studio Code

  • Bracket Pair Colorizer

  • Code Time

  • Git Graph

  • GitHub Pull Requests

  • GitLens

  • Kubernetes

  • Python

  • REST Client

  • GitHub Pull Requests and Issues



Podman 安裝:


參考官方網頁


# zypper  install  podman


看起來目前的階段 docker 與 podman 還是要並存 - 生態系支援與 rootless podman 相關考量


Docker 安裝:


目前版本 20.10.17

#zypper  install  docker


將使用者 sakana  加入 docker  群組 

# usermod -a -G docker sakana


#systemctl  start  docker

#systemctl  enable   docker


PPPoE 設定:


目前光世代有配一個固定 IP

參考 http://sakananote2.blogspot.com/2021/05/nmcli-network-manager-pppoe-ip.html


設定 PPPoE 以及固定 IP



這個版本沒有安裝的, 以後要安裝就看之前的筆記



這樣又可以再戰一年 :p


~ enjoy it


參考