注意环境准备:
一台ansible节点:192.168.47.132,远程连接docker容器并实现操作
一台被测试节点:192.168.47.134,部署docker容器
提前准备ansible环境,ssh免密连接
1.被测节点创建docker镜像带ssh服务,并启动ssh容器
#1.创建dockerfile目录
mkdir -p /dockerfile/ssh
#2.编写Dockerfile文件
cat << EOF >> /dockerfile/ssh/Dockerfile
# 使用Ubuntu作为基础镜像
FROM ubuntu:latest
# 更新软件包列表并安装OpenSSH服务器
RUN apt-get update && apt-get install -y openssh-server
# 设置root密码(可选,但不建议这样做)
RUN echo 'root:your_password' | chpasswd
# SSH登录时不询问密码
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 设置SSH服务在Docker容器启动时自动运行
RUN mkdir /var/run/sshd
RUN echo "AuthorizedKeysFile %h/.ssh/authorized_keys" >> /etc/ssh/sshd_config
# 暴露SSH端口
EXPOSE 22
# 启动SSH服务
CMD ["/usr/sbin/sshd", "-D"]
EOF
#3.构建ssh-image镜像
docker build -t ssh-image /dockerfile/ssh/
#4.启动ssh容器
docker run -itd -p 2222:22 -p 880:80 -v /root/.ssh:/root/.ssh --name ssh ssh-image
#容器ssh端口22映射宿主机2222
#容器web端口80映射宿主机880 后续测试ansible在容器内安装nginx
#/root/.ssh:/root/.ssh 免密登录映射,ansible远程连接不需要配置密码参数
#5.查看容器ssh的状态,查看是否启动
docker ps
2.ansible节点配置测试远程连接docker容器
#1.ansible配置192.168.47.134节点容器ssh信息
cat << EOF >> /etc/ansible/hosts
node2_docker ansible_host=192.168.47.134 ansible_port=2222 ansible_user=root
EOF
#2.编写测试远程docker的yml文件
mkdir /ansible
cat << EOF >> /ansible/test_ssh.yml
- name: "测试ansible连接docker"
hosts: node2_docker
become: yes
tasks:
- name: "安装nginx"
apt:
name:
- nginx
- systemd
- systemctl
state: present
- name: Start Nginx service
service:
name: nginx # 服务的名称,这取决于你的系统和安装
state: started # 服务的状态,可以是 started, stopped, restarted, reloaded 等
enabled: yes # 是否在系统启动时自动启动服务
EOF
#3.ansible测试
ansible-playbook /ansible/test_ssh.yml
#4.执行ansible-playbook命令结果如下,无红色报错则正常
PLAY [测试ansible连接docker] *********************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [node2_docker]
TASK [安装nginx] *******************************************************************************************************************************************************************************
changed: [node2_docker]
TASK [Start Nginx service] *******************************************************************************************************************************************************************
changed: [node2_docker]
PLAY RECAP ***********************************************************************************************************************************************************************************
node2_docker : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
#5.浏览器访问测试页面
http://192.168.47.134:880/