Ansible SSH 管理容器

CentOS 7 基底的容器,同時安裝 sshdansible,可以當作 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

本目錄檔案