目标主机没有更新完整的剧本中的细微变化

我的剧本是(除其他外)启动docker集装箱:

- name: Restart nginx container docker: name: nginx image: my-nginx state: started ports: - "{{ nginx_port }}:80" volumes: - "{{ host_socket }}:{{ container_socket }}" 

这是正确启动容器。 但是,如果我决定需要在另一个端口运行nginx ,并再次运行剧本,容器不会重新启动。 看起来,容器正在启动和运行,但是不能validation其余参数是否正确。

我在这里看到两个选项:

  1. 强制重新启动,每当我运行的剧本,没有条件问,所以我确保最新的configuration是活跃的。 我不喜欢这个,因为大部分时间参数不会改变。
  2. 强制更准确地检查所有参数,如果已经改变,重新启动容器。 我不确定有这样的select。

在检查容器的状态时,我怎么能告诉他更准确?

docker模块已被弃用,我认为它一定是它的问题之一。

你有没有尝试docker_container模块 ? 您将需要> 2.1.0但我认为这是值得一试。

看起来,容器正在启动和运行,但是不能validation其余参数是否正确。

是的,因为你指定的state: started ,这是明确的意思是:

“开始”断言匹配的容器都存在并且正在运行,但是如果任何configuration已经改变,则不采取任何行动。

你可能想reloaded

“重新加载”(在Ansible 1.9中添加)断言所有匹配的容器正在运行,并重新启动任何具有任何图像或configuration的过时。