azureのubuntu VMにrailsアプリをデプロイしてる。
はまった
cap production deploy
したら、unicornを立ち上げるあたり、
PATH=/opt/ruby/bin:$PATH SECRET_KEY_BASE=xxxxxxxxx RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.5 /usr/bin/env service unicorn_xxxxx_production restart
ってコマンドを実行しているあたりで表記のように怒られる
同じコマンドをsshログインして実行すると、"Authentication is required to manage system services or other units."とか言われて、確かにユーザのパスワードをいれさせられる....
権限がないんだ
こういう感じだろうsuperuser.com
はまりまくる
Single server setup · capistrano-plugins/capistrano-unicorn-nginx Wiki · GitHub
公式ページをよくみたら、
Deployer user on the server should have passwordless sudo enabled. Setting this should be pretty straightforward (google if not sure how).
ッて書いてある
ここに書いてあるように
linux - netctl start asks for root password - Super User
sudo visudo
して
azureuser ALL=(ALL) NOPASSWD: ALL
を追記した...
が効かない。以前としてぱすわーどをきかれる
visudoの最後の行に書けというアドバイスもみたのでやってみたが、効かない
Linux - sudo でパスワード要求しない! - mk-mode BLOG
これを見て、/etc/sudoers.d/を見てみると、既に同様の設定が書かれていた
にも関わらず、パスワードを要求されていることになる
できた!
結局、visidoで
azureuser ALL=(ALL) NOPASSWD: /usr/sbin/service
ってふうにサービス実行に限ってnopasswdにしてやればいけたようだ。(ファイルの最後で)
でも、unicornは再起動できてもnginxが起動しなくなった
PATH=/opt/ruby/bin:$PATH SECRET_KEY_BASE=xxxxxxxxx RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.5 /usr/bin/env sudo /etc/init.d/nginx reload
上記コマンドが
DEBUG [0cf29b60] sudo DEBUG [0cf29b60] : DEBUG [0cf29b60] no tty present and no askpass program specified
みたいに出ておこられる
だめだー
そもそも
[ubuntu] Starting service without password
NOPASSWDってsudo コマンドの後にパスワードを入れなくていいって意味なの?
じゃあsudoなしでserviceコマンドを実行できるようにするにはどうしたらいいんだ
capstrano-unicorn-nginx使うの諦めようかな