在使用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以将模块运行到容器中)
谢谢。
答案 0 :(得分:1)
您传递给name:
块的docker_container:
可用于为各种目的寻址容器;您永远不需要十六进制容器ID。
容器内部的IP地址本质上是无用的,我将删除查找它的块。由于您在主机上发布了端口49154,因此可以通过{{ ansible_hostname }}:49154
访问该服务。