从零开始在 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

01.png

Windows上でのDockerのインストール

02.png

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
12.png

我将检查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: 《略》

广告
将在 10 秒后关闭
bannerAds