curlコマンド経由でTomcatにデプロイを行おうとすると403エラー

[事象]
以下の様なコマンドをシェルで実行し、Webコンソール経由のTomcatマネージャーではなく、シェルスクリプトからTomcatに対してデプロイを行おうとした。

curl --upload-file contextName.war "http://manager:password@localhost:8080/manager/text/deploy?path=/contextName&update=true"

結果、以下の様な403エラーが発生した。

(中略)
Caused by:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

[原因]
実行ユーザーにmanager-guiの権限は与えていたが、manager-scriptの権限を設定していなかった。

[対応方法]
実行ユーザーにtextベースで実行する際のユーザー権限を付与する。

<tomcat-users>
 <user username="manager" password="password" roles="manager-gui, manager-script"/>
</tomcat-users>

[蛇足]
Jenkinsを導入している環境であったため、実はシェルを使わなくてもビルド後にTomcatへデプロイする処理をJenkinsに設定してやるだけで実は良かった…。

[参考URL]
martin.podval.eu
Rocky Jaiswal | Deploying Java applications with Capistrano

詳解 Tomcat

詳解 Tomcat

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)