使用Ansible和Docker来搭建Ansible的工作环境

准备Docker方面

创建 Docker 镜像

在这个例子中,我们按照以下条件来创建图像。

    • pythonが使える ( Ansble の実行環境ため )

 

    • sshで直接接続ができる

 

    • ssh ユーザー: root

ssh パスワード: screencast

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# FOR Ansible
RUN apt-get update && apt-get -y install python

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
$ docker build -t eg_sshd .

将SSH服务放入Docker容器中(参考 Docker文档)

运行Docker容器

$ docker run -d -p 30000:22 --name test_sshd eg_sshd

执行Ansible

创建文件

使用 Docker 构建环境来创建手头的库存文件。(连接的 IP 取决于 Docker 的配置环境。)

[example]
127.0.0.1

[example:vars]
ansible_ssh_user=root
ansible_ssh_port=30000

注意: Ansible 2.0 及更高版本推荐使用简短的写法,如 ansible_user。

設置環境變數

请在初次访问时禁用问题(在known_inventory中记录指纹的过程)。

$ export ANSIBLE_HOST_KEY_CHECKING=False

执行命令 (Zhí

尝试在Docker容器中创建一个适当的文件。

$ ansible -i inventory example -m shell -a 'touch example.txt' --ask-pass

-i inventory

インベントリファイルの指定

-m shell

「ansible の shell モジュールを実行する」という指定 (省略できる)

-a ‘touch example.txt’

モジュールに渡す引数 ( この例の場合は、実行するコマンドの内容 )

–ask-pass

パスワードを手入力するためのフラグ

执行命令时会要求输入密码,请输入您设置的密码(屏幕录像)。

确认

能够看到文件在Docker容器中被创建。

$ docker exec -it test_sshd /bin/bash
root@91625cd5dda0:/# ls ~/
example.txt

如果想避免被要求输入密码。

在主机上安装sshpass。

(适用于 Mac 的情况下)

brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

(安装SSHPass)

在手边通过SSH访问容器并创建一个指纹进行预留。

ssh root@127.0.0.1 -p 30000
image.png

回答“是”并退出。

在存货文件中写入密码

也许不太推荐。(如果要做得好的话,可以考虑换锁之类的措施。)

[example]
127.0.0.1

[example:vars]
ansible_ssh_user=root
ansible_ssh_port=30000
+ ansible_ssh_pass=screencast

执行Ansible命令

ansible -i inventory example -m shell -a 'touch example.txt'

环境

    • ansible 1.9.6

 

    • Docker version 17.03.1-ce, build c6d412e

 

    Mac OS Sierra 10.12.4

Docker容器集线器

    yumainaura/ansible-ssh – Docker Hub

相关

    Ansible | ssh のキャッシュを無効にする – Qiita

请对以下内容进行汉语表达:

参考

    ansible – to use the ‘ssh’ connection type with passwords, you must install the sshpass program” – Stack Overflow

招募聊天室成员

如果您有任何问题、烦恼或需要咨询的事情,请使用LINE开放聊天进行交流。

 

推特

 

广告
将在 10 秒后关闭
bannerAds