加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:54:47 所属栏目:安全 来源:网络整理
导读:我正在尝试将一个Docker服务部署到swarm中但最终总是在我的localhost上运行容器(我用作docker swarm管理器的那个)并且没有服务 这是我的设置: 我有3个节点Docker(v.1.12.2)swarm,其中包括一个作为管理器运行的主机和两个全部运行在CentOS 7上的工作节点.在

我正在尝试将一个Docker服务部署到swarm中但最终总是在我的localhost上运行容器(我用作docker swarm管理器的那个)并且没有服务

这是我的设置:

我有3个节点Docker(v.1.12.2)swarm,其中包括一个作为管理器运行的主机和两个全部运行在CentOS 7上的工作节点.在管理器节点(localhost)上运行Ansible(v.2.1.1.0)playbook和swarm已经配置并且正在运行

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 }

哪个叫这个角色:

- 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服务ls显示没有服务正在运行,所以看起来像docker_service将我的图像部署为本地容器??而不是作为群上的服务

所以我的假设是如果我在机器上有一个活跃的swarm是一个swarm管理器并且我使用Ansible docker_service模块,那么它将自动知道swarm并将服务部署到它.看起来我的假设是错误的,我找不到任何文件,博客文章等会暗示我该做什么和我缺少什么. Ansible专家请帮忙!

最佳答案
终于找到了答案.基本上我在最后一段中的假设是错误的.至少现在(是.事实证明,ansible的docker_service只是docker compose的一个包装,而且(非常不幸的是)在编写时并没有与docker swarm集成.根据this support thread,我基本上没有运气
如果你有兴趣,同样的线程gives a possible workaround

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读