Fabric: ssh์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„ํ• 

์— ๋งŒ๋“  2012๋…„ 02์›” 22์ผ  ยท  55์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: fabric/fabric

์ƒํ™ฉ์ด ๊ธ‰๋ฐ•ํ•˜๊ณ  Fabric์˜ ์ž‘์—… ์‹คํ–‰์„ ์ž์ฒด "ํƒ€์‚ฌ" ๋„๊ตฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„ํ• ํ•˜์—ฌ SSH ๊ธฐ๋Šฅ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ/์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ Fab-as-runner๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ssh ๋ฐ PyCrypto ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ์‹คํ–‰๊ณผ SSH ๊ฐ„์— ๋ถ„ํ• ํ•˜๋Š” ๊ฒฝ์šฐ "Fabric"์„ "SSH + ์ƒˆ ๋Ÿฌ๋„ˆ ๋„๊ตฌ์— ๋Œ€ํ•œ ์ข…์†์„ฑ"์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค(์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฐ ์ „๋ฐ˜์ ์ธ ์œ ์šฉ์„ฑ ๋ชจ๋‘).

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด, 2.0 ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์žฅ๋ฒฝ(์ตœ์†Œํ•œ Fabric์— ์ƒˆ ์„ค์น˜ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—)์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด _๋”_ ๋”_ ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด 2.0์„ ํ‘œ์‹œ ํ•˜์ง€๋งŒ 1.6 ๋˜๋Š” 1.7๋„ ํƒ€์ด๋ฐ์ด ๋” ์ข‹๋‹ค๋ฉด ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๋ถ„๋ช…ํžˆ ์ด ์ƒˆ๋กœ์šด ๋„๊ตฌ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์•„๋งˆ๋„ ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ Paver์™€ ๊ฐ™์€ ๊ธฐ์กด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • Paver๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์ €๋Š” ๊ทธ API์˜ ๋Š๋‚Œ์— ๋Œ€ํ•ด ์—ด๋ ฌํ•œ ํŒฌ์ด ๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

    • ์ž˜ ์•Œ๋ ค์ ธ ์žˆ๊ณ  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋” ์ž˜ ๋งž๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‹ค์ œ๋กœ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

    • ํŽธ์ง‘: Baker ๋Š” ์‹ค์ œ๋กœ ๋ฐ˜์ฏค ๊ดœ์ฐฎ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ถ„๋ช…ํžˆ ์™„๋ฒฝํ•œ ์ผ์น˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

  • Fabric๊ณผ ๋ณ„๊ฐœ์˜ ID๋ฅผ ๊ฐ€์ง€๋ฉด์„œ "๊ณ„์—ด" ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ด๋ฆ„ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ์ด ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.

  • Fabric ๋‚ด์— ํ˜„์žฌ ์กด์žฌํ•˜๋Š” "์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CLI์—์„œ ์ž‘์—…์œผ๋กœ Python ํ˜ธ์ถœ ๊ฐ€๋Šฅ ์‹คํ–‰" ๊ธฐ๋Šฅ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ง€ ์ฐข์–ด์ง„ ํ›„ ํ†ตํ•ฉ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น ๊ธฐ๊ณ„๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ผ๋ถ€ ๋ฆฌํŒฉํ† ๋ง์ด ์ˆ˜๋ฐ˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•„๋งˆ๋„ ์‹คํ–‰ ์ฆ‰์‹œ ๊ตฌํ˜„๋œ ๋‚˜๋จธ์ง€ ํฐ ํƒœ์Šคํฌ ๋Ÿฌ๋„ˆ "๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ" ์ค‘ ์ผ๋ถ€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์‹ค์ œ๋กœ๋Š” #452).
Packaging Refactoring Support

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Fabric 2.0 ๋ฐ Invoke 1.0 as Python 3.5์— ๋Œ€ํ•œ ETA๊ฐ€ ์–ด์ œ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์œผ๋ฉฐ Ubuntu 16.04 LTS์˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋ ๊นŒ์š”?

๋ชจ๋“  55 ๋Œ“๊ธ€

:์ผ€์ดํฌ:

๋ฌผ๋ก  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ž˜ ๋งž๋Š” ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋„๊ตฌ๋„ ํ•ญ์ƒ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

