์๋
! ๊ตฌ์ฑ ํ์ผ์ด๋ fabfile ์์ฒด์์ hosts
๋ฅผ ์ง์ ํ ์ ์์ต๋๊น?
CLI( -H
)๋ฅผ ํตํด ์ ๊ณตํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง fabfile์ด ํน์ ์๋ฒ์ ํต์ ํ๋๋ก ์ค๊ณ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ ๋นํ ์ด์ ์์ด ์ถ๊ฐ ์์
์ ์ํํ๋๋ก ํฉ๋๋ค.
๋ด๊ฐ ์์๋ผ ์ ์๋ "๊ฐ์ฅ ์ข์" ์๋ฃจ์ ์ ์์ผ๋ก ์ฐ๊ฒฐ์ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ์๋ฅผ ๋ค์ด
<strong i="10">@task</strong>
def my_ls(c):
conn = Connection('myhost')
conn.run('ls')
ํ์ง๋ง (1) ๋ชจ๋ ๊ณณ์์ ๋ณต์ ํด์ผ ํ๊ณ (2) ์ปจํ ์คํธ ์ธ์๋ฅผ ๋ฌด์๋ฏธํ๊ฒ ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฝค ์ง์ ๋ถํด ๋ณด์ ๋๋ค.
๊ฐ์ ์ง๋ฌธ์ด ์์ต๋๋ค. 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๋ฅผ ์ฐธ์กฐํ์ญ์์ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์์ ๋ชจ๋ ๋ด์ฉ์ ๋์ํฉ๋๋ค. ์์ env.hosts ์ค์ ์ด ์ ๋ง ๊ทธ๋ฆฌ์์. ๊ทธ๊ฒ์ ์๋ฆ๋ต๊ฒ ๋จ์ํ์ต๋๋ค.
-1 invoke.yaml ๋๋ ๊ธฐํ์ ๊ฐ์ ๋ค๋ฅธ ๊ตฌ์ฑ ํ์ผ์ด ํ์ํ ๋. ๋๋ ์์ญ์ด ํจ์น๋ ํธ์คํธ๋ฅผ ๋ช ์ํ ์ ์๋ ์ผ์ข ์ ๊ฐ์ ธ์ค๊ธฐ ํํฌ๋ฅผ ํจ์ฌ ์ ํธํฉ๋๋ค.
ํธ์คํธ๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ
ctx.local
๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์ ์์๋ด๋ ๋ฐ๋ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค.