「[CentOS7][Rundeck] Rundeck2.5.3 をインストールする」 の続きです。
Rundeck がインストールできたので、さっそく、使ってみます。
Rundeckで、まず、最初にやることは、プロジェクトの作成です。
- GUI: HTML ベースのグラフィカルなコンソール
- CUI: Shell ツール
(ユーザマニュアル 参照)
さらに Rundeck にはサーバーのプログラムとやり取りできる WebAPI も用意されていす。
ブラウザでコンソールを開いてログインすると、初期状態ではプロジェクトが無いので下図のように表示されます。
[New Project ] をクリックします。
[Project Name] を入力します。
他のパラメータは、とりあえずデフォルトでOKです。後で設定を変えられます。
画面を下方向にスクロールして、[Create] をクリックすると、プロジェクトが作成されます。
プロジェクトの作成が成功すると、下図のように表示されます。
赤枠で示した場所にプロジェクト名が表示され、ここをクリックすると他のプロジェクトを選択したり、新しいプロジェクトを作成するためのメニューが表示されます。
赤枠で示した場所をクリックすると、プロジェクトの一覧が表示されます。
プロジェクトのパラメータ設定や、削除をしたい場合は、[Configure]をクリックします。
[Delete Project]タブをクリックして、[Delete this Project] をクリックすると、プロジェクトを削除できます。
さらに Rundeck にはサーバーのプログラムとやり取りできる WebAPI も用意されていす。
(Rundeck API 参照)
今回は、GUI、CUI、WebAPIを使って、プロジェクトの作成と削除をしてみます。
GUIでプロジェクトを作成
ブラウザでコンソールを開いてログインすると、初期状態ではプロジェクトが無いので下図のように表示されます。
[New Project ] をクリックします。
[Project Name] を入力します。
他のパラメータは、とりあえずデフォルトでOKです。後で設定を変えられます。
画面を下方向にスクロールして、[Create] をクリックすると、プロジェクトが作成されます。
プロジェクトの作成が成功すると、下図のように表示されます。
赤枠で示した場所にプロジェクト名が表示され、ここをクリックすると他のプロジェクトを選択したり、新しいプロジェクトを作成するためのメニューが表示されます。
赤枠で示した場所をクリックすると、プロジェクトの一覧が表示されます。
プロジェクトのパラメータ設定や、削除をしたい場合は、[Configure]をクリックします。
[Delete Project]タブをクリックして、[Delete this Project] をクリックすると、プロジェクトを削除できます。
CUIでプロジェクトを作成
Rundeck をインストールしたサーバに root でログインし、 rundeck ユーザにスイッチします。
下記のようにコマンドを実行すると、"sandbox02" という名称のプロジェクトが作成されます。
[rundeck@centos7 ~]$ rd-project -a create -p sandbox02 Project was created: sandbox02
プロジェクトの設定変更や削除は、GUIで行います。
コマンドの詳細は下記URLを参照してください。
WebAPIでプロジェクトを作成
WebAPIを実行するには認証する必要があります。
認証しないでWebAPIを実行すると以下のようなエラーになります。
<result error='true' apiversion='13'><error code='unauthorized'><message>(unauthenticated) is not authorized for: /api/1/projects</message></error></result>トークンを使用する方法は難しそうなので、今回はパスワード認証を試します。
以下のようにコマンドを実行して admin でログインし、cookie のセッションIDをファイルに保存します。
[rundeck@centos7 rundeck]$ curl -s -L -c /tmp/cookies -b /tmp/cookies -d j_username=admin -d j_password=admin http://localhost:4440/j_security_check > /dev/null/tmp/cookies を見ると、以下のようにセッションIDが保存されています。
[rundeck@centos7 rundeck]$ cat /tmp/cookies # Netscape HTTP Cookie File # http://curl.haxx.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. localhost FALSE / FALSE 0 JSESSIONID bl7b9lk5rwz2lpp9brjte5cy 10.1.0.80 FALSE / FALSE 0 JSESSIONID 1vdzooskdoirmee5cube3tvo5このcookieを指定して、WebAPIを実行します。 プロジェクトの一覧を表示してみます。
[rundeck@centos7 rundeck]$ curl -b /tmp/cookies http://localhost:4440/api/1/projects <result apiversion="13" success="true"> <projects count="1"> <project> <name>sandbox02</name> <description></description> </project> </projects> </result>プロジェクトが1つあるのがわかります。
新規で "sandbox03" プロジェクトを作成してみます。リクエストは XML形式とJSON形式2つありますが、今回は、JSON形式を試します。
[rundeck@centos7 rundeck]$ curl -b /tmp/cookies -H 'Content-Type: applion' -X POST -d '{ "name": "sandbox03" }' http://localhost:4440/api/11/projects {"url":"http://10.1.0.80:4440/api/13/project/sandbox03","name":"sandbox03","description":"","config":{"project.name":"sandbox03","project.ssh-authentication":"privateKey","service.NodeExecutor.default.provider":"jsch-ssh","resources.source.1.config.includeServerNode":"true","resources.source.1.config.generateFileAutomatically":"true","resources.source.1.config.file":"/var/rundeck/projects/sandbox03/etc/resources.xml","project.ssh-keypath":"/var/lib/rundeck/.ssh/id_rsa","service.FileCopier.default.provider":"jsch-scp","resources.source.1.type":"file"}}実行結果は、プロジェクトのパラメータがJSON形式で表示されます。
プロジェクト一覧を表示すると、sandbox03 が表示されます。
[rundeck@centos7 rundeck]$ curl -b /tmp/cookies http://localhost:4440/api/1/projects <result success='true' apiversion='13'> <projects count='2'> <project> <name>sandbox02</name> <description></description> </project> <project> <name>sandbox03</name> <description></description> </project> </projects> </result>こんどは、sandbox03 プロジェクトを削除して、一覧表示してみます。
[rundeck@centos7 rundeck]$ curl -b /tmp/cookies -X DELETE http://localhost:4440/api/11/project/sandbox03 [rundeck@centos7 rundeck]$ curl -b /tmp/cookies http://localhost:4440/api/1/projects <result success='true' apiversion='13'> <projects count='1'> <project> <name>sandbox02</name> <description></description> </project> </projects> </result>sandbox03 プロジェクトが削除されました。