自动化的任务。当我们同时使用二者的时候就会碰到一些尴尬的事情:Azure CLI 依赖的 python 版本为 3.x,而 Ansible 的主流版本还在依赖 python 2.x。如果我们要同时使用二者,就需要在环境中搞一些飞机。如果团队中的每个成员都需要使用这样的工具,那么每个人的环境中都需要这些飞机!下面是一些比较类似的问题:
- 获取并安装这些新的工具
- 文件
- 升级完善
- 分享给整个团队
文件:
文件的内容如下:
后执行下面的命令构建容器:
输出显示容器镜像构建成功,我们可以通过 azcli:latest 来引用新构建的容器镜像。那就让我们启动容器并执行 azure cli 命令:
提示我们先通过 az login 命令登录才能查看账号信息:
提示信息打开浏览器,输入验证码进行登录。在浏览器中登录完成后命令行上的登录过程也随之完成,然后重新执行 az account list 命令:
输出你的账号信息了。
解决 Azure CLI 的登录问题
登录的过程还是挺繁琐的,如果每次启动容器都需要执行登录操作你会怎么想呢?肯定是弱爆了!登录信息保存在 host 的文件中。以后启动容器时挂载这些登录信息就可以了。下面是具体的步骤。用户的家目录中创建 .azure 目录:
登录操作:
登录完成后,登录的信息被保存到了 /root/.azure 目录中:
退出当前的容器,执行下面的命令创建一个新的容器:
登录了!登录信息过期时间为两周,到时候你需要再次进行登录。
添加自定义的工作流
- 数量众多的虚机
- 名称等等
功能进行封装,从而简化具体的操作。下面我们举个简单的例子,就是把查询 ResourceGroup 和虚机的操作封装成 bash 中的函数。
文件:
文件的内容如下:
<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 如下:
CMD bash
函数:
自动化工作流了!
分享上面创建的容器化工作流。具体的做法大概有两种:
- 分享容器镜像
》。这里只简单的介绍一下 dockerhub 的用法。