mercurialのpush(ssh)で複数のコマンドを実行する
更新 19/02/22 今日も sudoerは後で書いているルールが優先 にハマりました
特定ファイルのコピーを含めたpushを実施しているのですが、 パスワード入力が大変なので、工夫してみました。
From:
scp file host://path/to/deploy/file hg push ssh host "sudo systemctl restart my.service"
To:
tar cf - file | ssh -t -M host "tar xvf - -C /path/to/deploy" hg push -e "ssh -t -S host" ssh -t -S host host "sudo /bin/systemctl restart my.service"
4. hostのsudoersにNOPASSWDを設定する
これが一番ハマったんですが、 sudoerは後で書いているルールが優先 なんで こう書いてください:
%sudo ALL=(ALL:ALL) ALL ... %sudo ALL=NOPASSWD: /bin/systemctl restart my.service
こう書いてはだめです:
%sudo ALL=NOPASSWD: /bin/systemctl restart my.service ... %sudo ALL=(ALL:ALL) ALL
わかったら簡単なことなんですけど、ハマりました。
あと、 sudo visudo してからしばらくの間は、 パスワード入力しなくてもsudoできてしまうので、それが問題の発覚を送らせました。
visudoする端末と、sudo実験する端末は分けた方がいいですね。
コメント
Comments powered by Disqus