容器化的 DevOps 工作流

前端之家收集整理的这篇文章主要介绍了容器化的 DevOps 工作流前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

自动化的任务。当我们同时使用二者的时候就会碰到一些尴尬的事情:Azure CLI 依赖的 python 版本为 3.x,而 Ansible 的主流版本还在依赖 python 2.x。如果我们要同时使用二者,就需要在环境中搞一些飞机。如果团队中的每个成员都需要使用这样的工具,那么每个人的环境中都需要这些飞机!下面是一些比较类似的问题:

  • 获取并安装这些新的工具

  • 文件
  • 升级完善
  • 分享给整个团队

文件:

$ Dockerfile

文件的内容如下:

bash

后执行下面的命令构建容器:

$ docker build -t azcli .

输出显示容器镜像构建成功,我们可以通过 azcli:latest 来引用新构建的容器镜像。那就让我们启动容器并执行 azure cli 命令:

$ docker run -- -it azcli:latest

bash-# az account list

提示我们先通过 az login 命令登录才能查看账号信息:

bash-# az

提示信息打开浏览器,输入验证码进行登录。在浏览器中登录完成后命令行上的登录过程也随之完成,然后重新执行 az account list 命令:

输出你的账号信息了。

解决 Azure CLI 的登录问题

登录的过程还是挺繁琐的,如果每次启动容器都需要执行登录操作你会怎么想呢?肯定是弱爆了!登录信息保存在 host 的文件中。以后启动容器时挂载这些登录信息就可以了。下面是具体的步骤。用户的家目录中创建 .azure 目录:

$ ${HOME}/.zaure

$ docker run -- -it -- type=bind,source=${HOME}/.azure,target=/root/.azure azcli

登录操作:

# az

登录完成后,登录的信息被保存到了 /root/.azure 目录中:

退出当前的容器,执行下面的命令创建一个新的容器:

$ docker run -- -it -- type=bind,target=/root/.azure azcli

登录了!登录信息过期时间为两周,到时候你需要再次进行登录

添加自定义的工作流

  • 数量众多的虚机
  • 名称等等

功能进行封装,从而简化具体的操作。下面我们举个简单的例子,就是把查询 ResourceGroup 和虚机的操作封装成 bash 中的函数

$ scripts

文件:

$ scripts/search.

文件的内容如下:

#!/bin/search <span style="color: #0000ff">for<span style="color: #000000"> Resource Group by name

<span style="color: #0000ff">function search-<span style="color: #000000">group () {
query=$<span style="color: #800080">1<span style="color: #000000">
az group list --query <span style="color: #800000">"<span style="color: #800000">[?name | contains(@,'$query')].{ResourceGroup:name}<span style="color: #800000">" -<span style="color: #000000">o table
}

search <span style="color: #0000ff">for<span style="color: #000000"> VM by name

<span style="color: #0000ff">function search-<span style="color: #000000">vms () {
query=$<span style="color: #800080">1<span style="color: #000000">
az vm list --query <span style="color: #800000">"<span style="color: #800000">[?name | contains(@,'$query')].{ResourceGroup:resourceGroup,Name:name}<span style="color: #800000">" -<span style="color: #000000">o table
}

函数,分别是通过名称查询 ResourceGroup 和虚机(要了解相关的查询语法,请参考 az 命令)。函数导入到 bash,编辑 Dockerfile 如下:

echo -e "\ ; for f in /scripts/*> ~/.bashrc

CMD bash

$ docker build -t azcli .

函数:

$ docker run -- -it -- type=bind,target=/root/-# search--# search-vms testdesktop

自动化工作流了!

分享上面创建的容器化工作流。具体的做法大概有两种:

  • 分享容器镜像

》。这里只简单的介绍一下 dockerhub 的用法。

$ docker tag azcli ljfpower/azcli

$ docker push ljfpower/azcli:latest

$ docker pull ljfpower/azcli

猜你在找的Docker相关文章