如何从随后的Yaml获取容器ID和IP?

时间:2018-07-18 11:08:46

标签: docker ansible

在使用ansible下载和启动服务时,是否有更好的方法来获取IP和容器ID?

在启动IP之前我既不知道ID也不是IP ...所以我从寄存器变量中获得了这些信息...

当前,我基于该方法:

  - name: start docker service 
    service: 
      name: docker1
      state: started
  - name: load and start the container we wanna use 
    docker_container:
      name: test
      image: rastasheep/ubuntu-sshd
      state: started
      ports:
       - "49154:22"
  - name : get container ID
    shell: docker ps | grep -i ubuntu-sshd | awk '{print $1}'
    register : container_ID
  - name : get container IP
    shell: docker inspect --format '{''{ .NetworkSettings.IPAddress }''}' container_ID
    register : container_IP
  - name: Wait maximum of 300 seconds for ports to be available 
    wait_for:
      host: 0.0.0.0
      port: 49154
      state: started
  - name: force docker to accept sshkey
    shell: sshpass -p root scp /root/.ssh/id_rsa.pub root@container_IP:/tmp/

这真的是个好方法吗? 如果没有,我该怎么办? (在此步骤之后,获取IP和ID以将模块运行到容器中)

谢谢。

1 个答案:

答案 0 :(得分:1)

您传递给name:块的docker_container:可用于为各种目的寻址容器;您永远不需要十六进制容器ID。

容器内部的IP地址本质上是无用的,我将删除查找它的块。由于您在主机上发布了端口49154,因此可以通过{{ ansible_hostname }}:49154访问该服务。