我的剧本是(除其他事项外)启动码头集装箱:
- name: Restart nginx container
docker:
name: nginx
image: my-nginx
state: started
ports:
- "{{ nginx_port }}:80"
volumes:
- "{{ host_socket }}:{{ container_socket }}"
这是正确启动容器。但是,如果我决定需要在另一个端口运行nginx
,并再次运行该剧本,则不会重新启动容器。似乎ansible
对容器启动和运行感到满意,但不验证其余参数是否正确。
我在这里看到两个选项:
ansible
更准确并检查所有参数,如果 已更改,则重新启动容器。我不确定是否有这样的选择。如何在检查容器状态时告诉ansible
更准确?
答案 0 :(得分:1)
不推荐使用docker模块,我认为它必须是它的问题之一。
你试过docker_container module了吗?你需要ansible> 2.1.0但我认为值得一试。
答案 1 :(得分:0)
似乎ansible对容器启动和运行感到满意,但不会验证其余参数是否正确。
是的,因为您指定了state: started
,这明确意味着:
“started”断言匹配的容器都存在且正在运行,但如果任何配置发生更改,则不执行任何操作。
您可能需要reloaded
代替:
“reloaded”(在Ansible 1.9中添加)断言所有匹配的容器都在运行,并重新启动任何有任何图像或配置过期的容器。