abort_on_prompts ๋ฐ warn_only = True๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด abort_on_prompts๊ฐ warn_only๋ฅผ ์ฌ์ ์ํ๊ณ fabric์ ์ฌ์ ํ โโSystemExit๋ฅผ ๋ฐ์์ํต๋๋ค.
In [6]: from fabric.api import sudo, execute, cd, env, run, local
In [7]: with settings(warn_only = True):
result = local("ls -ltrh")
...:
[localhost] local: ls -ltrh
total 188K
In [8]: with settings(warn_only = True):
result = local("ls -ltrh /tmp/tartratrat")
...:
[localhost] local: ls -ltrh /tmp/tartratrat
ls: cannot access /tmp/tartratrat: No such file or directory
Warning: local() encountered an error (return code 2) while executing 'ls -ltrh /tmp/tartratrat'
In [9]: env['abort_on_prompts'] = True
In [10]: with settings(warn_only = True):
result = local("ls -ltrh /tmp/tartratrat")
....:
[localhost] local: ls -ltrh /tmp/tartratrat
ls: cannot access /tmp/tartratrat: No such file or directory
Warning: local() encountered an error (return code 2) while executing 'ls -ltrh /tmp/tartratrat'
In [11]: with settings(warn_only = True):
result = run("ls -ltrh /tmp/tartratrat")
....:
Fatal error: Needed to prompt for the target host connection string, but abort-on-prompts was set to True
Aborting.
An exception has occurred, use %tb to see the full traceback.
SystemExit: 1
To exit: use 'exit', 'quit', or Ctrl-D.
(Protip, ํ ์คํธ ํ๋ ์์ "Github Flavored Markdown"๋งํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฐ๋ฅธ ํ์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ํ์๋ฉ๋๋ค. ์ค๋ช ์ ์์ ํ์ต๋๋ค. :))
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ abort_on_prompts
ํ ๊ธ ํ ๋ ๊ฒฝ๊ณ ๋ฐ ๊ณ์์ด ์๋ ํ์ฌ ๋์ (์ค๋จ)์ _ ์๋ง _ ์์ํ๊ณ ์์ต๋๋ค. warn_only=True
์ผ๋ฐ์ ์ผ๋ก _ ์๊ฒฉ ํ๋ก๊ทธ๋จ _์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ํ ํ ์์
์ ์ ์ฉ๋๋ฉฐ Fabric ์์ฒด๊ฐ ์ค๋จ๋๋ ๊ฒฝ์ฐ์ ์ ์ฉ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ๋ ๋ค ์ฐธ์ธ ์ํฉ์ด ์ ์ ์ / ๋ฌธ์ํ๋์ง ์์ ์์ ์ธ์ ํฉ๋๋ค. ๋ํ ์ฝ๋๋ฒ ์ด์ค์์ abort()
์ ๋๋ถ๋ถ์ ๋ค๋ฅธ ์ฉ๋๋ "abort if $$ warn_only=False
"๋
ผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ error()
ํธ์ถ๋ก ๋์ฒด๋์์ต๋๋ค.
์ผ๊ด์ฑ์ด ์ฌ์ฉ์๊ฐ ํ๋กฌํํธ์ ์ค๋จ์ ์๋ํ๊ณ ์์์น ๋ชปํ warn_only=True
์ํด ๋ฐฉํด๋ฅผ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋ฅ๊ฐํ๋ค๋ ์ ์ ์ง๊ธ ๋น์ฅ ์์ฒญํ๊ณ ์์ฒญํ ๋ณ๊ฒฝ์ ์ํ ํ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ถํํ๋ฉด ๋๋ ๋น์ ์ ์์ ๋ด๋์ ๊ฒ์
๋๋ค;)
๋ฐ์ฑ์์ ๋๋ ์ด๊ฒ์ ๋ํด ์ ๋ง ์ฐข์ด์ก์ต๋๋ค. ์์ ์ธ๊ธํ๋ฏ์ด ์์์น ๋ชปํ ํ๋กฌํํธ๋ก ์ธํด Fabric์ด ํญ๋ฐํ๊ธฐ๋ฅผ ์ํ๋ ์ฌ์ฉ์๋ฅผ ์ํด ๋ณ๊ฒฝ ์ฌํญ์ด ๋ง๊ฐ์ง ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์จ๊ฒจ์ง ์ค๋ฅ๋ ์ถ์ ํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
@pkittenis- ์ด๊ฒ์ด ๋น์ ์๊ฒ ๋ฌธ์ ๊ฐ๋๋ ์ค์ ์ํฉ์ ๋ฌด์์
๋๊น? try/except SystemExit
์ (๋ฅผ) ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๊น?
์ด๋ก ์ธํด ์ฐจ๋จ ๋ ๊ฒฝ์ฐ ๋ ํฉ๋ฆฌ์ ์ผ ์์๋ ๊ฒ์ ์๋ก์ด ๊ตฌ์ฑ ์ต์
( warn_trumps_abort
์ ๊ฐ์ ๋ฉ์ฒญํ ์ด๋ฆ ํฌํจ)์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ ์ฌ๋ก์ ์ฌ๋๋ค์ด ์๊ธฐ์น ์์ ๋ณ๊ฒฝ์ ์ผ์ผํค์ง ์๊ณ ๋์์ ์ ์ด ํ ์ ์๋๋กํ๋ ๊ฒ์
๋๋ค. ํ์ฌ ์ฌ์ฉ์๋ฅผ ์ํด.
๋ฌธ์ ๋ abort_on_prompts
์ ๋์์ผ๋ก ์ธํด ๋ช
๋ น์ ์ค๋ฅ๊ฐ์์ ๋ No hosts found. Please specify (single) host string for connection:
๋ก ํด๋ฐฑ ํ ๋ fabric์ด SystemExit๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์
๋๋ค.
ํจ๋ธ๋ฆญ์ API๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์๋ชป๋ IMO์
๋๋ค. API ์ฌ์ฉ์๋ ์คํ์ SystemExit๋ฅผ ํผํ๊ณ ๋์ ์ฝ๋ ๋ด์์ ๋ฐํ ์ฝ๋๋ฅผ ์ฒ๋ฆฌ ํ ์ โโ์๋๋ก warn_only
๋ฅผ ์ด๋ฏธ ์ค์ ํ์ต๋๋ค. ํ๋ฅญํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์๋ abort_on_prompts
๋ฅผ ์ค์ ํ๊ณ ๋ช
๋ น์ด ์คํจ ํ ๋ ๋ช
๋ น์ ๋ํ ์ค๋ฅ ์ฝ๋๋ฅผ๋ฐ๋ ๋์ enter a host
๋ก์ ํด๋ฐฑ ๋ฐ abort_on_prompts
์ฌ์ฉ์ผ๋ก ์ธํด SystemExit๋ฅผ ์ป์ต๋๋ค. ๋ฌผ๋ก ์์ธ๋ฅผ ์ฒ๋ฆฌ ํ ์ โโ์์ง๋ง์ด ๊ฒฝ์ฐ ๋ ์ด์ ์คํจํ ๋ช
๋ น์ ๋ฐํ ์ฝ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
abort_on_prompts
๋ค์ False๋ก ๋ค์ ์ค์ ํ์ฌ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง ์คํจ ํ ์๋ ์๊ณ ์คํจํ์ง ์์ ์๋์๋ ๋ชจ๋ ๋ช
๋ น์ ๋ํด ์ํํด์ผํฉ๋๋ค.
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ํจ๋ธ๋ฆญ์ API๋ก ์ฌ์ฉํ ๋ ๋ช
๋ น ์ค์์ ์ฌ์ฉ๋๋ ๋ด์ฅ ํจ๋ธ๋ฆญ ํ๋กฌํํธ, ํนํ No hosts found..
๋ฅผ ์์ ํ ๋นํ์ฑํํ๋ ํ๋๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด abort_on_prompts
๋์ด๋ฅผ ์ ๋ฐํ ํ๋กฌํํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ SystemExit๋ฅผ ์ ๋ฐํ์ง ์์ต๋๋ค.
+1-์ง๊ธ ๋ฐ๋ก์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ๋ด ๊ตฌ์ฒด์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ์ต๊ทผ ํ๋ก๋น์ ๋ ๋ ํด๋ผ์ฐ๋ ๋ ธ๋๋ฅผ ํ์ธํ๊ณ ํด๋น ๋ ธ๋๊ฐ ์ ์ ํ ๊ณต๊ฐ ํค๋ก SSH ์ก์ธ์ค ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด Fabric์ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ค์ ๋ก abort_on_prompts ์์ธ๋ฅผ _catch_ํด์ผํฉ๋๋ค. ์ง๊ธ์ ๋ช ์ ์ ์ผ๋ก SystemExit๋ฅผ ์ก์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ค์ ๋ก ๋งค์ฐ ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค.
+1-abort_on_prompts ์์ธ๋ ํฌ์ฐฉํ๊ณ ์ถ์ต๋๋ค.
: +1 : ์ ๋ SystemExit
๊ฐ ์๋ผ๋ ๊ฒ์ ์ํ์ง ์๋ ๊ฐ์ ์ํฉ์ ์์ต๋๋ค. ์
๋ฌ๋ฆฌ ์ผ๊พผ์ ์ฃฝ์
๋๋ค.
์ด ๋จ๊ณ์์ ์ ๋์ด ์์ค์ ๋ณ๊ฒฝ์ด API ์ฌ์ฉ ์ฌ๋ก์ CLI ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณด์กฐ / ๋ํผ ์ฌ์ฉ ์ฌ๋ก๋ก ์ค๊ณ์ค์ธ ๋ฒ์ 2.0์ ๋ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. 1.x์์ ๋์์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ฒ๊ทธ๋ฅผ ์ถ๊ฐํ๊ธฐ์๋ ๋๋ฌด ๋๋๊ฑฐ๋ / ํผ๋ ์ค๋ฝ๊ฑฐ๋ / ์ํด ํ ์ ์์ต๋๋ค.
2.x๋ก ํ๊ทธ๋ฅผ ์ง์ ํ๊ณ ์ด์ด๋๋ฉด API์ ํด๋น ๋ถ๋ถ์ ์์ฑํ ๋ ๋ค์ ๋ฐฉ๋ฌธํ๊ณ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
+ warn_only
abort_on_prompts
๋ฐ warn_only
๋ชจ๋ _True_์ด๋ฉด warn_only
์ด ์ฐ์ ํฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ๋ ๋ค๋ฅธ ์ค๋ ๋, @reeesga : https://github.com/fabric/fabric/issues/521
+1
+1-abort_on_prompts ๋ฐ warn_only๊ฐ ๋ชจ๋ True์ด๋ฉด warn_only๊ฐ ์ฐ์ ํฉ๋๋ค. ์ด๋ฅผ์ํ ์๋ก์ด ์ค์ ๋ ์ข์ต๋๋ค.
์ด๊ฒ์ ๋ํ ๋ชจ๋ ์
๋ฐ์ดํธ?
SystemExit์ ์ก์์ง๋ง ์ถ๋ ฅ์ด ์ถ์
ํฉ๋๋ค ...
์ง์ ํ์ธ :
webapps2adm001.qa.aws.company.com : ๋ฃจํธ๋ก ์ฐ๊ฒฐ ์ฑ๊ณต.
webapps2001.qa.aws.company.com : ๋ฃจํธ๋ก ์ฐ๊ฒฐ ์ฑ๊ณต.์น๋ช ์ ์ค๋ฅ : ์ฐ๊ฒฐ ๋๋ sudo ์ํธ (ํธ์คํธ : webapps3001.ia.aws.company.com)๋ฅผ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์ํ์ง๋ง ๋ณ๋ ฌ ๋ชจ๋์์๋ ์ ๋ ฅ์ด ๋ชจํธํฉ๋๋ค.
์ค๋จํฉ๋๋ค.
webapps3001.ia.aws.company.com : ๋ฃจํธ๋ก ์ฐ๊ฒฐ์ ์คํจํ์ต๋๋ค. SystemExit : 1
webapps3adm001.ia.aws.company.com : ๋ฃจํธ๋ก ์ฐ๊ฒฐ ์ฑ๊ณต.
์ค๋จ ํ์๋ ์ค์ ์ ์งํ๊ณ ์ถ์ต๋๋ค. ์ค๋ฅ ๋ฉ์์ง๋ฅผ๋ณด๊ณ ์ถ์ง ์์ต๋๋ค.
๋๋ ๋ํ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ผ๋ฉฐ ํ์ฌ ๋์์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค.