Ansible SSH 管理容器
CentOS 7 基底的容器,同時安裝 sshd 與 ansible,可以當作 Ansible 控制節點,也可以當作被管理的測試目標節點。用來在單機上模擬多節點環境,練習或驗證 Playbook。
Dockerfile
FROM centos:7
RUN yum -y install \
openssh-server \
epel-release \
ansible
RUN yum clean all
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN /bin/echo 'root:root'|chpasswd
RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
CMD /usr/sbin/sshd -D
建置與執行
# 建置映像
docker build -t ansible-ssh:centos7 .
# 啟動三個節點,SSH port 交給 Docker 隨機對應
docker run -d -P --name node1 ansible-ssh:centos7
docker run -d -P --name node2 ansible-ssh:centos7
docker run -d -P --name node3 ansible-ssh:centos7
# 查看對應到的主機 port
docker port node1 22
把取得的 port 寫進 inventory 就能直接操作,可參考 Ansible 範例 裡的 host.cfg。
ansible -i host.cfg servers -m ping
注意事項
容器內 root 密碼固定為 root,且 pam_loginuid 被改成 optional 才能在容器裡正常 SSH 登入。這只適合本機實驗環境,不要用在任何對外服務上。 正式用途請改成金鑰登入並移除預設密碼。
相關資源
← 回到 DevOps