使用Ansible docker_service模块将服务部署到群集

我正在尝试将Docker服务部署到swarm中,但总是以本地主机上运行的容器(我作为docker swarm manager使用的容器)而没有服务

这是我的设置:

我有3个节点的Docker(1.12.1)群,其中包括一个作为pipe理器运行的主机和两个全部运行在CentOS 7上的工作节点。在pipe理器节点(本地主机)上运行Ansible(v。2.1.1.0) swarm已经configuration并正在运行

Swarm: active NodeID: d9h5xa832ax7wzeq8q44fjld3 Is Manager: true ClusterID: 9cztoin3gy2ntbwehsmrkjuxi Managers: 1 Nodes: 3 Orchestration: Task History Retention Limit: 5 Raft: Snapshot Interval: 10000 Heartbeat Tick: 1 Election Tick: 3 Dispatcher: Heartbeat Period: 5 seconds CA Configuration: Expiry Duration: 3 months Node Address: 10.25.190.209 

从有这个代码的剧本开始

 - hosts: localhost name: Run JMeter test vars_files: - user.config.yml vars: execute_tpcds_test : "{{ run_tpcds_test }}" roles: - { role: run_jmeter, when: execute_tpcds_test is defined and execute_tpcds_test ==1 } 

哪个叫这个angular色:

 - name: Deploy tpcds_tpg service to swarm docker_service: project_name: tpcds-tpg definition: version: '2' services: run_tests: image: 'pbench/tpcds_tpg' volumes: - /opt/pbench/run_output/ command: ./run_jmeter.sh "{{jmeter_output_dir}}" register: output - debug: var=output 

当我运行ansible-playbook ./site.yml我最终得到一个正在运行的容器。 做docker ps -a显示

 [pdo@sdl02133 tpcds-tpg]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fef245b41365 pbench/tpcds_tpg "./run_jmeter.sh /opt" 21 seconds ago Up 20 seconds tpcdstpg_run_tests_1 

而做docker service ls显示没有服务运行,所以它看起来像docker_service部署我的形象作为本地容器​​,而不是作为服务群

所以我的假设是,如果我在swarmpipe理器的机器上有一个主动群体,并使用Ansible docker_service模块,那么它将自动意识到群体并将服务部署到它。 看起来像我的假设是错误的,我找不到任何文档,博客post等,这将暗示我该怎么做,我失踪。 Ansible高手请帮忙!

最后find答案。 基本上我在最后一段的假设是错误的。 最起码到现在。 结果是,docker_service只是docker撰写的一个包装,在写作的时候(非常不幸)并没有和docker swarm集成在一起。 根据这个支持线程 ,基本上我运气不错。如果你感兴趣的话,同样的线程给出一个可能的解决方法