说明:
1)在VM上装了一个4核8G的centos7.5系统
2)docker版本为 18.06.0-ce
docker的安装不再讲述
1、创建一个带有含有ssh的镜像,通过编写Dockerfile
```
FROM centos:latest MAINTAINER fei #mount volume VOLUME ["/root/docker/ansible-demo/volume2”] ################## BEGIN INSTALLATION ###################### #install EPEL RUN rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && yum install -y yum-priorities
RUN yum install -y sudo RUN yum install -y net-tools openssh-clients openssh-server ansible vim ################## END INSTALLATION ######################
RUN sed -i ’s/UsePAM yes/UsePAM no/g’ /etc/ssh/sshd_config
RUN echo “root:devilf"|chpasswd RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN mkdir /var/run/sshd EXPOSE 22 #监听22端口,外界可以访问 ENTRYPOINT ["/usr/sbin/sshd”,"-D”] #entrypoint表示默认情况下容器运行的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 这里贴一下截图,可能粘贴赋值的会有些问题,以作参考 <p id="VpYCHPU"> <img class="alignnone size-full wp-image-464 " src="https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9.png" alt="" srcset="https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9.png 891w, https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9-150x65.png 150w, https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9-300x131.png 300w, https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9-768x335.png 768w" sizes="(max-width: 891px) 100vw, 891px" /> </p> 2、开始构建镜像 <div class="en-code"> |
---|
docker build –no-cache -t fei/centos:ssh_ansible .
1 2 3 4 5 6 7 8 9 10 11 | <p> 镜像名为: fei/centos:ssh_ansible </p> 3、启动容器(需要开启特权模式,否则会报错:Failed to get D-Bus connection: Operation not permitted) |
---|
docker run -itd -p 20021:22 –privileged=true –name node1 fei/centos:ssh_ansible docker run -itd -p 20022:22 –privileged=true –name node2 fei/centos:ssh_ansible … … docker run -itd -p 20020:22 –privileged=true –name ansible_server fei/centos:ssh_ansible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 4、配置ansible主机清单,并建立互信关系 在这之前需要先进入到容器中,我们通过ssh的方式进入 修改ansible.cfg文件,将默认的hosts文件改为一个目录,修改为: <div class="en-code"> |
---|
inventory = /etc/ansible/conf.d
1 2 3 4 5 6 7 | 设置清单 |
---|
[nodes] 172.17.0.2 172.17.0.3 172.17.0.4 172.17.0.5
1 2 3 4 5 6 7 | 生成密钥 <div class="en-code"> |
---|
ssh-keygen
1 2 3 4 5 6 7 8 9 10 | 下发密钥 <div class="en-code"> ``` ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.17.0.2 |
---|
5、测试
1 | ansible nodes -m ping |
---|
注意:
查看容器IP的方法:
1 | docker inspect --format '{{ .NetworkSettings.IPAddress }}' a7431673ece4 |
---|
停止容器:
1 | docker stop container_id |
---|
删除容器:
这里先说下如何构建一个带有ssh的镜像,然后通过这个镜像,我们起动了几个容器,通过这几个容器我们来练习ansible的使用方法,非常的简单和方便,一台虚机就可以完成ansible的练习,后面还会继续学习ansible和docker的学习。