์„ค๋ช…์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@kennethreitz : ์ด๊ฒƒ์€ Fabric์˜ ์ ˆ๋ฐ˜์— ๋Œ€ํ•œ ๊ธฐ์กด ์š”๊ตฌ/๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด "๋ฌผ๊ฑด"์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ์„ค์น˜, ๊ฐœ๋ฐœ ์ผ์ • ๋“ฑ ์ž์ฒด ์—”ํ„ฐํ‹ฐ์ด์ง€๋งŒ ์—ฌ์ „ํžˆ Fabric ๊ฐœ๋ฐœ์ž/์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ์ œ์–ด๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„์ด๋””์–ด:

  • Tony - Tony Masters ์ผ๋ช… Taskmaster(๋งŒํ™”์ฑ…~)
  • CEO - ์ผ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” czar ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ).

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์ด๋ฆ„์ด ๋น ๋ฆ…๋‹ˆ๋‹ค :(

๋˜ํ•œ "kirk"์™€ ๊ฐ™์€ ๊ฒƒ(์บกํ‹ด ์ปคํฌ์—์„œ์™€ ๊ฐ™์ด).

๋‚˜๋Š” ์ž‘์—… ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ ํŒจ๋ธŒ๋ฆญ๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์ž‘์—… + ํŒจ๋ธŒ๋ฆญ๊ณผ ๊ด€๋ จ์ด์žˆ๋Š” ๊ฒƒ์€ ์ƒ๊ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Loom๋„ ๋‚˜์˜์ง€ ์•Š์€ ์ด๋ฆ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋‹ˆ์…œ ์ด๋ฆ„ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ.

๊ฐœ๋…

  • ๋‹ฌ๋ฆฌ๊ธฐ/์กฐ๊น… ๋“ฑ
  • ์‹คํ–‰ (๋ช…๋ น, ์‚ฌ๋žŒ๋“ค์€ ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ์•ฝ๊ฐ„ ์„ฌ๋œฉํ•˜์ง€๋งŒ ๋“ฑ)
  • ํ•  ์ผ(ํ•  ์ผ, ์‹ฌ๋ถ€๋ฆ„ ๋“ฑ)
  • ์ง๋ฌผ์—์„œ ๋ฌผ๊ฑด์„ ์งœ๊ฑฐ๋‚˜ ์กฐํ•ฉํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ์ž‘์—…์— ์ ์šฉ๋˜๋Š” ํ•œ # 461 ์—์„œ ๊ฑฐ๋ถ€๋˜๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ์ด๋ฆ„ ์ค‘ ์ผ๋ถ€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PyPI์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ด๋ฆ„

  • 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 ์‚ฌ์šฉ ์„ค์ •์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํ˜ธ์ถœ ๊ฐ€๋Šฅ ํ•ญ๋ชฉ์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์†ํ•ด๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ์Šค:

  • ์ƒˆ๋กœ์šด ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฆ„ ํ•„์š” ์—†์Œ
  • ์–ด์จŒ๋“  ๋‘ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ƒˆ lib๊ฐ€ "fabfiles"๋ฅผ ์‚ฌ์šฉํ•˜์ง€ _์•Š์œผ๋ฉด_ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ "์ž‘์—… ํŒŒ์ผ" ์œ ํ˜•๋„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ˜ผ๋™/์ถ”๊ฐ€ ์ฝ”๋“œ/๊ธฐํƒ€

๋นผ๊ธฐ:

  • ์œ ์‚ฌํ•œ ์ด๋ฆ„์œผ๋กœ ์ธํ•œ ๋‘ ํ”„๋กœ์ ํŠธ ๊ฐ„์˜ ์ž ์žฌ์ ์ธ ํ˜ผ๋™
  • ์ƒˆ ํ”„๋กœ์ ํŠธ๋Š” ๋ชจ๋“  Fabric-isms(์˜ˆ: ๊ฑฐ์˜ ๋ชจ๋“  CLI ํ”Œ๋ž˜๊ทธ ๋“ฑ)๊ฐ€ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”๊ฐ€ ํ™•์žฅ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ๋ฅผ ๋“ค์–ด pip install fabricator ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ fab ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ž‘์€ ํ”Œ๋ž˜๊ทธ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ทธ๋Ÿฐ ๋‹ค์Œ pip install fabric ํ•˜๋ฉด ๊ฐ‘์ž๊ธฐ ๋™์ผํ•œ fab ๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“  ์ถ”๊ฐ€ Fabric CLI ํ”Œ๋ž˜๊ทธ๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • OTOH "ํด๋ผ์ด์–ธํŠธ" ์ฝ”๋“œ๊ฐ€ 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๋Š” ๊ณ ์œ ํ•œ ๊ฒƒ, ๊ณ ์œ ํ•œ ์ƒˆ ID/"๋ธŒ๋žœ๋“œ", invoke ๋ฐ”์ด๋„ˆ๋ฆฌ ์‚ฌ์šฉ, tasks ๋ชจ๋“ˆ ์ฐพ๊ธฐ ๋“ฑ์ž…๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ Fabric์ด ์•„๋‹Œ Invoke๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐœ๋…์ ์œผ๋กœ ๊นจ๋—ํ•˜๊ณ  ์ง๊ด€์ ์ด๋ฉฐ ๊ณผ๊ฑฐ ์ˆ˜ํ•˜๋ฌผ์„ ์ œ๊ฑฐํ•˜๋Š” ๋“ฑ์ž…๋‹ˆ๋‹ค.

  • Invoke๋Š” Fabric(๋˜๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ)์ด ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ชจ๋“  ๊ณต์œ  ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœ API๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • Fabric์€ ๊ณ„์†ํ•ด์„œ fab ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  fabfile ๋ชจ๋“ˆ์„ ์ฐพ๊ณ  Invoke์— ๋Œ€ํ•œ ์„ค์น˜ ์‹œ๊ฐ„ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  Invoke์˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๊ณต์œ  ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ Fabric์„ ์„ค์น˜ํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋งŒ Fabric์— ์ดˆ์ ์„ ๋งž์ถ˜ ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ invoke / tasks ๊ฐ€ ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์˜ต์…˜์ž„์„ _์•Œ_ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. d ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” -- fab ๋Š” ์—ฌ์ „ํžˆ ๊ธฐ๋Šฅ์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

    • ์ž์ฒด๋ฅผ ์œ„ํ•ด Invoke๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž(์˜ˆ: Fabfile์ด ์—†๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ) _๋ฐ_ Fabric์€ ๋‹ค์‹œ: invoke ๋ฐ fabric ์ด ์„œ๋กœ ๊ด€๋ จ๋˜๊ณ  ํ–‰๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. . ์ด ์‚ฌ๋žŒ๋“ค์€ invoke ์™€ fab ๊ฐ€ ์„œ๋กœ์˜ ๋‹จ์ˆœํ•œ ๋ณ„์นญ์ด๋ผ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: Fabric์˜ ์„ค์น˜๊ฐ€ Nose ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ๊ฐ™์ด invoke ์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ•จ).

    • ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ํ–‰๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค -- fab _๋ฐ˜๋“œ์‹œ_ _์ ์–ด๋„_ "๋‚ด๊ฐ€ ์ฐพ๋Š” ์ž‘์—… ๋ชจ๋“ˆ์˜ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?" ์˜๋ฏธ, ์–ด๋Š ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ž์ฒด ์ƒ๋ฌผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ Fabric๊ณผ Invoke ์‚ฌ์ด์˜ ๊ด€๊ณ„๋Š” Fabric์ด Invoke์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์ตœ์ข… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ด๊ฒƒ์ด _์–ด๋–ป๊ฒŒ_ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์Šต ๋Œ€ ์ด๋ก  ๋ฐ ๊ทธ ๋ชจ๋“  ๊ฒƒ. ์—ฌ๊ธฐ์„œ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๊ฐ๋„์— ๋ถ€๋”ชํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Invoke๋Š” ํ˜„์žฌ ๋ฒ ํƒ€ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ตœ๊ทผ์— ๋งŽ์€ ์ž‘์—…์„ ๊ตฌ์ถ•ํ•œ ํ›„). ์ด๋ฏธ:

  • ๋” ์šฐ์ˆ˜ํ•˜๊ณ  ๋ช…์‹œ์ ์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ์ƒ์šฉ๊ตฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.
  • "์‹ค์ œ" CLI ํ”Œ๋ž˜๊ทธ ํŒŒ์„œ, ๋” ์ด์ƒ 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์˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋ ๊นŒ์š”?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