ansibleで複数サーバーを操作する練習 ping-pong

dockerでsshdとpythonの入ったコンテナを複数作り、サクサクっとansibleでオーケストレーションする練習。

Dockerで2つのlinuxを準備

Dockerfile

sshd と pythonの入ったimage用のDockerfile

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN apt-get install -y python
RUN mkdir /var/run/sshd
RUN echo 'root:pass' | 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

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

build

Dockerfileのあるディレクトリで、タグ名 eg_sshdとしてビルド

docker build -t eg_sshd .

run

こんな感じで、test1, test2 を起動

docker run -d --rm -P --name test1 eg_sshd
docker run -d --rm -P --name test2 eg_sshd

AnsibleをAd-Hocで動かす

hostに設定

/etc/ansible/hosts にinventoryを設定。上で用意したdockerコンテナのipを並べる。

まずは、inspectコマンドでdockerコンテナのipをチェック

docker inspect test1
docker inspect test2

調べた、ipを/etc/ansible/hostsに書き込む。とりあえず、一番上でOK。今回は、172.17.0.1と172.17.0.2だったのでそれを。

172.17.0.1
172.17.0.2

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=root
ansible_ssh_pass=pass

ping で動作確認

ansible all -m ping

こんなのが帰って来ればOK。

172.17.0.2 | SUCCESS => {
     "changed": false, 
     "ping": "pong"
 }