20
“grifork” - fast task runner via ssh - @key_amb at the 40th Ginza.rb #ginzarb

grifork - fast propagative task runner -

Embed Size (px)

Citation preview

Page 1: grifork - fast propagative task runner -

“grifork”- fast task runner via ssh -

@key_ambat the 40th Ginza.rb #ginzarb

Page 2: grifork - fast propagative task runner -

Who am I ?

❏ @key_amb❏ Software Engineer

❏ Serverside, Web❏ https://github.com/key-amb❏ https://rubygems.org/profiles/key-amb

Page 3: grifork - fast propagative task runner -

Before “grifork” - “fireap”

❏ https://github.com/key-amb/fireap❏ Consul クラスタ上で動作する S3 非依存の pull 型デプロイ

ツール "fireap" を作った

Page 4: grifork - fast propagative task runner -

“fireap” in a nutshell

❏ O(log N) … N = node number❏ Propagative task runner on Consul Cluster

Page 5: grifork - fast propagative task runner -

Then, what about “grifork”

❏ O(log N) … N = node number❏ Propagative task runner via ssh❏ https://github.com/key-amb/grifork❏ Blog:

❏ ssh と rsync だけで Tree Deploy を実現する "grifork" を作った

Page 6: grifork - fast propagative task runner -

How “grifork” works?

Page 7: grifork - fast propagative task runner -

Concept of “Tree Deploy”

Page 8: grifork - fast propagative task runner -

Two modes to run “grifork”

1. “Standalone mode”○ Require grifork only on the task-running host

2. “Grifork mode”○ Require grifork on every node

Page 9: grifork - fast propagative task runner -

Standalone mode 1/3

Page 10: grifork - fast propagative task runner -

Standalone mode 2/3

Page 11: grifork - fast propagative task runner -

Standalone mode 3/3

Page 12: grifork - fast propagative task runner -

Grifork mode 1/3

Page 13: grifork - fast propagative task runner -

Grifork mode 2/3

Page 14: grifork - fast propagative task runner -

Grifork mode 3/3

Page 15: grifork - fast propagative task runner -

Quickstart

% gem install grifork% edit Griforkfile% grifork

Page 16: grifork - fast propagative task runner -

Configure by “Griforkfile”branches 4

#mode :standalone

log file: 'grifork.log'

hosts ['web1.internal', 'web2.internal', 'db1.internal', 'db2.internal', ...]

local do

rsync '/path/to/myapp/'

end

remote do

rsync_remote '/path/to/myapp/'

end

See examples for more info

Page 17: grifork - fast propagative task runner -

Changes in v0.2 ~ v0.5

❏ Released as a RubyGems❏ https://rubygems.org/gems/grifork

❏ Enable to configure Parallel, ssh and rsync options by Griforkfile

❏ Enable to configure tasks which runs at first in the job or at last

Page 18: grifork - fast propagative task runner -

Summary

❏ “grifork” is an easy way to speed up deployment

❏ Enjoy!

Page 19: grifork - fast propagative task runner -

Thank you!