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"
}