三大雲平台工具容器升級小記 - 使用 openSUSE Leap 15.2 Container
OS: container with openSUSE Leap 15.2
上次升級是 2020/8/2 , 這次會來升級的原因是
- 升級 gcloud 版本 
- 升級 azure-cli 版本 
- 升級 aws cli 版本 
先整理結果
升級前
OS: openSUSE Leap 15.2
awscli: aws-cli/2.0.36 Python/3.7.3
gcloud: Google Cloud SDK 303.0.0
azure-cli: 2.9.14.
ansible: 2.9.11
升級後
OS: openSUSE Leap 15.2
awscli: aws-cli/2.1.1 Python/3.7.3
gcloud: Google Cloud SDK 318.0.0
azure-cli: 2.14.2
ansible: 2.10.3
AWS CLI v2 安裝文件
GCP Cloud SDK 版本
這次的做法還是會透過 docker build 指令來進行
- 我有比較過 docker build 以及使用現有的 docker image 修改後再使用 docker commit 建立的 image 大小還是很有差異的 
Dockerfile 的部分我是拿之前 openSUSE Leap 15.2 來修改
修改細節
- Update time 
- 修改 pip3 安裝 boto 與 boto3 
- Google SDK 版本還有下載的檔案路徑以及檔案名稱 
列出 diff 的結果給大家參考
> diff opensuseLeap152_ansible_20200802_Dockerfile opensuseLeap151_ansible_20200531_Dockerfile
6c6
< # update: 20200802
---
> # update: 20201114
12c12
< # Install python3-pip, upgrade pip, ansible[azure], boto
---
> # Install python3-pip, upgrade pip, ansible[azure], boto, boto3
16c16
< pip3 install boto
---
> pip3 install boto boto3
64c64
< # Install google cloud SDK 303.0.0
---
> # Install google cloud SDK 318.0.0
66,67c66,67
< RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-303.0.0-linux-x86_64.tar.gz && \
< tar zxvf google-cloud-sdk-303.0.0-linux-x86_64.tar.gz && \
---
> RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-318.0.0-linux-x86_64.tar.gz && \
> tar zxvf google-cloud-sdk-318.0.0-linux-x86_64.tar.gz && \
Dockerfile 內容如下
- 我檔案的名稱取名爲 opensuseLeap152_ansible_20201114_Dockerfile 
# openSUSE Leap 15.2 with ansible, azure-cli, aws cli, gcloud
FROM opensuse/leap:15.2
# Author
# MAINTAINER 已經棄用, 之後要使用 LABEL 方式
# update: 20201114
LABEL maintainer="sakana@cycu.org.tw"
# Set LANG for UTF-8 - for Chinese
ENV LANG C.UTF-8
# Install python3-pip, upgrade pip, ansible[azure], boto, boto3
RUN zypper install -y python3-pip && \
pip3 install --upgrade pip && \
pip3 install ansible[azure] && \
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
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 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 318.0.0
ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1
RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-318.0.0-linux-x86_64.tar.gz && \
tar zxvf google-cloud-sdk-318.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:20201114 -f ./opensuseLeap152_ansible_20201114_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:20201114 /bin/bash
測試結果 OK, 建立 tag
觀察資訊
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sakana/ansible_opensuse152 20201114 9f8d6b777cc9 10 minutes ago 1.82GB
opensuse/leap 15.2 da63484e1af5 4 days ago 106MB
sakana/ansible_opensuse152 latest d1bb9da2d2e1 3 months ago 1.66GB
建立 tag
> docker tag 9f8d6b777cc sakana/ansible_opensuse152:latest
登入 docker
> docker login
上傳 image
> docker push sakana/ansible_opensuse152:20201114
> 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
~ enjoy it
Reference:
- http://sakananote2.blogspot.com/2020/08/opensuse-leap-152-container.html 
- https://sakananote2.blogspot.com/2020/05/aws-cli-v2-with-opensuse-leap-151.html 
- http://sakananote2.blogspot.com/2020/01/python-3-with-opensuse-leap-151.html 
- http://sakananote2.blogspot.com/2019/07/with-opensuse-leap-15-container.html 
- http://sakananote2.blogspot.com/2019/05/ansible-azure-cli-awscli-gcloud-with.html 
- http://sakananote2.blogspot.com/2019/11/with-opensuse-leap-151-container.html 
 
 
沒有留言:
張貼留言