uoz 作業日記

様々な作業の記録を共有するブログです。

capistrano-unicorn-nginxで、 Failed to restart unicorn_xxxxxx_production.service: Interactive authentication required.

azureのubuntu VMrailsアプリをデプロイしてる。

はまった

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/を見てみると、既に同様の設定が書かれていた

にも関わらず、パスワードを要求されていることになる

未解決!

結局未解決!

sshログインしてsudoしてとりあえず立ち上げた

できた!

結局、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使うの諦めようかな