パスワード接続のssh bastion を Ansibleで。
サーバー準備
Dockerで踏み台とその先のサーバーを立てます
DockerFile
FROM centos:centos7
RUN yum -y update && yum -y install openssh-server
RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN echo 'root:pass' | chpasswd
RUN ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
docker-compose.yml
version: '3'
services:
bastion:
image: eg_sshd
web:
image: eg_sshd
サーバー起動
docker-compose up -d
AnsibleのHosts
/etc/ansible/hosts にこんな感じで、踏み台とwebのip, ssh情報を。webの方は、ipではなく、bastionの中からservice名称で接続。
[bastion]
172.18.0.2
[webserver]
web
[bastion:vars]
ansible_ssh_port=22
ansible_ssh_user=root
ansible_ssh_pass=pass
[webserver:vars]
ansible_ssh_common_args='-o ProxyCommand="sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p -q root@172.18.0.2"'
ansible_ssh_user=root
ansible_ssh_pass=pass
動作確認
ansible all -m ping