从零开始在 Windows10 上安装 Ansible(Ansible for Windows)
我整理了在Windows10上设置Ansible的步骤。
首先
我对Ansible产生了兴趣是因为我想要自动化构建和管理在本地WindowsServer环境中的部署。然而,尽管有关于在Windows上管理的案例,但我很难找到将Ansible本体放在Windows上的方法。我总结了一些我试过的方法。
下面的文章是关于使用Ansible远程管理Windows Server的第一步,以及添加Web网站到IIS的playbook样例。
Ansible运行环境
-
- Windows 10 Pro (バージョン1803)
-
- PowerShell 5.1
- ActiveDirectory ドメインに属する
在Windows主机上安装Ansible有两种主要方法:
1. 在Windows上安装Linux并使用Ansible。
2. 在Windows上使用Docker和LinuxOS镜像来安装Ansible。
这次选择在“2. Docker for Windows”的基础上设置Ansible的方法。
– Docker for Windows 18.06.1
这篇文章对我来说非常有参考价值。
“我尝试使用Docker for Windows和Ansible。”
在上面的文章中,提到了使用Amazon Linux,但这次我们将使用CentOS镜像。
设置步骤
启用Hyper-V
Windows上でのDockerのインストール
Docker for Windows Installer.exe的大小为512MB。
创建一个用于Ansible的Docker容器。
首先,在文本编辑器中创建一个名为”DockerFile”的文件。
根据前面提到的DockerFile,进行了适用于CentOS的定制。
FROM centos
MAINTAINER xxxxx@xxxxxxxxxxx.xx.xx
RUN yum -y install epel-release && yum clean all
RUN yum -y install python-pip && yum clean all
RUN yum -y reinstall glibc-common && \
pip install --upgrade pip && \
pip install ansible==2.6.4 && \
pip install pywinrm && \
yum clean all && \
mkdir /mydata
ENV LANG ja_JP.UTF-8
CMD ["/bin/bash"]
然后按管理员模式启动PowerShell,并执行docker login命令以通过docker pull进行初始登录。此时,关键是要输入注册时指定的用户名而不是电子邮件作为Username。
PS> docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username(xxxxx@xxxxx.xxx.xxx): 《メールアドレスではなく登録したUserNameを入力する》
Password:
Login Succeeded
我们进入刚才创建的DockerFile保存文件夹(在这里是「D:\Projects\SRE\Ansible」),来构建Docker镜像。
PS> cd D:\Projects\SRE\Ansible
PS> docker build -t my-ansible .
我将检查已创建的Docker镜像。
PS> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-ansible latest ea11980ca160 14 minutes ago 378MB
centos latest 5182e96772bf 5 weeks ago 200MB
docker4w/nsenter-dockerd latest cae870735e91 10 months ago 187kB
我要启动Docker容器,并在其中挂载一个可以从Docker内部访问的Windows文件夹。我将在这里创建一个名为”D:\Projects\SRE\Ansible\MyData”的文件夹,并将其挂载到Docker内部的”/mydata”目录下。
PS> docker run -dit -v D:\Projects\SRE\Ansible\MyData:/mydata my-ansible
我将检查Docker容器。
PS> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
899225e6b593 my-ansible "/bin/bash" About a minute ago Up About a minute sad_shannon
请连接到Docker容器。将CONTAINER ID作为参数进行指定。
PS> docker exec -it 899225e6b593 /bin/bash
一旦成功连接,PowerShell的命令提示符将变为Linux的Shell终端。
[root@899225e6b593 /]# ls
anaconda-post.log dev home lib64 mnt opt root sbin sys usr
bin etc lib media mydata proc run srv tmp var
我会移动到我自己的数据文件夹并创建文件。
[root@899225e6b593 /]# cd mydata/
[root@899225e6b593 mydata]# ls > test.txt
[root@899225e6b593 mydata]# ls
test.txt
在Windows上也可以确认到test.txt文件已经创建。
要退出Docker终端,请从Docker的命令行终端中退出。
[root@899225e6b593 mydata]# exit
PS>
停止和删除 Docker 容器映像。
当想重新开始时,以下是删除容器和镜像的步骤:
1. 从容器列表中获取CONTAINER ID
2. 停止容器
3. 删除容器
4. 查看镜像列表
5. 删除镜像
PS> docker ps -a ←コンテナの一覧からCONTAINER IDを取得
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc68aff37f7d my-ansible "/bin/bash" 3 days ago Up 3 days zen_meitner
PS> docker stop fc68aff37f7d ←コンテナを停止
fc68aff37f7d
PS> docker rm fc68aff37f7d ←コンテナを削除
fc68aff37f7d
PS> docker images ←イメージを一覧
REPOSITORY TAG IMAGE ID CREATED SIZE
my-ansible latest e9d3b75df4d3 3 days ago 378MB
centos latest 5182e96772bf 5 weeks ago 200MB
docker4w/nsenter-dockerd latest cae870735e91 10 months ago 187kB
PS> docker rmi e9d3b75df4d3 5182e96772bf cae870735e91 ←イメージを削除
Untagged: my-ansible:latest
Deleted: 《略》
Untagged: centos:latest
Deleted: 《略》
Untagged: docker4w/nsenter-dockerd:latest
Deleted: 《略》