用docker搭建Asible測試環境
阿新 • • 發佈:2022-03-18
說明
宿主機需要安裝Docker和Docker-compose
建立3個容器:
主機名分別為host1、host2和ansible
host1和host2安裝python、openssh server
ansible安裝openssh server、openssh client、ansible
步驟
按如下目錄結構建立檔案
.
├── alpine
│ └── Dockerfile
├── ansible
│ └── Dockerfile
└── docker-compose.yml
alpine/Dockerfile內容為
FROM alpine:3.10
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade
RUN apk add --no-cache openssh-server tzdata python3 && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \ ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \ ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \ ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \ echo "root:root" | chpasswd EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
ansible/Dockerfile內容為
FROM alpine:3.10
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade
RUN apk add --no-cache openssh-server tzdata ansible openssh && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \ ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \ ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \ ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key RUN mkdir -p /etc/ansible && \ echo -e "[dev]\nhost1\nhost2" >/etc/ansible/hosts && \ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
docker-compose.yml內容為
version: "2.4" services: host1: build: alpine host2: build: alpine ansible: build: ansible
執行下面的命令構建映象並啟動服務:
docker-compose up -d
進入ansible容器
docker-compose exec ansible sh
執行下面命令,複製公鑰到遠端機器:
ssh-copy-id host1
ssh-copy-id host2
會提示輸入密碼,密碼是root
使用
我們使用ping命令測試一下:
ansible dev -m ping
輸出類似下面的資訊:
host1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3.7" }, "changed": false, "ping": "pong" } host2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3.7" }, "changed": false, "ping": "pong" }
轉載出處 有地方做了修改才正常使用