์ํฉ์ด ๊ธ๋ฐํ๊ณ Fabric์ ์์ ์คํ์ ์์ฒด "ํ์ฌ" ๋๊ตฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถํ ํ์ฌ SSH ๊ธฐ๋ฅ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ/์ฐธ์กฐํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ง๊ธ ๋น์ฅ Fab-as-runner๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋์ ssh
๋ฐ PyCrypto
๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
์์ ์คํ๊ณผ SSH ๊ฐ์ ๋ถํ ํ๋ ๊ฒฝ์ฐ "Fabric"์ "SSH + ์ ๋ฌ๋ ๋๊ตฌ์ ๋ํ ์ข ์์ฑ"์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ณด๋ค ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ ๋๋ค(์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ๋ฐ ์ ๋ฐ์ ์ธ ์ ์ฉ์ฑ ๋ชจ๋).
์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๋ํด ๋งํ์๋ฉด, 2.0 ์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ์ฅ๋ฒฝ(์ต์ํ Fabric์ ์ ์ค์น ์ข ์์ฑ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์)์์ ์ํํ๋ ๊ฒ์ด _๋_ ๋_ ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด 2.0์ ํ์ ํ์ง๋ง 1.6 ๋๋ 1.7๋ ํ์ด๋ฐ์ด ๋ ์ข๋ค๋ฉด ์ถฉ๋ถํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
๋ถ๋ช ํ ์ด ์๋ก์ด ๋๊ตฌ๋ ๋ค์์ ์ํํฉ๋๋ค.
:์ผ์ดํฌ:
๋ฌผ๋ก ์ฌ์ฉ ์ฌ๋ก์ ์ ๋ง๋ ์์ ํ ์๋ก์ด ๋๊ตฌ๋ ํญ์ ์ ํ ์ฌํญ์ ๋๋ค.
์ค๋ช ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
@kennethreitz : ์ด๊ฒ์ Fabric์ ์ ๋ฐ์ ๋ํ ๊ธฐ์กด ์๊ตฌ/๊ธฐ๋ฅ ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ก์ด "๋ฌผ๊ฑด"์ด ๋ ๊ฒ์ ๋๋ค. ์์ด๋์ด๋ ์ค์น, ๊ฐ๋ฐ ์ผ์ ๋ฑ ์์ฒด ์ํฐํฐ์ด์ง๋ง ์ฌ์ ํ Fabric ๊ฐ๋ฐ์/์ปค๋ฎค๋ํฐ์ ์ํด ์ ์ด๋๋ ๊ฒ์ ๋๋ค.
์์ด๋์ด:
์ฃ์กํฉ๋๋ค ์ด๋ฆ์ด ๋น ๋ฆ ๋๋ค :(
๋ํ "kirk"์ ๊ฐ์ ๊ฒ(์บกํด ์ปคํฌ์์์ ๊ฐ์ด).
๋๋ ์์ ์คํ๊ณผ ๊ด๋ จ๋ ํจ๋ธ๋ฆญ๊ณผ ๊ด๋ จ๋ ๊ฒ์ ์๊ฐํ๋ ค๊ณ ํ์ง๋ง ์์ + ํจ๋ธ๋ฆญ๊ณผ ๊ด๋ จ์ด์๋ ๊ฒ์ ์๊ฐํ ์ ์์ต๋๋ค.
ํ์ง๋ง Loom๋ ๋์์ง ์์ ์ด๋ฆ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๋์ ์ด๋ฆ ๋ธ๋ ์ธ์คํ ๋ฐ.
runner
executor
go
go
๋ผ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐaway
๋๋ fuck_yourself
๋๋ bother_somebody_else
์ ๊ฐ์ ์ด๋ฆฌ์์ ์์
์ด๋ฆ์ด ๋ง์ ์ ์์ต๋๋ค.weaver
๊ฐ์ฌํฉ๋๋ค. OS X์ ์ฌ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ ๊ณตํ๋ Oxford American Writer's thesaurus!
run
execute
go
create
(์ make
)fabricate
(๋๋ฌด ๊ธธ์ด์ fab
์ ํผ๋ํ๊ธฐ ์ฝ์ต๋๋ค)fab
(์ฆ, ์ด ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ฆ์ด ๋ค๋ฅด๊ฒ ์ง์ ๋์์ง๋ง ์ฌ์ ํ fab
๋ฐ์ด๋๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์์ต๋๋ค. ๋ ๋ค ์์คํ
์ Fabric์ด ์๋ ๊ฒฝ์ฐ ํ๋๊ฐ ์ฐ์ ์ ์ฉ๋ฉ๋๊น? ๋ฉ์ฒญํ ์๊ฐ์ฒ๋ผ ๋ณด์
๋๋ค.)generate
produce
fashion
build
devise
shape
setup
weave
์ค๋๋ ์ต๊ณ ์ ๋ธ๋ ์ธ์คํ ๋ฐ ํํ๊ฐ ์๋๋๋ค. ํด์๋ฅผ ์ํด.
@dstufft Loom์ ๊ด์ฐฎ์ ์ด๋ฆ์ด๊ณ CEO๋ ๋์ฒด๋ก ๊ด์ฐฎ์ ๊ฐ๋ ์ ๋๋ค. ์ฃผ์ ๋ฌธ์ ๋ ์ข์ ๋ฐ์ด๋๋ฆฌ ์ด๋ฆ์ ์ฐพ๋ ๊ฒ์ ๋๋ค. ๋์ฌ๊ฐ ์ ์๋ํ๋ ค๋ฉด ๊ผญ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ ์ค ์ด๋ ๊ฒ์ด ํจ๊ณผ๊ฐ ์์์ง ํ์ ํ ์ ์์ต๋๋ค.
๋ณด์ค: ๋ฌผ๊ฑด์ ์คํํฉ๋๋ค.
ํจ๊ป ํ๋ค. Make์ ๋น์ทํ์ง๋ง Python์ฉ์ ๋๋ค.
๊ฒฝ์์ง.
๋๋ ๊ทธ๊ฒ์ด ์์ ์ ์ค์ฌ์ผ๋ก ํ๋ค๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค. ํ ..
@kennethreitz ํน์ ๋ด์ ์ง ์์ฃผ๋ฏผ๊ณผ์ ์ ์ฌ์ ์ธ ํผ๋์ ์ ์ธํ๊ณ ๋ณด์ค๋ฅผ ์ข์ํฉ๋๋ค(ํฌ์ด ์๋๋ผ ๋ํ์์ ๋์ ๋ฃธ๋ฉ์ดํธ ๊ฒฝํ)
@dstufft ์๊ฒ ๋งํ๋ฏ์ด ๋ฐ์ด๋๋ฆฌ ์ด๋ฆ์ ํ์คํ ์ฌ๊ธฐ์์ ์ค์ํ๋ฏ๋ก ๊ฐ๋ฅํ๋ฉด ์ด ์ด๋ฆ๋ ์ผ๋์ ๋์ญ์์ค. project-name-as-binary๊ฐ ๋ค์ ๋ฉ์ฒญํ๊ฒ ๋ค๋ฆฌ๋ฉด ํ๋ฅญํ ํ๋ก์ ํธ ์ด๋ฆ์ ๋์์ด ๋์ง ์์ต๋๋ค. ;)
ํ๋ ๋ ํฅ๋ฏธ ๋กญ์ต๋๋ค. ๋น์ ์ ์ํด ๋น์ ์ ์์ ์ ์ํํฉ๋๋ค. "๋ฉ์ดํฌ"์ ์ ์ฌํฉ๋๋ค.
์ง์ฌ ๋. ์ฐ๋ฆฌ๋ ๋ฌด์์๋ก ์๊ตญ์์ผ๋ก ๋ค๋ฆฌ๋ ์ง์ฌ ์ด๋ฆ์ ์ ํํ ์ ์์ต๋๋ค.
maid clean
, maid release
, maid test
. ์ข์์.
๋ด (๋ฌดํํ, ์์ฐ์ค๋ฝ๊ฒ) ๋จ์ฑ์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ ์ธ์, maid
๋ ๋น๋ก ๊ทธ๊ฒ์ด ๋์ฌ ํจํด์ ๋ง์ง ์๋๋ผ๋ ๊ฝค ์ข์ต๋๋ค. (์ฆ, ๋ ๋์ ๋น๋์ฌ ์ด์ง๋ฒ ์ด๋ฆ ์ค ํ๋์
๋๋ค.) (ํธ์ง: ์ง์ฌ๋ ๋ฌด์์ _do_ํฉ๋๊น? Butle?)
๋ง์ผ์ ๋๋นํด์ ์ด๋ฆ์ ์ชผ๊ทธ๋ฆฌ๊ณ ์์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ง๊ธ๊น์ง ๋ง์ด ์ข์ํ๋ค.
Boss๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ์ผ๋ก ์ด๋ฏธ FWIW๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
2012๋ 2์ 21์ผ ํ์์ผ ์คํ 8์ 38๋ถ์ Jeff Forcier๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋ด (๋ฌดํํ, ์์ฐ์ค๋ฝ๊ฒ) ๋จ์ฑ์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ ์ธ์,
maid
๋ ๋น๋ก ๊ทธ๊ฒ์ด ๋์ฌ ํจํด์ ๋ง์ง ์๋๋ผ๋ ๊ฝค ์ข์ต๋๋ค. (์ฆ, ๋ ๋์ ๋น๋์ฌ ๋ฐ์ด๋๋ฆฌ ์ด๋ฆ ์ค ํ๋์ ๋๋ค.)์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/fabric/fabric/issues/565#issuecomment -4095609
intern
๋ํ ๋งค์ฐ ํ๋ฅญํ ์ ํ์
๋๋ค.
@dstufft ๊ทธ๋์, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ํ ์ข์ ๋ฐ์ด๋๋ฆฌ ์ด๋ฆ์ ์๊ฐํ ์ ์์์ต๋๋ค. boss docs
๋ ์ ๋ง์ง ์์ต๋๋ค.
@kennethreitz ๋ IRC์์ bake
๋ฅผ ์ธ๊ธํ๋๋ฐ, ์ด๋ make/rake ํ
๋ง์ ์ ํฉํ๊ณ ํธ์ถ ๋์ฌ๋ก๋ ์ ํฉํฉ๋๋ค(์: $ bake docs
, ์ฃผ์ ์ ์ผ๋ก๋ ์ฝ๊ฐ ๋ค๋ฅด์ง๋ง ๋๋์ด ' d Chef๋ ๋ญ๊ฐ์ ๋ ์ ๋ง์ต๋๋ค.
ํธ์ง: ๋ํ deliver
. ์ด๊ฒ์ ๋ํ ๋์ ์ด๊ธฐ ๋ฐ์์ ๋ค์ ๊ธ์ ์ ์ด์์ต๋๋ค( $ deliver build
$ deliver docs
). ๊ทธ๋ฌ๋ ๋๋ฌด ์ด๋ฆฌ์์ง ์์ _ํ๋ฅญํ_ ํ๋ก์ ํธ ์ด๋ฆ์ด ์์ผ๋ฉฐ ์กฐ๊ธ ๊น๋๋ค.
$ invoke taskname
(ํ๋ก์ ํธ ์ด๋ฆ: invoker
, invoked
, ???)
ํธ์ถ๋จ.
Invoked ๋ฐ invoke docs
invoke tests
invoke publish
๋ฑ์ ์ ๋ง ์ข์ํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ๋ "Invoke"์ผ ์ ์์ต๋๋ค. ๋ฐ์ด๋๋ฆฌ์ ํ๋ก์ ํธ์ ๋ค๋ฅธ ์ด๋ฆ์ด ํ์ํฉ๋๊น?
๋๋ 'invoked'๊ฐ 'invoke'๋ณด๋ค ์กฐ๊ธ ๋ ํผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ์ง๋ง ๋ ์ค ํ๋๊ฐ ์๋ํ ์ ์์ต๋๋ค.
์ด๋ฆ์ ๋ค๋ฅผ ํ์๊ฐ ์์ต๋๋ค. ์๋, ๋ช ๋ฒ์ด๋ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋๋ ๊ธฐ์ฐจ๋ก ๊ฑธ์ด๊ฐ๋ ๋์ (์ง๊ธ ๊ธฐ์ฐจ์์ :P go go ์ค๋งํธํฐ ํ
๋๋ง!) ํ๋ ์๊ฐ์ ํ์ต๋๋ค. ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด ๋ชจ๋ ๊ฒ์ ๊ฑด๋๋ฐ๊ณ ๋จ์ํ fab
+ fabfile.py
์ ์ฒด๋ฅผ ์ด๋ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด "์๋ก์ด" ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฒ์
๋๋ค(๊ทธ๋ฆฌ๊ณ fabricator
๋ผ๊ณ ๋ถ๋ฆ
๋๋ค).
์ฆ, ๋ ๋ฆฝ ์คํํ lib์ ๋ํด ํ๋์ ํธ์ถ ๊ฐ๋ฅ ํญ๋ชฉ์ ๊ฐ๊ณ SSH ์ฌ์ฉ ์ค์ ์ ๋ํด ๋ค๋ฅธ ํธ์ถ ๊ฐ๋ฅ ํญ๋ชฉ์ ๊ฐ๋ ๊ฒ์ด ๋ฐ๋์ ๋ฐ์ํด์ผ ํ๋ ๊ฒ์ ์๋๋ฉฐ ์ํด๊ฐ ๋ ์๋ ์์ต๋๋ค.
ํ๋ฌ์ค:
๋นผ๊ธฐ:
pip install fabricator
๋ ์ฐ๋ฆฌ์๊ฒ fab
๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ ํ๋๊ทธ ์ธํธ๊ฐ ์์ต๋๋ค.pip install fabric
ํ๋ฉด ๊ฐ์๊ธฐ ๋์ผํ fab
๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์ถ๊ฐ Fabric CLI ํ๋๊ทธ๋ฅผ ํ์ํด์ผ ํฉ๋๋ค.๋ช ๋ น์ค ํด๋ผ์ด์ธํธ๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค. ์ฝ๊ฐ ์ด๋ป๊ฒ ํ๋ฌ๊ทธ์ธ ์ง์ ์ ์ ๋ช ๋ น์ค ๋๊ตฌ์์ ํํํ ์ ์๋์ง ์ดํด๋ณด์ธ์.
์ถ๊ฐ ํ์ฅ์ฑ์ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๊ฐ๋๋ผ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฆ ํผ๋์ด ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๊ฐ์ธ์ ์ธ ์ผ์ด์ง๋ง fab test
invoke test
invoke docs
์ ๋ชจ์์ด ๋ ์ข์ต๋๋ค.
๋ค๋ฅธ ๋ฐ์ด๋๋ฆฌ๊ฐ ์งํ๋๋ ํ, ํต์ฌ ๋ฐ์ด๋๋ฆฌ(ํธ์ถ)๊ฐ ๋ชจ๋ ํจ๋ธ๋ฆญ ์์
์ ์ํํ ์ ์๋๋ก ํ์ฅ ๊ฐ๋ฅํ์ง ํ์ธํ ๋ค์ fab์์ invoke์ ๋์ผํ ์ง์
์ ์ ํธ์ถํ๋๋ก ํฉ๋๋ค(์ฆ, ์ค์ fab/invoke ๋ฐ์ด๋๋ฆฌ main()
(๋๋ ๋ฌด์์ด๋ )์ ๋งค์ฐ ์ต์ํ์ ํธ์ถ์๊ฐ ๋ ๊ฒ์
๋๋ค.
fabfiles์ "Invokefiles" ๋ชจ๋ 2.0 ์ด์ ๋ฒ์ ์ธ invoke + fabric ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ค๋ฉด? ์ง์๋๊ณ 2.0์์๋ Invoke ํ์ผ๋ง ์ฌ์ฉํ์๊ฒ ์ต๋๊น?
๋ฐ๋ผ์ ๋ณธ์ง์ ์ผ๋ก ๋๋ ๊ทธ๊ฒ์ ๋ณ๊ฐ์ "ํ์คํฌ ๋ฌ๋"์ "์๊ฒฉ/ssh ํญ๋ชฉ"์ผ๋ก ๋ถํ ํ๊ณ , 1.x์ ๋ํด ํธํ ์ฌ์ ๋ฃ๊ณ , 2.x์ ๋ํด ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋ํด +1์ ๋๋ค. ์ด ๋ถํ ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ ์ข๊ฒ ๋ง๋ค๊ณ ์์ ์คํ๊ธฐ๊ฐ ์ ๋ง ๋ฉ์ง ํ์ฅ์ฑ์ ์ง์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ์๋ง๋ ์ฝ๊ฒ ์์กดํ๊ณ ์คํํ ์ ์๋ ์ธ๋ถ ์์ ๋ฑ). ๊ทธ๋ฆฌ๊ณ remote/ssh๋ ๋ ์ ์ ์ฑ ์์ ๊ฐ์ง์ผ๋ก์จ ๋ ์ง์คํ ์ ์๋ ์ด์ ์ด ์์ต๋๋ค.
์ด์จ๋ ๋ด ์ผํธ.
๋๋ ๋ค๋ฅธ ๋ฐฉ์์ ์ซ์ดํ์ง ์๋๋ค๋ ์ ์ ๋ถ๋ช ํ ํด์ผ ํฉ๋๋ค. ์ด ํ ๋ก ์ด ์งํ๋๊ณ ์์ด ๊ธฐ์ฉ๋๋ค. :)
@dstufft ๋ง์ ์๊ฐ์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ฑฐ์ ๋ชจ๋ ๋ถ๋ถ์ ๋์ํฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ๊ฐ ์คํ ์ด๋ผ๋ ๊ฒ์ ๋ํด ๋น์ ์ด ์ณ์ต๋๋ค. ๊ทธ๊ฒ์ด Fabric์ด ์ง๊ธ ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ์ ๊ด์ฌ์ฌ๋ ์ค๋ก์ง ํ๋๊ณผ ์ฌ์ฉ์ ํผ๋์ ๊ดํ ๊ฒ์ ๋๋ค.
@dcolish CLI ํ์ฅ์ ํ ์ ์๋ค๋ ์๋ฏธ๋ ์๋์๊ณ , ์ฝ๋ ํ์คํ ์กฐ์ฌํ๊ธฐ์ ์ข์ ์ ํ ๊ธฐ์ ์ ๋๋ค.
"invoke"๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ผ ์ด๋ฆ์ด invocations(.py)
๊ฐ ๋ ์ ์์ต๋๊น? ์ด๋ฆฌ์์/ํ
๋งํํฌ ์ธก๋ฉด์ ๋ํ ํฐ์น์ด์ง๋ง ๋ฌธ๋ฒ์ ์ผ๋ก ์ ํฉํ๋ฉฐ invokefile.py
๋ ๋์๊ฒ ์ฝ๊ฐ ์ด์ํ๊ฒ ๋๊ปด์ง๋๋ค. ๋๋ Rake ์ปจ๋ฒค์
๊ฒฝ๋ก๋ก ์ด๋ํ์ฌ tasks(.py)
๋ง ์ฌ์ฉํ์ญ์์ค.
๋ถ๋ถ์ ์ผ๋ก๋ ๊ด๋ จ์ด ์์ง๋ง ์์ผ๋ก์ ๋ชจ๋/ํด๋ ์ธก๋ฉด์๋ ํ์คํ ์ง์คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Just Python์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ์ง์๋์ง๋ง ํํ ๋ฆฌ์ผ ์๋ฃ ๋ฐ ๋ฌธ์ ์ธก๋ฉด์์ invocations/__init__.py
๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
tasks.py
์(๋ฅผ) ์ข์ํฉ๋๋ค. invocations.py
๋ ์
๋ ฅํ๊ธฐ๊ฐ ์ด์ํฉ๋๋ค.
๊ธ์, ๋น์ ์ด ๊ทธ๊ฒ์ ์์ฃผ ์
๋ ฅํด์ผ ํ ๊ฒ ๊ฐ์ง๋ ์์ต๋๋ค. ์? ;) ๊ทธ๋ฌ๋ ์, tasks/
๋๋ tasks.py
๋ ์ ์ธ๊ณ์ ์ผ๋ก ์กฐ๊ธ ๋ ๋ช
ํํฉ๋๋ค.
์์ ํ์ผ.py
๋น์ invoke
task(.py|/), ์ด์จ๋ ๋ฌธ๊ตฌ๊ฐ ์ข์ต๋๋ค :)
์, " tasks
which you invoke
" ์ค์ ์ ์๋ ๋ฐฉ์์ ๋ํ ์์ด ์ค๋ช
๊ณผ ํค์๋๋ฅผ ๋ฌถ๋ ๊ด์ ์์ ๋งค์ฐ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค. ๋ปํ๋ค, ํ๋ฆด, ์๋ง ๋ฑ์ด ์๋ค.
@kennethreitz ์ ๋ ๋ช ๋ช ๊ท์น์ผ๋ก XYZFile์ ์ด๋ ฌํ ํฌ์ด ๋ ์ ์ด ์์ต๋๋ค. ํนํ ์์ฆ์๋ ๋จ์ผ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ Fab 1.x ์ธ๋ถ์์ ๊ท์น์ ๊ณ์ํ ํ์๊ฐ ์์ต๋๋ค. :)
๋๋ ์ด๊ฒ์ด ์ผ์ด๋๋ ๊ฒ์ ์์ ํ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ ๋ ํญ์ Fabric์ ๋ก์ปฌ ๊ธฐ๋ฐ์ด๋ ์๊ฒฉ ๊ธฐ๋ฐ์ด๋ ๊ด๊ณ์์ด Rake/Make์ ๊ฐ๊น์ด ํ๋ก์ ํธ์ "์์ "์ ์ ์ฅํ๋ ์ผ๋ฐ์ ์ธ Pythonic ๋ฐฉ์์ผ๋ก ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ก์ด ์ฌ๋์ ์๊ฐํ๋ ค ํ ๋ ๋ช๋ช ์ฌ๋๋ค์ ์ด ๊ด์ ์ ๋ํด ํผ๋์ค๋ฌ์ํ๊ณ ๋ฐฐํฌ ๋๊ตฌ๋ก๋ง ๋ณด์์ต๋๋ค.
๋ชจ๋/ํด๋ ์ธก๋ฉด์ ๋ ๋ฒ์งธ๋ก, ๋๋กญ์ธ ๊ฐ๋ฅํ ์ผ๋ฐ ์์ ์ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค. ์๋ก์ด ์คํ์ผ์ ์์ ์ ํ์คํ ๊ทธ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ์ต๋๋ค.
@askedrelic ์, ๋ ๊ฐ์ง๋ฅผ ํ๋๋ก ํตํฉํ๋ ๊ฒ์ ๋ถํํ๋ ํญ์ ์ฝ๊ฐ ํผ๋์ค๋ฝ์ต๋๋ค.
๊ด๋ จ ์์: ๋ช ์ฃผ ์ ์ ๊ทธ์ ๋ด๊ฐ ์ด ๋ฌธ์ ์ ๋ํด ๋ ผ์ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ด ์ค๋ ๋์ @tswicegood ์ ํธ์ถํ๊ณ ๊ทธ๊ฐ ๋ฌด๊ฒ๋ฅผ ๋ฌ๊ณ ์ถ์ดํ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์์ ๊ฐ์ด ๋์ํ์ง ์์ ๊ถ๋ฆฌ๊ฐ ์์ต๋๋ค ;)
๋ด๊ฐ ์ํ๋์ด? :-)
fabfile
๋์ tasks
๋ชจ๋๋ก ์ด๋ํ๋ ์์ด๋์ด๊ฐ ์ข์ต๋๋ค. ๋ ์๋ฏธ๊ฐ ์๊ณ ๋ ์งง์ต๋๋ค. ์ผ๋จ ์ ๋ Armstrong ๋ด๋ถ์์ fab test
๋ฅผ ์คํํ๊ธฐ ์ํด ์ ์ฒด dep ์คํ์ ์ค์นํด์ผ ํ๋ ๊ฒ์ ์ซ์ดํฉ๋๋ค. ๊ทธ๋์ ์ ๊ฐ ํฐ ์ฅ์ ์ด ๋์๋ค๋ ์ ์ ์ถ์ถํ๊ธฐ ์ํด ํ ์ ์๋ ๊ฒ์ ๋ฌด์์ด๋ ํ ์ ์์ต๋๋ค.
๋ช ๋ช ์ ๊ดํด์๋ ์ธ๋ถ ์คํ ํ์ผ์ ์ค์นํ๋ ๊ฒ์์ ์ฌ๋๋ค์ด ์ด๊ฒ์ ๋งจ ์๋์ ์ถ๊ฐํ๋๋ก ํ๋ ๊ฒ์ผ๋ก ์ ํํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
if __name__ == "__main__":
<some_mod>.main()
๊ทธ๋ฐ ๋ค์ Python์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์คํ ํ์ผ์ ๊ด์ฐฎ์ต๋๋ค. ํ์ํ์ง ์ฌ๋ถ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
FWIW, ๋๋ flunky
๋ผ๋ ํจํค์ง ์์ฑ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ช ์ฃผ ์ ์ ํ๋ก์ ํธ๋ฅผ ์์ํ์ต๋๋ค. ํด๋น ํ
๋ง๋ฅผ ๊ณ ์ํ๋ฉด์ footman
๋๋ lacky
๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค(ํ์๋ Ruby ํ๋ก์ ํธ์ธ lackie
์ ์ถฉ๋ํจ). ๋ ๋ค๋ฅธ ํ๋๋ girl/man friday ์์์ ๊ฐ์ด Friday ์
๋๋ค. GitHub/PyPI/Homebrew ํ
์คํธ๋ฅผ ํต๊ณผํ์ต๋๋ค. ์ฌ์ค ์ง๊ธ ์๊ฐํด๋ณด๋ฉด ๊ทธ๊ฒ ์ฒซ ๋ฒ์งธ ์ ํ์ด ๋ ๊ฒ ๊ฐ์์.
๋ถ์์ ์ผ๋ก, @niran ์ด ๋ช ๋ฐฑํ์ง๋ง ๋์ฐํ ์ฃผ์ ๊ฐ๋ฅผ ํฌํจํ๋๋ก README๋ฅผ ์ ๋ฐ์ดํธํ๋ PR์ ์ ์ถํ ๋๊น์ง ์ผ๋ง๋ ๊ฑธ๋ฆด์ง ๊ถ๊ธํฉ๋๋ค.
๋ด ์๊ฐ์ $PATH
"binary"(ํนํ ํ์ฌ _not_ ์ค์ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋๋ผ (invoked|fabric).main()
๋ฅผ ํธ์ถํ๋ setuptools ์์ฑ ์คํ
)๊ฐ ๊ฐ์ฅ ์ฌ์ฉ์ ์นํ์ ์
๋๋ค. , ๊ทธ๋ฆฌ๊ณ ์์
๋ชจ๋ ๋ด์์ ์๋ ์์ฑ๋๋๋ก ํด๋น ์คํ
์ ๋ด์ฉ์ ์ด๋ํ๋ ๊ฒ์ ๋ํ ์ด์ ์ ๋ณด์ง ๋ชปํ์ต๋๋ค(์ค์ ๋ก ๋ง์ ๋จ์ ์ด ์์).
๊ทธ๋ฆฌ๊ณ ์, ์ด๊ฒ์ ์์ ์ SSH/๋คํธ์ํฌ/์ํธํ deps ์์ด๋ ์์ ์ ์ํํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋๋๋ ๊ฒ์ ๋๋ค. :)
๋๋ ์คํ ํ์ผ์ ๋ํด @bitprophet ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ๊ทธ๊ฒ์ ์คํ์ ํจ์ฌ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์์ ์ ๊ฐ์ธ ํ๋ก์ ํธ์์ invoke
/ fab
์ด์ธ์ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ด๊ฒ์ ์คํ
์ผ ๋ฟ์ด๋ฏ๋ก ์ฝ๊ฒ ์์ ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ finalname.__main__.main
์์ ์ฝ๊ฒ ์ด ์ ์์ต๋๋ค. , ์ด ๊ฒฝ์ฐ ์ํ๋ ๊ฒฝ์ฐ python -m finalname
๋ ๊ฐ๋ฅํฉ๋๋ค.
+1.
๊ฑฐ๊ธฐ์ ์์ด๋์ด๋ฅผ ๋์ง๋ ๊ฒ๋ง์ผ๋ก๋ ๋ ํธ๋ฆฌํ ๊ฒ ๊ฐ์์. FWIW, ์ฌ์ฉํ๋ ค๋ฉด PyPI์ ๊ธ์์ผ์ ๋ฑ๋กํ์ต๋๋ค.
@bitprophet ์ฃ์กํฉ๋๋ค. ์ง์ ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ๊ณ์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ฝ์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ํ๋ก ํธ์๋๋ฅผ ๋ง๋ค๊ณ ์ด๋ฆ์ fab์ผ๋ก ์ ์งํ๊ธฐ ์ํด ๋ด ๋ฐฉ์๋๋ก ํฌํํ์ต๋๋ค.
์์ด๋์ด๋ ํ๋ฅญํฉ๋๋ค, ์ ๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค :)
๊ธ์์ผ์ ๋๋ฌด ๊ท์ฌ์ด ํธ์ ์ํ์ง๋ง ๋๋ ๋์ค ๋ฌธํ ์ฐธ์กฐ๋ฅผ ์ข์ํฉ๋๋ค. ๊ทธ ๋ ธ๋๊ฐ ๋๋ฌด ์ข์์! :ํธ๋กคํ์ด์ค:
์ง๊ธ์ ํจํค์ง/ํ๋ก์ ํธ์ ๋ฐ์ด๋๋ฆฌ ์ด๋ฆ์ผ๋ก invoke
๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒ์
๋๋ค. ์์! Invoker ๋๋ Invoked๋ ์ ์์ ๋ํ ๋ค๋ฅธ ๊ฐ๋ฅ์ฑ(์ฆ, invoke
๋ฐ์ด๋๋ฆฌ ์ฌ์ฉ)์ด์ง๋ง ์ง์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ํํ์ง ์์ ํ๋นํ ์ด์ ๋ฅผ ์๊ฐํ ์ ์์์ต๋๋ค.
์ด ์ด๋ฆ์ ๊ฐ์ฅ ํฐ ๋จ์ ์ ์ผ๋ฐ์ ์ด๋ผ๋ ์ ์ ๋๋ค. ํ์ง๋ง ์ด๋ ์ ๊ฐ ์ธ์ํ๊ฑฐ๋ ์์ฑํ ๋ชจ๋ ํ๋ก์ ํธ์ ๋ฌธ์ ์ด๋ฉฐ ์ด ๊ฒฝ์ฐ์๋ ๋ ๊ตฌ์ฒด์ ์ธ ์ต์ ์ด ์ ์๊ฒ ์ณ๋ค๊ณ ๋๊ปด์ง์ง ์์์ต๋๋ค. /์ ๋นํ
@dcolish ์ธ์ , ๊ฐ์ฌํฉ๋๋ค!
์์ง ์ต์ข ๊ฒฐ์ ์ ๋ด๋ฆฌ์ง๋ ์์์ง๋ง ํ ์์ ์์ ํฉ๋ฆฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
invoke
๋ฐ์ด๋๋ฆฌ ์ฌ์ฉ, tasks
๋ชจ๋ ์ฐพ๊ธฐ ๋ฑ์
๋๋ค.fab
๋ฅผ ์ฌ์ฉํ๊ณ fabfile
๋ชจ๋์ ์ฐพ๊ณ Invoke์ ๋ํ ์ค์น ์๊ฐ ์ข
์์ฑ์ ์ถ๊ฐํ๊ณ Invoke์ API๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๊ณต์ ์ฝ๋๋ฅผ ํธ์ถํฉ๋๋ค.invoke
/ tasks
๊ฐ ์กด์ฌํ๊ฑฐ๋ ์ต์
์์ _์_ ํ์๊ฐ ์์ต๋๋ค. d ์ ๋ ์ฌ์ฉํ์ง ๋ง์ธ์ -- fab
๋ ์ฌ์ ํ ๊ธฐ๋ฅ์ ์์ ์งํฉ์
๋๋ค.invoke
๋ฐ fabric
์ด ์๋ก ๊ด๋ จ๋๊ณ ํ๋ํ๋ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. . ์ด ์ฌ๋๋ค์ invoke
์ fab
๊ฐ ์๋ก์ ๋จ์ํ ๋ณ์นญ์ด๋ผ๋ ๋ฐ ๊ด์ฌ์ด ์์ ์ ์์ต๋๋ค(์: Fabric์ ์ค์น๊ฐ Nose ํ๋ฌ๊ทธ์ธ์ ์๋ ๋ฐฉ์๊ณผ ๊ฐ์ด invoke
์ ์๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋๋ก ํจ).fab
_๋ฐ๋์_ _์ ์ด๋_ "๋ด๊ฐ ์ฐพ๋ ์์
๋ชจ๋์ ์ด๋ฆ์ ๋ฌด์์
๋๊น?" ์๋ฏธ, ์ด๋ ์์ ์์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์์ฒด ์๋ฌผ๋ก ๊ฐ์ง ์ ์์ผ๋ฉฐ Fabric๊ณผ Invoke ์ฌ์ด์ ๊ด๊ณ๋ Fabric์ด Invoke์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์๋ง ์์ต๋๋ค.ํธ์ง: ์ต์ข ์์ ์ ์ํํ๊ธฐ ์ ์ ์ด๊ฒ์ด _์ด๋ป๊ฒ_ ์๋ํ๋์ง ์ดํด๋ด์ผ ํฉ๋๋ค. ์ฐ์ต ๋ ์ด๋ก ๋ฐ ๊ทธ ๋ชจ๋ ๊ฒ. ์ฌ๊ธฐ์ ์๊ฐํ์ง ๋ชปํ ๊ฐ๋์ ๋ถ๋ชํ ์ ์์ต๋๋ค.
Invoke๋ ํ์ฌ ๋ฒ ํ ๋ฆด๋ฆฌ์ค๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค(์ต๊ทผ์ ๋ง์ ์์ ์ ๊ตฌ์ถํ ํ). ์ด๋ฏธ:
foo:bar,lol
์์, ํจ์ argspec์ CLI ์ฌ์์ผ๋ก ์๋ ๋ฒ์ญ ํฌํจrun
(Windows์์๋ ์๋ํ์ง ์์ ์ ์์)์ด๋ฒ ์ฃผ์ Fab 2๊ฐ ๊ทธ๊ฒ์ ์ด๋ป๊ฒ ๊ณ ์ ๋ ์ง ํ๋กํ ํ์ ์ ์์ํ๊ธฐ๋ฅผ ํฌ๋งํ๋ฉด์ ์ ๋ ฅ์ง์ฃผํฉ๋๋ค.
๊นจ๋ํ ๋ณด์ฅ
๊ตฌ์ถ ๋ณด์ฅ
"ํ์ธ" "์ํ"
ํจ๋ธ๋ฆญ 2์ ์ํ๋ ๋ฌด์์ ๋๊น? ์ด๊ฒ์ ๋ฎ๋ ํฌํฌ๊ฐ ์์ต๋๊น? ๋ด ๋ง์ ํธ์ถ๋์ง ์์ fabric2๊ฐ ๋ค๋ฃจ์ด์ผ ํ๋ ํญ๋ชฉ์ ์๋ฏธํฉ๋๋ค.
@mvaled ๊ณง ๋ํ๋ ๊ฒ์ด๋ฉฐ ํจ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฐ์ธ '๊นจ๋ํ' ๋ถ๊ธฐ์ ์์ต๋๋ค.
์ฃผ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฃ์กํ์ง๋ง ๋ค์ ์ง๋ฌธํด์ผ ํฉ๋๋ค.
ํจ๋ธ๋ฆญ 2๋ ์ด๋์์ ์ฐพ์ ์ ์๋์?
์ ๋ invoke๋ฅผ ์ ๋ง ์ข์ํ๊ณ ํฌ๊ฒ ๊ฐ์ ๋ ๊ฒ ๊ฐ์ ๋๋์ด ๋ค์ง๋ง invoke 1.0 ๋ฆด๋ฆฌ์ค์์ ๋น ์ง ๊ฒ์ ๋ฌด์์
๋๊น? (ํจ๋ธ๋ฆญ 2์ ๊ธฐ์ด๋ก ์ค๋ช
๋จ)
invoke ๋ฐ fabric์ ๋ํ ๋ชจ๋ ํ๋ฅญํ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@dmr ์ ๋ Invoke ์์์ ์๋ํ๋ Fabric 2๋ฅผ ์ป๋ ์ค์ ๋๋ค. Fabric 1์์ ํฌํ ๋๋ ๋ง์ ๊ธฐ๋ฅ์ Invoke์ ๋ํ ๋์์ธ ๊ฒฐ์ ์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก(์ ๊ธฐ๋ฅ ๋๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ - ์๋ฅผ ๋ค์ด ์ต๊ทผ ๊ตฌ์ฑ ์ ๋ฐ ๊ฒ์ฌ๊ฐ ์ด ์ค ํ๋์) Invoke 1.0์ด " ์ถฉ๋ถํ ๊ฒ์ฆ๋ ์ ํฌ"
๋ด ๊ณํ์ Fabric 2์ ์ํ๋ฅผ PyCon์์ ๋์ค์ ์ํด ์ค๋นํ๋ ๊ฒ์ด๋ฉฐ(์ด์์ ์ผ๋ก๋ ํจ์ฌ ๋ ๋นจ๋ฆฌ) Fabric 2.0 + Invoke 1.0์ผ๋ก ์ด์ด์ง ๊ฒ์ ๋๋ค.
์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ์ด๋์์ ๋์์ ๋ฐ์ ์ ์๋์?
๋๋ ๋ด๊ฐ ๋ง์กฑํ๋ ๊ฒ์ ์ป์ ๋๊น์ง ๋จ๊ธฐ์ ์ผ๋ก ๊ฐ์ธ ์ง์ ์์ ์์ ์ค์ด๋ฉฐ ํผ๋๋ฐฑ์ ๋ฐ์ ์ค๋น๊ฐ ๋๋ฉด ํธ์ํฐ/๋ฉ์ผ๋ง ๋ฆฌ์คํธ/๋ฑ์์ ๋ฐํํ ๊ฒ์ด๋ฏ๋ก ๊ณ์ ์ง์ผ๋ด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
ํจ๋ธ๋ฆญ์ด ๋ด ํ๋ก์ ํธ์์ python3 ์ง์์ด ์๋ ๋ง์ง๋ง ํจํค์ง์ด๊ธฐ ๋๋ฌธ์ ์ ๋ช ๋ น ๋ฐ ์ผ๋ถ Paramiko์ ํจ๊ป ํธ์ถํ๋๋ก ์ ํํ๊ธฐ ์์ํ์ต๋๋ค.
Fabric 2.0 ๋ฐ Invoke 1.0 as Python 3.5์ ๋ํ ETA๊ฐ ์ด์ ๋ฆด๋ฆฌ์ค๋์์ผ๋ฉฐ Ubuntu 16.04 LTS์ ๊ธฐ๋ณธ๊ฐ์ด ๋ ๊น์?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Fabric 2.0 ๋ฐ Invoke 1.0 as Python 3.5์ ๋ํ ETA๊ฐ ์ด์ ๋ฆด๋ฆฌ์ค๋์์ผ๋ฉฐ Ubuntu 16.04 LTS์ ๊ธฐ๋ณธ๊ฐ์ด ๋ ๊น์?