用 Docker 练习 Ansible

本贴最后更新于 2246 天前,其中的信息可能已经天翻地覆

一、按照 docker-ce,具体方法百度 docke 的官方文档

二、 拉取 image,启动 container

  1. 取得冻仁事先建立好的 Docker image。

    $ docker pull chusiang/ansible-managed-node:ubuntu-14.04
    
    #### 使用者帐户 #####################
    #
    # |           | username | password |
    # |-----------|----------|----------|
    # | root user | root     | root     |
    # | sudo user | docker   | docker   |
    
    

chusiang/ansible-managed-node:ubuntu-14.04 镜像的 Dockerfile,点我查看,里面已预载了 OpenSSH server 和 Python。

  1. 建立并执行容器。

    $ docker run --name server1 -d -P chusiang/ansible-managed-node:ubuntu-14.04
    ecdf39055ba2a932fa8c76a75afdec1cd8f516285bee6f4e07c16c67f4009211
    
    
  2. 观看容器状态和 SSH 绑定的埠口 (Port)。

    $ docker ps
    CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS              NAMES
    ecdf39055ba2        chusiang/ansible-managed-node:ubuntu-14.04   "/usr/sbin/sshd -D"      20 hours ago        Up 17 seconds       0.0.0.0:32805->22/tcp    server1
    
    
  3. 进入容器。

    $ docker exec -it server1 bash
    
    
  4. 关闭容器。

    $ docker stop server1
    
    
  5. 启用容器。

    $ docker start server1
    
    
  6. 移除容器。

    $ docker rm server1
    
    # -f, --force: 强制移除,包含正在执行的容器。
    

怎么让 Ansible 操控用 Docker 开好的容器?

  1. 取得容器的 OpenSSH 设定:请特別留意 0.0.0.0:32805->22/tcp 的值。

    $ docker ps
    CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS              NAMES
    ecdf39055ba2        chusiang/ansible-managed-node:ubuntu-14.04   "/usr/sbin/sshd -D"      20 hours ago        Up 17 seconds       0.0.0.0:32805->22/tcp    server1
    
    
  2. 设定 ansible.cfg:將 remote_user 设为 docker

    $ vi ansible.cfg
    [defaults]
    
    hostfile = hosts
    remote_user = docker
    host_key_checking = False
    
    
  3. 设定 hosts

    $ vi hosts
    server1  ansible_ssh_host=127.0.0.1  ansible_ssh_port=32805 ansible_ssh_pass=docker
    
    [local]
    server1
    
    
    1. ansible_ssh_host:请设为本机的 IP。
    2. ansible_ssh_port:请设为 docker ps 时取得的 SSH port。
    3. ansible_ssh_pass:因没有连线用的 SSH 金钥,故直接使用密码的方式进行连线,建议只于练习环境使用该参数。

Hello World on Docker

当已上的设置都完成了,我们就可以在终端机里用 Docker 建立好的容器来练习 Ansible 了!

$ ansible all -m command -a 'echo Hello World on Docker.'
server1 | SUCCESS | rc=0 >>
Hello World on Docker.

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...