Docker實現ansible的練習

一. 使用dockerfile創建支持ssh服務的centos7鏡像

注意:本文基礎都是在dockeransible都安裝好的情況下

  • 創建dockerfile目錄
[root@localhost /]# mkdir mydocker
[root@localhost /]# cd  mydocker

#創建啓動ssh服務的shell腳本
[root@localhost mydocker]# vim run.sh
#!/bin/bash
/usr/sbin/sshd -D

#創建ssh公鑰實現免密登錄
[root@localhost mydocker]# ssh-keygen -t rsa
[root@localhost mydocker]# cat /root/.ssh/id_rsa.pub > authorized_keys

# 創建Dockerfile空文件
[root@localhost mydocker]# vim  Dockerfile

#在mydocker路徑下應該有這三個文件
[root@localhost mydocker]# ls
authorized_keys  Dockerfile  run.sh

  • 編寫Dockerfile文件
[root@localhost mydocker]# vim Dockerfile

#設置繼承鏡像

FROM centos

#提供作者信息

MAINTAINER from xldwhj

#開始運行命令

RUN yum -y update

#安裝openssh-serverfuwu

RUN yum -y install openssh-server

#修改/etc/ssh/sshd_config

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

RUN mkdir -p /var/run/sshd

RUN mkdir -p /root/.ssh

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

#複製配置文件到相應位置,並賦予腳本可執行權限

ADD authorized_keys /root/.ssh/authorized_keys

ADD run.sh /run.sh

RUN chmod 755 /run.sh

#變更root密碼爲123123

RUN echo "root:123456"|chpasswd

#開放22端口

EXPOSE 22

#運行腳本,啓動sshd服務

CMD ["/run.sh"]
  • docker build構建鏡像
[root@localhost mydocker]# docker build -t ssh/centos .
Sending build context to Docker daemon  4.096kB
Step 1/15 : FROM centos
 ---> 0f3e07c0138f
Step 2/15 : MAINTAINER by liuguangshun ([email protected])
 ---> Using cache
 ---> 93b9680ef262
Step 3/15 : RUN yum -y update
 ---> Using cache
 ---> 7384fbe6821d
Step 4/15 : RUN yum -y install openssh-server
 ---> Using cache
 ---> c9725936d71b
Step 5/15 : RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
 ---> Using cache
 ---> 8fc8409955ca
Step 6/15 : RUN mkdir -p /var/run/sshd
 ---> Using cache
 ---> 47e8ddda1ad1
Step 7/15 : RUN mkdir -p /root/.ssh
 ---> Using cache
 ---> 2aee3b07ce2b
Step 8/15 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
 ---> Using cache
 ---> 53b36cea4e28
Step 9/15 : RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
 ---> Using cache
 ---> cfd4ebdc8788
Step 10/15 : ADD authorized_keys /root/.ssh/authorized_keys
 ---> Using cache
 ---> b6cd0bdd1bc5
Step 11/15 : ADD run.sh /run.sh
 ---> Using cache
 ---> cb9228a99fb7
Step 12/15 : RUN chmod 755 /run.sh
 ---> Using cache
 ---> 42ff75e5607a
Step 13/15 : RUN echo "root:123456"|chpasswd
 ---> Using cache
 ---> 596cc21ae7d6
Step 14/15 : EXPOSE 22
 ---> Using cache
 ---> d2595ca13c62
Step 15/15 : CMD ["/run.sh"]
 ---> Using cache
 ---> 6db3052632ab
Successfully built 6db3052632ab
Successfully tagged ssh/centos:latest

#檢查鏡像是否構建成功
[root@localhost mydocker]# docker images
ssh/centos    latest    6db3052632ab    3 hours ago     378MB

  • 使用鏡像創建容器

#--privileged  /usr/sbin/init 這兩參數可以讓在容器中使用systemctl命令
[root@localhost mydocker]# docker run --name ansible1 --privileged  -d ssh/centos  /usr/sbin/init

#查看創建的容器
[root@localhost mydocker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
16cebcbd5868        centos/ssh          "/usr/sbin/init"    3 hours ago         Up 3 hours          22/tcp              ansible1

二. Ansible連接被管理主機(創建的容器)

  • hosts 文件添加被管理機
vim /etc/ansible/hosts
添加:
[client]
172.17.0.2  #容器的IP
  • 測試ansible能否連接被管理主機
[root@localhost /]# ansible all -m ping
172.17.0.2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "changed": false, 
    "ping": "pong"
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章