çµã¿èŸŒã¿ã®reboot()
é¢æ°ã¯ãUbuntu14.04ãã¹ããšFreeBSD10.xãã¹ãã®äž¡æ¹ã§å®å
šã«æ©èœããŠããŸãããUbuntu16.04ãã¹ãã§ã¯æ©èœããŸããã
Ubuntu 14.04ã§äœãèµ·ãã£ãŠããã®ã§ããïŒ
ãã®ãããªåºåãåãåããåèµ·åãã¡ããªãã¯ãåæ¥ç¶ããåŸãã·ã¹ãã ãåèµ·åããŸãã
[ubuntu] out:
[ubuntu] out:
[ubuntu] out: Broadcast message from root<strong i="9">@ubuntu</strong>
[ubuntu] out:
[ubuntu] out: (/dev/pts/0) at 15:02 ...
[ubuntu] out:
[ubuntu] out:
[ubuntu] out:
[ubuntu] out:
[ubuntu] out: The system is going down for reboot NOW!
[ubuntu] out:
[ubuntu] out:
Ubuntu 16.04ã§äœãèµ·ãã£ãŠããã®ãïŒ
ãã®ç¶æ ã§EnterããŒãæŒããšãFabricã¯å®éã«ç¶è¡ããŸãããåã«æ¬¡ã®ã¡ãã»ãŒãžã衚瀺ãããŸãã
No handlers could be found for logger "paramiko.transport"
Warning: sudo() received nonzero return code -1 while executing 'reboot'!
ç§ã¯åèµ·åã«ãã®ã³ãŒãã䜿çšããŠããŸãïŒ
def reboot_():
with settings(warn_only=True):
print 'rebooting'
start_time = time.time()
reboot(wait=1200)
print 'reboot took: {} seconds'.format(time.time() - start_time)
runïŒ 'reboot'ïŒãšãŸã£ããåãã§ã
æåã®run
ãšåãã§ããããšã¯é©ãã¹ãããšã§ã¯ãããŸãããæããã«ãUbuntuã®åèµ·åãSSHæ¥ç¶ãªã©ã®åŠçã«é¢ããŠäœããå€æŽãããŠããŸãã
æãããªããšã¯äœãæãæµ®ãã³ãŸãããã reboot()
ïŒLinuxã§ã¯ãªãFabïŒã¯éåžžã«åºæ¬çã§ã-åã«sudo('reboot')
åŒã³åºããFabricã®äžè¬çãªåæ¥ç¶èšå®ãäžæçã«åŸ®èª¿æŽããŠãéèŠãªåèµ·åã·ãŒã±ã³ã¹åŸã®åæ¥ç¶ãåŠçã§ããããã«ããŸãïŒããã©ã«ãã§ã¯ãããã«è«ŠããŸãïŒã
https://github.com/fabric/fabric/blob/c0224a52df59821f21a8c0bd47ce15e42c2046a4/fabric/operations.py#L1244ãåç §ããŠ
ãŸããæããããåŸãããå¯èœæ§ããããããParamikoã®ãã®ã³ã°ãæå¹ã«ããŠã¿ãŠãã ããïŒãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŒãžã®äžéš-httpïŒ//www.fabfile.org/troubleshooting.htmlãåç §ïŒã
å®éã«ã¯ãèãçŽãäžã§ãããã¯Ubuntuã®ããã«èãããreboot
äœãšã決ããŠåºãªãããŸãã¯ãã¡ããªãã¯ã®å®è¡ãã³ãã©ã«çµäºã³ãŒããæåºããŠããïŒ run
/ sudo
ïŒãããªãã¯ãã®æ³šæ以æ¥ã sudo
ã¯ãåŸ
ã£ãŠããEnterãããã·ã¥ãããšæã£ãŠããŸããã®ã§ãã
reboot()
ã³ãŒããèŠããšã sudo('reboot')
åŒã³åºããæçµçã«çµäºããããšãæåŸ
ãããŠãããããAïŒå°ãåŸ
ã£ãŠãBïŒåæ¥ç¶ãéå§ã§ããŸãã
Fabricã®åŽã§ã¯ãå®è¡ãsudo
å
ã§ã¶ãã¶ãããŠãããšããäºå®ã¯ããªã¢ãŒãã§äœãããã®æåŸ
ã«éåããŠããããšãæå³ããŸãã ã¡ãã£ãšå€ã ã ãã¡ããªãã¯èªäœã®ãã°ãããããŸãããããªã¢ãŒããšã³ãã§ã®åäœãæªãããã«æããŸãã ïŒè¿œèšïŒããã¯ã©ã®ãã¡ããªãã¯ããŒãžã§ã³ã§è¡šç€ºãããŠããŸããïŒïŒ
ãªããã³ãã®èã-ããããsudo
ã«timeout=
ãèšå®ãã次ã«ãã®åšãã«except TimeoutException: pass
ãèšå®ããããšãã§ããŸãã ããã«ããããã®ïŒå¥åŠãªïŒç¶æ³ã§ããããã©ã«ãã§åæ¥ç¶ãè©Šã¿ãããšãä¿èšŒãããŸãã
å¯äžã®æ¬ ç¹ã¯ã reboot
ãå®éã«ãã³ã°ããŠããŠãã·ã¹ãã sudo
å
ã§ã¯ãªããæ¥ç¶ã«ãŒãã
Ubuntu 16.04ã§å€æŽããããã1ã€ã®éåžžã«å¥åŠãªåäœã¯ã次ã®ãšããã§ãã sshã»ãã·ã§ã³ã§poweroff
ãå®è¡ãããšããã·ã³ã®é»æºã¯ãªãã«ãªããŸãããSSHã»ãã·ã§ã³ããã³ã°ããŸãã Ctrl + CãCtrl + Dãªã©ãå®è¡ããæ¹æ³ã¯ãããŸããã ç§ã«ã§ããããšã¯ã_lot_ãåŸ
ã£ãŠãããsshã次ã®ããã«äžæ¢ããããšã ãã§ãã
packet_write_wait: Connection to 192.168.56.11: Broken pipe
ç§ã¯SSHæ¥ç¶åŠçã®æ·±ããã±ããã«ã¯æ¬åœã«èå³ããããŸããããããã¯åèµ·åã®å ŽåãšãŸã£ããåãåé¡ã§ããå¯èœæ§ããããŸãã
åèµ·åãå£ããïŒAWSäžã®ææ°ã®Ubuntu 16.04ãFabric == 1.12.0ïŒããå¥ã®æ¹æ³ã§çºçããŸããã ç§ã«ãšã£ãŠããã¯ãã æããŸãïŒ
Fatal error: sudo() received nonzero return code -1 while executing!
Requested: reboot
Executed: sudo -S -p 'sudo password:' /bin/bash -l -c "reboot"
ã¿ãŒããã«ã§sudo reboot
ãæåã§å®è¡ãããšåäœããŸãïŒãã¹ããåèµ·åããŸãïŒã
泚ç®ã«å€ãããããããŸããïŒ
$ readlink /sbin/reboot
/bin/systemctl
$ readlink /sbin/shutdown
/bin/systemctl
ãããŠããäžã€ã®å¥åŠãªããšã åèµ·åã³ãŒããaws-cliã䜿çšããããã«å€æŽããåŒã³åºãåŸïŒçŽ1ç§ããããéåæã®ããã§ãïŒã sudo('add-apt-repository --yes ppa:nginx/stable')
ãå®è¡ããŸãã åžžã«æ©èœããŠããŸããããåèµ·ååŸã-1ãè¿ãããŸããã
sudo: add-apt-repository --yes ppa:nginx/stable
Fatal error: sudo() received nonzero return code -1 while executing!
Requested: add-apt-repository --yes ppa:nginx/stable
Executed: sudo -S -p 'sudo password:' /bin/bash -l -c "add-apt-repository --yes ppa:nginx/stable"
次ã«ã fabric.network.disconnect_all()
è¿œå ããŠãåæ¥ç¶ãããã¡ããªãã¯ãäœæããããšããŸããã ãã®çµæããã¹ã¯ãŒããèŠæ±ãããŸããïŒãªã??ïŒïŒ
[...] sudo: add-apt-repository --yes ppa:nginx/stable
[...] Login password for 'ubuntu':
ãããŠãåèµ·ååŸã«time.sleep(60 * 3)
ãè¿œå ããåŸã«ã®ã¿æ©èœãå§ããŸããã ããã¯æããã«è²§åŒ±ãªãã³ããšã€ãã§ãããä»ã§ã¯ãã¹ã¯ãŒãã®åé¡ãé©åã«åŠçããæ¹æ³ã«æžæã£ãŠããŸãã ãã®åé¡ã«é¢é£ããŠããããã§ãã
åé¡ã¯ãã³ãã³ãã®ã¹ããŒã¿ã¹ãsshæ¥ç¶ãä»ããŠæ»ãåã«ããåèµ·åãããéããããå Žåãããããšã®ããã§ãã
ïŒãã³ãïŒçµæãšããŠsshæ¥ç¶ãããªãŒãºããŠããå ŽåïŒ \n~.
å¥åenterãtildeãperiodãšå
¥åããŸãããããããã©ã«ãã®sshãšã¹ã±ãŒãæåã§ãããsshã®åæã³ãã³ãã§ããctrl-ãè©Šãã ãã®å ŽåcãŸãã¯ctrl-dã®å Žåãsshã¯ãããå察åŽã§å®è¡ãããŠããããã»ã¹ã«æž¡ãããšããŸããïŒ
1ã€ã®è§£æ±ºçã¯ã shutdown -r +1
ã䜿çšããããšã§ããããã«ããã次ã®1åéã®åèµ·åãã¹ã±ãžã¥ãŒã«ãããèµ·åãéå§ããããŸã§1åéåŸ
ã£ãŠãããåæ¥ç¶ã®è©Šè¡ãéå§ãããŸãã 確ãã«ã1ååŸ
ã€ã®ã¯çŽ æŽãããããšã§ã¯ãããŸããã
è©ŠããŠã¿ãããããŒãªããšïŒ shutdown -r +0
ã¯reboot
ãšåçã§ããã¯ãã§ãããVirtualBoxã§å®è¡ãããŠããUbuntu-16.04ã®éå®ãã¹ãã§ã¯ãæ°åã®1ç§é·ããªãåŸåãããã次ã®ããã«è¡šç€ºãããŸãæåsshã»ãã·ã§ã³ãåæããçŽåã®ã·ã§ã«ããã³ããã
ããã¯ããããïŒ1444ã®éè€ã§ã
initããŒã¢ã³ãupstartã«åãæ¿ããããå Žåãåèµ·åã¯æåŸ ã©ããã«æ©èœããŸãã systemdãsshdãããã«æ®ºããŠããããã§ãã
Debian / Ubuntuã®systemdããã±ãŒãžã«ãã°ããããã·ã£ããããŠã³æã«ãSSHãµãŒãã¹ã®åã«ãããã¯ãŒã¯ãµãŒãã¹ã匷å¶çµäºããŠããã¹ãŠããã³ã°ããŸããã
ææ°ã®ãã€ã³ããªãªãŒã¹ã§ä¿®æ£ãããŸããã Ubuntuããã±ãŒãžã®ã¹ããŒã¿ã¹ãããããªãã
Ubuntuã®ãã°ãå ±åããŸããïŒ
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1645002
äžéšã®ã¹ã¯ãªããã§ã®rebootïŒïŒã®äœ¿çšã«é¢ããåé¡ããããŸããã ãã¹ã¯ãŒãã§æ¥ç¶ãããšåèµ·åãæ£ããæ©èœããããšãããããŸããããkeyfile-authenticationã䜿çšãããšãæ¥ç¶ããã³ã°ã¢ããããŸããïŒåèµ·åãå®è¡ãããŸããïŒã
ubuntuã®ãã°https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1645002ã¯ã16.10ã§ä¿®æ£æžã¿ãšããŠããŒã¯ãããŠã
ç§ã®çŸåšã®åäœã§ã¯ãparamiko / fabricã¯sshæ¥ç¶ãéããããããšãå³åº§ã«æ€åºããŸãããparamiko / fabricãåèµ·åã³ãã³ãã®å®äºã確èªããåã§ãã å°ãªããšããå ã®ã¬ããŒãã®ããã«ç¡æéã«ãã³ã°ããããšã¯ãããŸããã
Fatal error: sudo() received nonzero return code -1 while executing!
...
Aborting.
ãã¬ãŒã³ãªreboot()
ã¯ãAWââSEC2ãšããŒã«ã«ã®virtualboxVMã«å¯Ÿããããã€ãã®ãã¹ãã§äžè²«ããŠãããè¡ããŸããã ïŒç§ã¯åžžã«ããŒãã¡ã€ã«èªèšŒã䜿çšããŠããŸãããïŒ
äžèšã®è©³çŽ°ãªãã§ææ¡ããããã«ãçããŠãšã¬ã¬ã³ããªåé¿çãèŠã€ããŸããã
reboot(command="shutdown -r +0")
ããã¯ç§ã«ãšã£ãŠæåŸ ã©ããã«æ©èœããŸããïŒAWSEC2ãšããŒã«ã«virtualboxVMã«å¯Ÿããç§ã®å°æ°ã®ãã¹ãã§ã¯ããã¹ãŠææ°ã®ubuntu 16.04ãå®è¡ããŠããŸãïŒã ãshutdown-rnowãã¯ãrebootãã®ããã«åäœããæ©èœããŠããªãããã«èŠããããšã«æ³šæããŠãã ããã
freebsdãšopenbsdã®ããã¥ã¢ã«ããŒãžããã£ãšèŠãŠã¿ããšããããããã®ãã©ã¡ãŒã¿ããµããŒãããshutdownã³ãã³ããããããã§ãã ã³ãã³ããshutdown-r + 0ãã¯ããåèµ·åããæ©èœããã»ãšãã©ãã¹ãŠã®UNIXã·ã¹ãã ã§æ©èœãããšæããŸãã ãããã£ãŠãããã©ã«ãã®ã³ãã³ããå€æŽããããããã¥ã¡ã³ããæŽæ°ãããããããšãæ€èšã§ããŸãã ïŒããããæåã«BSDã·ã¹ãã ã§ã®ãã¹ãã®ã¬ããŒããèŠãããšæããŸããïŒ
shutdown -r +0
ã¯ç§ãã¡ã«ãšã£ãŠååã§ã¯ãããŸããã åèµ·åã¯æåã¿ã€ã ã¢ãŠããåãå
¥ããªãããã次ã®ãããªããšãè©ŠããŸããã
try:
sudo("shutdown -r +0", timeout=300)
except NetworkError:
pass
# in case the sudo times out during reboot
sleep(15)
ãã®ãã¹ãŠã®æãæ¯ã£ãŠããã«ããããããã次ã®ã³ãã³ãã¯ç¡æéã«ãã³ã°ããŸãã æ¥ç¶ããŒã«ããããæ¥ç¶ãä¿æïŒããã³äœ¿çšïŒããŠããå¯èœæ§ã¯ãããŸããïŒ ãããããªããåé¿çã¯ãããŸããïŒ æ¥ç¶ã¬ãã«ã®ã¿ã€ã ã¢ãŠããäžæçã«æžããããšã¯ã§ããŸããïŒ
å®éã reboot()
ããã«ãæ¢åã®æ¥ç¶ã眮ãæããå¿
èŠããããŸãã
https://github.com/fabric/fabric/blob/1.13.2/fabric/operations.py#L1289 -L1294
å€ãåé¡ã埩掻ãããŠç³ãèš³ãããŸããããLXCã³ã³ãããåèµ·åããããšãããšãã«ãã®åé¡ãçºçããããšã確èªã§ããŸãã @ploxilnã®command="shutdown -r +0"
ã®äœ¿çšã«é¢ããææ¡ã¯ãç§ãã¡ã«ãšã£ãŠã¯ããŸããããŸããã
bashãã€ã³ã¹ããŒã«ãããFreeBSD11.1ã®æ°èŠã€ã³ã¹ããŒã«ã§ãã®ãšã©ãŒã確èªããïŒ
reboot(wait=1)
çµæïŒ
Fatal error: sudo() received nonzero return code -1 while executing!
Requested: reboot
Executed: sudo -S -p 'sudo password:' /usr/local/bin/bash -l -c "reboot"
Aborting.
Traceback (most recent call last):
âŠ
raise env.abort_exception(msg)
hosts.FabricException: sudo() received nonzero return code -1 while executing!
@ ambsw-technologyãš@ploxilnã®ã³ã¡ã³ããèªãã åŸãç©äºãé²ããããã«ãããå¿ èŠã«ãªã
sudo('shutdown -r +0')
time.sleep(30)
fabric.state.connections.connect(env.host_string)
åèãŸã§ã«ãããã¯18.04.2LTSãµãŒããŒã«å¯ŸããŠãèŠãããŸãã
ããã«å¯Ÿããä¿®æ£ã¯ãããŸããïŒ 16.04ã§ãåé¡ãçºçãã
æãåèã«ãªãã³ã¡ã³ã
ubuntuã®ãã°https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1645002ã¯ã16.10ã§ä¿®æ£æžã¿ãšããŠããŒã¯ãããŠã
ç§ã®çŸåšã®åäœã§ã¯ãparamiko / fabricã¯sshæ¥ç¶ãéããããããšãå³åº§ã«æ€åºããŸãããparamiko / fabricãåèµ·åã³ãã³ãã®å®äºã確èªããåã§ãã å°ãªããšããå ã®ã¬ããŒãã®ããã«ç¡æéã«ãã³ã°ããããšã¯ãããŸããã
ãã¬ãŒã³ãª
reboot()
ã¯ãAWââSEC2ãšããŒã«ã«ã®virtualboxVMã«å¯Ÿããããã€ãã®ãã¹ãã§äžè²«ããŠãããè¡ããŸããã ïŒç§ã¯åžžã«ããŒãã¡ã€ã«èªèšŒã䜿çšããŠããŸãããïŒäžèšã®è©³çŽ°ãªãã§ææ¡ããããã«ãçããŠãšã¬ã¬ã³ããªåé¿çãèŠã€ããŸããã
ããã¯ç§ã«ãšã£ãŠæåŸ ã©ããã«æ©èœããŸããïŒAWSEC2ãšããŒã«ã«virtualboxVMã«å¯Ÿããç§ã®å°æ°ã®ãã¹ãã§ã¯ããã¹ãŠææ°ã®ubuntu 16.04ãå®è¡ããŠããŸãïŒã ãshutdown-rnowãã¯ãrebootãã®ããã«åäœããæ©èœããŠããªãããã«èŠããããšã«æ³šæããŠãã ããã
freebsdãšopenbsdã®ããã¥ã¢ã«ããŒãžããã£ãšèŠãŠã¿ããšããããããã®ãã©ã¡ãŒã¿ããµããŒãããshutdownã³ãã³ããããããã§ãã ã³ãã³ããshutdown-r + 0ãã¯ããåèµ·åããæ©èœããã»ãšãã©ãã¹ãŠã®UNIXã·ã¹ãã ã§æ©èœãããšæããŸãã ãããã£ãŠãããã©ã«ãã®ã³ãã³ããå€æŽããããããã¥ã¡ã³ããæŽæ°ãããããããšãæ€èšã§ããŸãã ïŒããããæåã«BSDã·ã¹ãã ã§ã®ãã¹ãã®ã¬ããŒããèŠãããšæããŸããïŒ