Fabric: v2์—์„œ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ

์— ๋งŒ๋“  2018๋…„ 05์›” 14์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: fabric/fabric

์•ˆ๋…•! ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋‚˜ fabfile ์ž์ฒด์—์„œ hosts ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

CLI( -H )๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ fabfile์ด ํŠน์ • ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋‹นํ•œ ์ด์œ  ์—†์ด ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” "๊ฐ€์žฅ ์ข‹์€" ์†”๋ฃจ์…˜์€ ์†์œผ๋กœ ์—ฐ๊ฒฐ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

<strong i="10">@task</strong>
def my_ls(c):
    conn = Connection('myhost')
    conn.run('ls')

ํ•˜์ง€๋งŒ (1) ๋ชจ๋“  ๊ณณ์—์„œ ๋ณต์ œํ•ด์•ผ ํ•˜๊ณ  (2) ์ปจํ…์ŠคํŠธ ์ธ์ˆ˜๋ฅผ ๋ฌด์˜๋ฏธํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค ์ง€์ €๋ถ„ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

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

์œ„์˜ ๋ชจ๋“  ๋‚ด์šฉ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „ env.hosts ์„ค์ •์ด ์ •๋ง ๊ทธ๋ฆฌ์›Œ์š”. ๊ทธ๊ฒƒ์€ ์•„๋ฆ„๋‹ต๊ฒŒ ๋‹จ์ˆœํ–ˆ์Šต๋‹ˆ๋‹ค.

-1 invoke.yaml ๋˜๋Š” ๊ธฐํƒ€์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํ•„์š”ํ•  ๋•Œ. ๋‚˜๋Š” ์›์ˆญ์ด ํŒจ์น˜๋‚˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ํ›„ํฌ๋ฅผ ํ›จ์”ฌ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ctx.local ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

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

๊ฐ™์€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. fabfile์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— conn = Connection('myhost') ๋ฅผ ๋„ฃ๋Š” ์†”๋ฃจ์…˜์„ ์ƒ๊ฐํ•ด ๋ƒˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

conn = Connection('myhost')

<strong i="7">@task</strong>
def my_ls(c):
    conn.run('ls')

<strong i="8">@task</strong>
def my_cd(c):
    conn.run('cd')

....

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด ์†”๋ฃจ์…˜์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์œผ๋ฉฐ ์ปจํ…์ŠคํŠธ์— ๊ธฐ๋ณธ ์—ฐ๊ฒฐ์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์— ํ˜ธ์ŠคํŠธ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์œผ๋ฉด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ˜ธ์ŠคํŠธ ๋ชฉ๋ก(-H ํฌํ•จ)์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ localhost๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด/๋ฐœ์ƒ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ์˜ต์…˜์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋ชจ๋“  ๋‚ด์šฉ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „ env.hosts ์„ค์ •์ด ์ •๋ง ๊ทธ๋ฆฌ์›Œ์š”. ๊ทธ๊ฒƒ์€ ์•„๋ฆ„๋‹ต๊ฒŒ ๋‹จ์ˆœํ–ˆ์Šต๋‹ˆ๋‹ค.

-1 invoke.yaml ๋˜๋Š” ๊ธฐํƒ€์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํ•„์š”ํ•  ๋•Œ. ๋‚˜๋Š” ์›์ˆญ์ด ํŒจ์น˜๋‚˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ํ›„ํฌ๋ฅผ ํ›จ์”ฌ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ctx.local ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

#4๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค!

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