Teuthology docker 目标 hack (1/3)

loic

teuthology 运行 任务 测试 Ceph 集成在 目标 上的情况,这些目标可以是虚拟机或裸机。 容器 hack 添加了对 docker 容器的支持,作为一种替代方案。

... 正在运行任务 exec... 执行自定义命令... 正在角色 mon.a 主机 container002 上运行 sudo 'TESTDIR=/home/ubuntu/cephtest' bash '-c' '/bin/true' 正在运行 docker exec container002 bash /tmp/tmp/tmptJ7hxa 持续时间为 0.088931 秒 ...

使用此 hack 的 worker 监听 容器 tube

$ mkdir /tmp/a /tmp/logs $ ./virtualenv/bin/teuthology-worker \ -l /tmp/logs --archive-dir /tmp/a \ --tube container

一个无操作任务

machine_type: container os_type: ubuntu os_version: "14.04" roles

    • mon.a
    • osd.0
    • osd.1
    • client.0 任务
  • exec: mon.a: - /bin/true

通过 容器 tube 调度

./virtualenv/bin/teuthology-schedule --name foo \ --worker container --owner loic@dachary.org \ noop.yaml 任务已使用名称 foo 和 ID 29 调度 2014-10-29 14:28:28,415.415 警告:teuthology.report:未在 /home/loic/.teuthology.yaml 中设置 results_server;无法报告结果

该实现依赖于 docker 1.3 docker exec 命令。它被用作对 ssh 连接的替代。

... 2014-10-29 13:48:34,996.996 INFO:teuthology.lockstatus:lockstatus::get_status uri = https://:8080/nodes/container002/ 2014-10-29 13:48:35,009.009 INFO:teuthology.containers:sleeper_running 140380434393616 2014-10-29 13:48:35,032.032 INFO:teuthology.containers:running 'docker' 'run' '--rm=true' '--volume' '/tmp:/tmp/tmp' '--name' 'container002' 'ceph-ubuntu-14.04' 'bash' '-c' 'echo running ; sleep 1000000' 2014-10-29 13:48:36,132.132 INFO:teuthology.containers:run_sleeper: running

2014-10-29 13:48:36,133.133 INFO:teuthology.containers:sleeper_running 140380434393616 2014-10-29 13:48:36,133.133 INFO:teuthology.containers:start: container container002 started 2014-10-29 13:48:36,133.133 INFO:teuthology.lockstatus:lockstatus::get_status uri = https://:8080/nodes/container001/ 2014-10-29 13:48:36,149.149 INFO:teuthology.containers:sleeper_running 140380258955216 2014-10-29 13:48:36,169.169 INFO:teuthology.containers:running 'docker' 'run' '--rm=true' '--volume' '/tmp:/tmp/tmp' '--name' 'container001' 'ceph-ubuntu-14.04' 'bash' '-c' 'echo running ; sleep 1000000' 2014-10-29 13:48:37,244.244 INFO:teuthology.containers:run_sleeper: running

2014-10-29 13:48:37,244.244 INFO:teuthology.containers:sleeper_running 140380258955216 2014-10-29 13:48:37,245.245 INFO:teuthology.containers:start: container container001 started 2014-10-29 13:48:37,245.245 INFO:teuthology.task.internal:roles: - ['mon.a', 'osd.0'] 2014-10-29 13:48:37,245.245 INFO:teuthology.task.internal:roles: - ['osd.1', 'client.0'] 2014-10-29 13:48:37,245.245 INFO:teuthology.run_tasks:Running task internal.push_inventory... 2014-10-29 13:48:37,245.245 INFO:teuthology.run_tasks:Running task internal.serialize_remote_roles... 2014-10-29 13:48:37,247.247 INFO:teuthology.run_tasks:Running task internal.check_conflict... ... 2014-10-29 13:48:40,033.033 INFO:teuthology.containers:running rmdir '--' '/home/ubuntu/cephtest' 2014-10-29 13:48:40,034.034 INFO:teuthology.containers:running docker exec container002 bash /tmp/tmp/tmpxaD5xX 2014-10-29 13:48:40,145.145 INFO:teuthology.containers:completed ['docker', 'exec', u'container001', 'bash', '/tmp/tmp/tmpqhYczm'] on container001: 2014-10-29 13:48:40,145.145 INFO:teuthology.containers:completed ['docker', 'exec', u'container002', 'bash', '/tmp/tmp/tmpxaD5xX'] on container002: 2014-10-29 13:48:40,147.147 INFO:teuthology.run:Summary data: {duration: 0.0005440711975097656, failure_reason: need more than 0 values to unpack, owner: loic@dachary.org, status: fail, success: false}

2014-10-29 13:48:40,148.148 WARNING:teuthology.report:No results_server set in /home/loic/.teuthology.yaml; cannot report results 2014-10-29 13:48:40,149.149 INFO:teuthology.run:FAIL

这些容器已添加到 paddles 数据库,使用了新的 is_container 字段。

for id in 1 2 3 ; do sqlite3 dev.db "insert into nodes (id,name,machine_type,is_container,is_vm,locked,up) values ($id, 'container00$id', 'container', 1, 0, 0, 1);" done

它们没有预先配置,因为它们是按需创建的。由于 docker 提供了一个镜像仓库,因此不使用 downburst