🐳
Ansibleによるプロビジョニングの動作確認をDockerで手軽にやる
Dockerコンテナ起動
$ docker run -it -p 22 ubuntu:16.04 bash
% apt-get update
% apt-get install -y openssh-server python
# sshからのパスワードでのrootログインを許可
% sed -i -e "s/PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config
% sed -i -e "s/#PasswordAuthentication yes/PasswordAuthentication yes/" /etc/ssh/sshd_config
% service ssh restart
# パスワードを設定
% passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
ctrl-p ctrl-q (デタッチ)
上記に加えて
sed -i -e "s/#PermitEmptyPasswords yes/PermitEmptyPasswords yes/" /etc/ssh/sshd_config
ってやっただけだとパスワードなしでsshログインできなかったので、やり方分かる人いたら教えてほしいです😅
インベントリファイルを準備
# コンテナに接続するためのポートを確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9eae7d0a68cc ubuntu:16.04 "bash" 6 minutes ago Up 6 minutes 0.0.0.0:32772->22/tcp nervous_minsky
# ./hosts
0.0.0.0:32772
$ ansible-playbook -i hosts -u root -k playbook.yml
SSH password:
注意点
apt-get install -y xxx-$(uname -r)
みたいにプロビジョン先のカーネルに応じてパッケージをインストールするタスクが含まれている場合は要注意。
Dockerコンテナ内では uname
してもホストのカーネル情報が返ってくるのでこういうタスクは正しく実行できない。
Discussion