fabricã§Proxyã解決ãããã¡ã¢
fabricのroleで試行錯誤した話ãããã§ããæè¿Fabricãå°ã触ã£ã¦ãã®ã§ãã®è¾ºãã®ã¡ã¢ã
â proxyçµç±ã§fabricãã
"bundle installしたらプロキシに阻まれて失敗したので会社辞めます。"ã話é¡ã«ãªãã¾ããããã
ãå¤åã«ãããç§ã®ç¾å¨ã®è·å ´ç°å¢ãProxyããã¾ããã¦ãã¦ã
「Vagrantとか使う上ではまるProxyの話」ã¨ãã
Elasticsearchã®pluginå
¥ããã®ã«johtaniさんのブログåèã«ãããã¨ãã
æ¥ã
æ ¼éãã¦ããããã§ãããfabricããã¡ããä¾å¤ã§ã¯ããã¾ããã
fabricã®å ´åãsshã使ãã®ã§ssh_configãå©ç¨ãã¾ãã
ssh_configãfabricãã使ãã«ã¯ç°å¢å¤æ°ã§env.use_ssh_config=True
ã«ãã¾ãã
ããããï¼ãenv.use_ssh_config
ã使ããã®version 1.4ããã§ããã
æå
ã§è©¦ãã¦ããUbuntu12.04preciseã§ã¯apt-get install fabric
ããã¨version 1.3.2ãå
¥ãã¾ãã
ãããªãæ«æãã¦ãã¾ãã¾ããã
@shiumachiさんの記事ã¨@ymotongpooさんの記事ãèªãã ã«ãé¢ãããã
virtualenvããpipãããå
¥ãã辺ãã§æ«æãã¦ãã¾ãï¼ãã
ãããï¼ã追è¨ï¼解決しました。
æçµçã«kuchitamaさんの記事ãè¦ã¦
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py python get-pip.py
ã§ä½ã¨ãpipãå
¥ããfabricãææ°versionï¼ã®1.8ãå
¥ãããã¨ãåºæ¥ã¾ããã
ã¡ãªã¿ã«pipã¯apt-getã¨ãã¹ãç°ãªã(/usr/bin/pipâ/usr/local/bin/pip)ã¿ãããªã®ã§ãã¹ãéãå¿
è¦ãããã¾ãã
fabricã/usr/local/bin/fabã«å
¥ãã¾ããã
ãã¨ã¯ssh_configã«proxycommand使ã£ã¦proxyæå®ããã°ããã®ã§ããã
ä»åº¦ã¯コレã«ã¯ã¾ãã¾ããã
è¦ã¯proxycommandãé©ç¨ããé¨åã®ã½ã¼ã¹ãtypoãã¦ããã¿ããã§ãã
ç¾æç¹ã§ã¯ãã«ãªã¯ãã¾ã åãè¾¼ã¾ãã¦ããªããããªã®ã§ã ï¼1.8.2でなおったみたいですï¼
Issueãè¦ãªãã/usr/local/lib/python2.7/dist-packages/fabric/netowrk.pyã®ä¸ãä¿®æ£ã
- sock = ssh.proxycommand(proxy_command) + sock = ssh.ProxyCommand(proxy_command)
ããã§proxyçµç±ã§fabricã§ããããã«ãªãã¾ããã
ã¡ãªã¿ã«proxycommand使ããã®ã¯fabric 1.5ããã¿ããã§ãã
â¡ssh_configä½¿ç¨æã®disconnectãã°ï¼
使
ããã¾ã«å®è¡èªä½ã¯çµãã£ã¦ãã®ã«å¶å¾¡ãæ»ã£ã¦ããªãæãããã¾ãã
ã©ããã§Issueãè¦ãæ°ãããã®ã§ããä»ã¯å¿ãã¦ãã¾ãã¾ããã
ssh_configä½¿ç¨æã®disconnectã®é¨åã«åé¡ããããããªã®ã§ããã
ããã¯@parallelã®æã¯èµ·ããªãäºã«æ°ã¥ããã®ã§ã
æçµã³ãã³ãã«echoã¿ãããªä½ã§ããªãã³ãã³ããå
¥ãã¦@parallelå®è¡ããã¨ããæ¹æ³ã§ãã®ãä¸ã
å®å
¨ãªãããããã¦ãã¦ã§ããã»ã»ã»
â¢ãã¹ã¯ã¼ãå ¥å
sshããæã«env.password
ãè¨å®ããªãã¨å®è¡æã«ããã³ããã§èããããã¨ã«ãªãã¾ãã
ï¼pty=Falseã ã¨èãããªãããï¼ï¼ï¼
@parallelãã¦ããã¨é çªä¿éã§ããªãæ¨ã®ã¡ãã»ã¼ã¸ãåºã¾ãã
Fatal error: Needed to prompt for a connection or sudo password (host: host.example.com), but input would be ambiguous in parallel mode
ããã§ãèªåã§ãã¹ã¯ã¼ãå
¥åãåãã¦å
é¨ã§è¨å®ãããã¨ã«ãã¾ãã
ã¨ãããããªãã¨sudoã®åº¦ã«ãã¹å
¥åå¿
è¦ã§ããã
prompt
ã使ãã°å
¥åãåãä»ããã¾ãããããã ã¨ãã¹ã¯ã¼ããç»é¢ä¸ã§ä¸¸è¦ããªã®ã§ã
pythonã®getpass
ã使ãã¾ããã
import getpass def _login(): prompt('Enter the user: ', 'login_user') env.user = env.login_user env.password = getpass('Enter the password: ')
ä¸è¨ã®ã¡ã½ãããenvè¨å®ããã¡ã½ããã®ä¸ã§å¼ãã§ã¾ãã
ããçµå±ãä»ã®ã¨ããèªåãã使ããªãããã°ã©ã ã ã£ãã®ã§env.password
ãã¾ããããã
éçºæã¨ãããã¨ã§å¾ã§æ»ãã¯ããå¤åã
ä»ã«ãç´°ã
è²ã
ãã£ãæ°ããããã¨ããããã
ã»è²ã¤ããã¡ã½ããããããã¨ã«æ°ã¥ããã
ã»fabricåå²ãããªãfabfileã£ã¦ãã£ã¬ã¯ããªä½ã£ã¦ãããã¿ãããªã®ããè¦ããã©ã
ãæ®éã«ãã¡ã¤ã«åå²ãã¦åç´ã«importããã ãã§ã使ãã
ã¨ãã
éã«èª²é¡ã¨ããæå³ã§ã¯ã
é çªãå¶å¾¡ãããæã«ã¯前回の記事ã®æå¾ã®@parallelã®ãããªãã¨ãã§ããã
åãã¼ãåãã®ã¡ã½ãããä½ããªãããªããªãã®ãåé·ã§æ©ãã§ããã
ãã¨ãUbuntuã«PPAã¨ããã¬ãã¸ããªããããã¨ã仿¥知ったã®ã§ã
ããã試ãããapt-getã§ããããã®ãããããªãã¨ããã¾ã 試ãã¦ã¾ãããã
ã¾ã ã¾ã 使ãããªãã«ã¯ç¨é ãã§ããã