λ΄μ₯ λ reboot()
ν¨μλ Ubuntu 14.04 λ° FreeBSD 10.x νΈμ€νΈμμ μλ²½νκ² μλνμ§λ§ Ubuntu 16.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()
(리λ
μ€κ° μλ Fab)μ λ§€μ° κΈ°λ³Έμ μ
λλ€. λ¨μν sudo('reboot')
λ₯Ό νΈμΆνκ³ Fabricμ μΌλ° μ¬ μ°κ²° μ€μ μ μΌμμ μΌλ‘ μ‘°μ νμ¬ μ¬μνμ§ μμ μ¬λΆν
μνμ€ ν μ¬ μ°κ²°μ μ²λ¦¬ ν μ ββμμ΅λλ€. (κΈ°λ³Έκ°κ³Ό λΉκ΅νμ¬ λ§€μ° λΉ λ₯΄κ² ν¬κΈ°ν©λλ€).
https://github.com/fabric/fabric/blob/c0224a52df59821f21a8c0bd47ce15e42c2046a4/fabric/operations.py#L1244 μ°Έμ‘° -μ΄λ₯Ό μ‘°μ ν΄ λ³Ό μ μμ΅λλ€.
λν λ¨μλ₯Ό μ»μ μ μμΌλ―λ‘ Paramikoμ λ‘κΉ μ νμ±ν ν΄λ³΄μμμ€ (λ¬Έμ ν΄κ²° νμ΄μ§ νλ¨ μ°Έμ‘°-http://www.fabfile.org/troubleshooting.html).
μ¬μ€, μ°λΆν¬μ reboot
μ (λ) Fabricμ μ€ν νΈλ€λ¬ ( run
/ sudo
)μ μ’
λ£ μ½λλ₯Ό μ μΆνκ±°λ μ’
λ£νμ§ μλ κ²μ²λΌ λ€λ¦½λλ€ run
sudo
λ κΈ°λ€λ Έλ€κ° Enterλ₯Ό μΌκΉ¨λ©΄ νλ₯Όλ
λλ€.
reboot()
μ½λλ₯Ό 보면 sudo('reboot')
νΈμΆμ΄ κ²°κ΅ μ’
λ£ λ κ²μΌλ‘ μμνλ―λ‘ A) μ μ κΈ°λ€λ¦° ν B) μ¬ μ°κ²°μ μμν μ μμ΅λλ€.
Fabric μΈ‘μμ μ€νμ΄ sudo
λλ€λ μ¬μ€μ μ격μΌλ‘ 무μΈκ°κ° κ·Έ κΈ°λλ₯Ό μλ°νκ³ μμμ μλ―Έν©λλ€. μ’ μ΄μν΄. _ μλ§ _ Fabric μ체μ λ²κ·Έ μΌ μ μμ§λ§ μ격μ§μμλ λμ λμμ²λΌ λκ»΄μ§λλ€. (μΆμ : μ΄λ€ ν¨λΈλ¦ λ²μ μ΄ νμ λλμ?)
μλ±ν μκ°- timeout=
μ sudo
λ₯Ό μ€μ ν λ€μ κ·Έ μ£Όμμ except TimeoutException: pass
μ€μ ν μ μμ΅λλ€. μ΄λ κ²νλ©΄μ΄ (μ΄μν) μν©μμλ κΈ°λ³Έμ μΌλ‘ μ¬ μ°κ²°μ μλν©λλ€.
λ¨μ μ reboot
κ° μ€μ λ‘ μ€λ¨ λκ³ μμ€ν
μ΄ μ€μ λ‘ μ¬λΆν
λμ§ μλ κ²½μ°μ
λλ€. κ·Έλ¬λ μμ λ³κ²½μΌλ‘ μΈν΄ ν΄λΉ κ²½μ°μ λν΄ _ λ λμ _ μν©μ λ§λ€ μλ μμ΅λλ€. 무ν μ€λ¨μ΄ κ³μ λ°μν©λλ€. sudo
λμ μ°κ²° 루ν.
Ubuntu 16.04μμ μ λ§ μ΄μνκ³ λ³κ²½λ λμμ λ€μκ³Ό κ°μ΅λλ€. 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~.
aka enter, tilde, λ§μΉ¨νλ₯Ό μ
λ ₯ν©λλ€. μ΄κ²μ΄ κΈ°λ³Έ ssh μ΄μ€μΌμ΄ν λ¬Έμμ΄κ³ sshμ λν disconnect λͺ
λ Ήμ
λλ€. ctrl- c λλ ctrl-d, sshλ λ€λ₯Έ μͺ½μμ μ€νμ€μΈ νλ‘μΈμ€μμ΄λ₯Ό μ λ¬νλ €κ³ ν©λλ€.)
ν κ°μ§ ν΄κ²°μ±
μ shutdown -r +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 () μ¬μ©κ³Ό κ΄λ ¨λ λ¬Έμ κ°μμμ΅λλ€. μνΈλ‘ μ°κ²°νλ©΄ μ¬λΆν μ΄ μ¬λ°λ₯΄κ² μλνμ§λ§ ν€ νμΌ μΈμ¦μ μ¬μ©νλ©΄ μ°κ²°μ΄ λμ΄μ§λ κ²μ μμμ΅λλ€ (μ¬λΆν μ΄ μλ£λμμ΅λλ€).
μ°λΆν¬ λ²κ·Έ https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1645002 λ 16.10μμ μμ λ κ²μΌλ‘ νμλμμ§λ§ μμ§ 16.04μμλ μμ λμ§ μμμΌλ©° μΈμ λ°μν μ§ λΆλΆλͺ ν©λλ€.
λλ₯Ό μν΄ νμ¬ λμμ paramiko / fabricμ΄ ssh μ°κ²°μ΄ λ« νμμ μ¦μ κ°μ§νμ§λ§ paramiko / fabricμ΄ μ¬λΆν λͺ λ Ήμ΄ μλ£λμμμ νμΈνκΈ° μ μ λλ€. μ μ΄λ μλ³Έ λ³΄κ³ μ μμμ²λΌ 무기ν μ€λ¨λμ§λ μμ΅λλ€.
Fatal error: sudo() received nonzero return code -1 while executing!
...
Aborting.
Plain reboot()
μ (λ) AWS EC2 λ° λ‘컬 κ°μ μμ VMμ λν λͺ κ°μ§ ν
μ€νΈμμ μ λ₯Ό μν΄ μΌκ΄λκ² μννμ΅λλ€. (νμ ν€ νμΌ μΈμ¦μ μ¬μ©νμ΅λλ€.)
μμ μΈλΆ μ¬νμμ΄ μ μνλλ‘ μ§§κ³ μ°μν ν΄κ²° λ°©λ²μ μ°Ύμμ΅λλ€.
reboot(command="shutdown -r +0")
μμλλ‘ μλνμ΅λλ€ (AWS EC2 λ° λ‘컬 κ°μ λ°μ€ VMμ λν λͺ κ°μ§ ν μ€νΈμμ λͺ¨λ μ΅μ μ°λΆν¬ 16.04λ₯Ό μ€νν©λλ€). "shutdown -r now"λ "reboot"μ²λΌ μλνκ³ μλνμ§ μλ κ² κ°μ΅λλ€.
freebsd λ° openbsd man νμ΄μ§λ₯Ό κ°λ΅ν μ΄ν΄ 보μλλ° ν΄λΉ λ§€κ° λ³μλ₯Ό μ§μνλ μ’ λ£ λͺ λ Ήμ΄μλ κ²μΌλ‘ 보μ λλ€. "shutdown -r +0"λͺ λ Ήμ΄ "reboot"κ° μλνλ κ±°μ λͺ¨λ μ λμ€ μμ€ν μμ μλ ν κ²μ΄λΌκ³ μκ°ν©λλ€. λ°λΌμ κΈ°λ³Έ λͺ λ Ήμ λ³κ²½νκ±°λ λ¬Έμλ₯Ό μ λ°μ΄νΈ ν λ κ³ λ €ν μ μμ΅λλ€. (κ·Έλ¬λ λ¨Όμ 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κ° μ€μΉλ FreeBSD 11.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 μ£Όμμ μμ ν ν μμ μ μννκΈ° μν΄ μ΄κ²μ΄ νμνμ΅λλ€. λλ μ°λΆν¬ 16.04 LTS μλ² (Windows ν΄λΌμ΄μΈνΈμμ)μ λν΄ μ€ν μ€μ λλ€.
sudo('shutdown -r +0')
time.sleep(30)
fabric.state.connections.connect(env.host_string)
μ°Έκ³ λ‘, 18.04.2 LTS μλ²μμ μ¬μ ν μ΄κ²μ λ³Ό μ μμ΅λλ€.
μ΄κ²μ λν μμ μ¬νμ΄ μμ΅λκΉ? 16.04μμλ λ¬Έμ κ° λ°μν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ°λΆν¬ λ²κ·Έ https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1645002 λ 16.10μμ μμ λ κ²μΌλ‘ νμλμμ§λ§ μμ§ 16.04μμλ μμ λμ§ μμμΌλ©° μΈμ λ°μν μ§ λΆλΆλͺ ν©λλ€.
λλ₯Ό μν΄ νμ¬ λμμ paramiko / fabricμ΄ ssh μ°κ²°μ΄ λ« νμμ μ¦μ κ°μ§νμ§λ§ paramiko / fabricμ΄ μ¬λΆν λͺ λ Ήμ΄ μλ£λμμμ νμΈνκΈ° μ μ λλ€. μ μ΄λ μλ³Έ λ³΄κ³ μ μμμ²λΌ 무기ν μ€λ¨λμ§λ μμ΅λλ€.
Plain
reboot()
μ (λ) AWS EC2 λ° λ‘컬 κ°μ μμ VMμ λν λͺ κ°μ§ ν μ€νΈμμ μ λ₯Ό μν΄ μΌκ΄λκ² μννμ΅λλ€. (νμ ν€ νμΌ μΈμ¦μ μ¬μ©νμ΅λλ€.)μμ μΈλΆ μ¬νμμ΄ μ μνλλ‘ μ§§κ³ μ°μν ν΄κ²° λ°©λ²μ μ°Ύμμ΅λλ€.
μμλλ‘ μλνμ΅λλ€ (AWS EC2 λ° λ‘컬 κ°μ λ°μ€ VMμ λν λͺ κ°μ§ ν μ€νΈμμ λͺ¨λ μ΅μ μ°λΆν¬ 16.04λ₯Ό μ€νν©λλ€). "shutdown -r now"λ "reboot"μ²λΌ μλνκ³ μλνμ§ μλ κ² κ°μ΅λλ€.
freebsd λ° openbsd man νμ΄μ§λ₯Ό κ°λ΅ν μ΄ν΄ 보μλλ° ν΄λΉ λ§€κ° λ³μλ₯Ό μ§μνλ μ’ λ£ λͺ λ Ήμ΄μλ κ²μΌλ‘ 보μ λλ€. "shutdown -r +0"λͺ λ Ήμ΄ "reboot"κ° μλνλ κ±°μ λͺ¨λ μ λμ€ μμ€ν μμ μλ ν κ²μ΄λΌκ³ μκ°ν©λλ€. λ°λΌμ κΈ°λ³Έ λͺ λ Ήμ λ³κ²½νκ±°λ λ¬Έμλ₯Ό μ λ°μ΄νΈ ν λ κ³ λ €ν μ μμ΅λλ€. (κ·Έλ¬λ λ¨Όμ BSD μμ€ν μ λν ν μ€νΈ λ³΄κ³ μλ₯Όλ³΄κ³ μΆμ΅λλ€.)