ページ

2015年2月6日金曜日

Rundeck インストール編

インストール

Rundeckをインストールします。今回使った環境は Ubuntu Linux 14.04 です。
現在の最新版はVersion 2.4.1です。これより古い版では、コマンド実行時の出力にASCII以外の文字が含まれていると、実行結果をそのままの形で扱えませんでした。
マルチバイト文字を正しく扱うために最新版を使用しましょう。

本稿の環境

Ubuntu 14.04

準備

http://rundeck.org/downloads.html からパッケージを入手します。
Debian/Ubuntu Install
rundeck-2.4.1-1-GA.debExecute:
dpkg -i rundeck-2.4.1-1-GA.deb
ファイルのチェックサムを確認します。
% shasum rundeck-2.4.1-1-GA.deb 
5ce117bc994c6911bfbd46cc6a7f58b76e2e228f  rundeck-2.4.1-1-GA.deb

スーパーユーザになってパッケージをインストールします。
# dpkg -i rundeck-2.4.1-1-GA.deb  
Selecting previously unselected package rundeck.
(Reading database ... 58039 files and directories currently installed.)
Preparing to unpack rundeck-2.4.1-1-GA.deb ...
Unpacking rundeck (2.4.1) ...
dpkg: dependency problems prevent configuration of rundeck:
 rundeck depends on java6-runtime | java6-runtime-headless | java7-runtime | java7-runtime-headless; however:
  Package java6-runtime is not installed.
  Package java6-runtime-headless is not installed.
  Package java7-runtime is not installed.
  Package java7-runtime-headless is not installed.

dpkg: error processing package rundeck (--install):
 dependency problems - leaving unconfigured
Processing triggers for ureadahead (0.100.0-16) ...
Errors were encountered while processing:
 rundeck

残念ながらエラーになりました。

Rundeck はJavaアプリケーションであるため、Javaのランタイム環境が必要です。推奨パッケージも含め一括でインストールするため、aptitudeopenjdk-7-jreをインストールします。
# aptitude install openjdk-7-jre 
The following NEW packages will be installed:
  acl{a} at-spi2-core{a} ca-certificates-java{a} colord{a} cpp{a} 
  cpp-4.8{a} dbus-x11{a} dconf-gsettings-backend{a} dconf-service{a} 
  desktop-file-utils{a} fontconfig{a} fontconfig-config{a} 
  fonts-dejavu-core{a} fonts-dejavu-extra{a} gconf-service{a} 
  gconf-service-backend{a} gconf2{a} gconf2-common{a} gdisk{a} gvfs{a} 
  gvfs-common{a} gvfs-daemons{a} gvfs-libs{a} hicolor-icon-theme{a} 
  java-common{a} libasound2{a} libasound2-data{a} libasyncns0{a} 
  libatasmart4{a} libatk-bridge2.0-0{a} libatk-wrapper-java{a} 
  libatk-wrapper-java-jni{a} libatk1.0-0{a} libatk1.0-data{a} 
  libatspi2.0-0{a} libavahi-client3{a} libavahi-common-data{a} 
  libavahi-common3{a} libavahi-glib1{a} libbonobo2-0{a} 
  libbonobo2-common{a} libcairo-gobject2{a} libcairo2{a} libcanberra0{a} 
  libcloog-isl4{a} libcolord1{a} libcolorhug1{a} libcups2{a} libdatrie1{a} 
  libdconf1{a} libdrm-intel1{a} libdrm-nouveau2{a} libdrm-radeon1{a} 
  libexif12{a} libflac8{a} libfontconfig1{a} libfontenc1{a} libgconf-2-4{a} 
  libgconf2-4{a} libgd3{a} libgdk-pixbuf2.0-0{a} libgdk-pixbuf2.0-common{a} 
  libgif4{a} libgl1-mesa-dri{a} libgl1-mesa-glx{a} libglapi-mesa{a} 
  libgmp10{a} libgnome2-0{a} libgnome2-bin{a} libgnome2-common{a} 
  libgnomevfs2-0{a} libgnomevfs2-common{a} libgphoto2-6{a} 
  libgphoto2-l10n{a} libgphoto2-port10{a} libgraphite2-3{a} libgtk-3-0{a} 
  libgtk-3-bin{a} libgtk-3-common{a} libgtk2.0-0{a} libgtk2.0-bin{a} 
  libgtk2.0-common{a} libgudev-1.0-0{a} libgusb2{a} libharfbuzz0b{a} 
  libice6{a} libicu52{a} libidl-common{a} libidl0{a} libieee1284-3{a} 
  libisl10{a} libjasper1{a} libjbig0{a} libjpeg-turbo8{a} libjpeg8{a} 
  liblcms2-2{a} libllvm3.4{a} libltdl7{a} libmpc3{a} libmpfr4{a} 
  libnspr4{a} libnss3{a} libnss3-nssdb{a} libogg0{a} liborbit-2-0{a} 
  liborbit2{a} libpango-1.0-0{a} libpangocairo-1.0-0{a} 
  libpangoft2-1.0-0{a} libpciaccess0{a} libpixman-1-0{a} libpulse0{a} 
  libsane{a} libsane-common{a} libsecret-1-0{a} libsecret-common{a} 
  libsm6{a} libsndfile1{a} libtdb1{a} libthai-data{a} libthai0{a} 
  libtiff5{a} libtxc-dxtn-s2tc0{a} libudisks2-0{a} libv4l-0{a} 
  libv4lconvert0{a} libvorbis0a{a} libvorbisenc2{a} libvorbisfile3{a} 
  libvpx1{a} libwayland-client0{a} libwayland-cursor0{a} libx11-xcb1{a} 
  libxaw7{a} libxcb-dri2-0{a} libxcb-dri3-0{a} libxcb-glx0{a} 
  libxcb-present0{a} libxcb-render0{a} libxcb-shape0{a} libxcb-shm0{a} 
  libxcb-sync1{a} libxcomposite1{a} libxcursor1{a} libxdamage1{a} 
  libxfixes3{a} libxft2{a} libxi6{a} libxinerama1{a} libxkbcommon0{a} 
  libxmu6{a} libxpm4{a} libxrandr2{a} libxrender1{a} libxshmfence1{a} 
  libxt6{a} libxtst6{a} libxv1{a} libxxf86dga1{a} libxxf86vm1{a} 
  openjdk-7-jre openjdk-7-jre-headless{a} policykit-1-gnome{a} 
  sound-theme-freedesktop{a} tzdata-java{a} udisks2{a} x11-common{a} 
  x11-utils{a} 
The following packages will be upgraded:
  tzdata 
The following partially installed packages will be configured:
  rundeck 
1 packages upgraded, 168 newly installed, 0 to remove and 8 not upgraded.
Need to get 241 kB/83.8 MB of archives. After unpacking 257 MB will be used.
Do you want to continue? [Y/n/?] 
(中略)
Current status: 0 broken [-1], 8 updates [-1].

JREがインストールできたので、Rundeckのパッケージをインストールします。
# dpkg -i rundeck-2.4.1-1-GA.deb  
(Reading database ... 66206 files and directories currently installed.)
Preparing to unpack rundeck-2.4.1-1-GA.deb ...
Unpacking rundeck (2.4.1) over (2.4.1) ...
Setting up rundeck (2.4.1) ...
usermod: no changes
Processing triggers for ureadahead (0.100.0-16) ...

インストールできました。サービスを起動します。
# service rundeckd start
rundeckd start/running, process 58776

起動には少し時間がかかります。ログが/var/log/rundeck/service.logに出力されているので確認してみます。
# tail /var/log/rundeck/service.log 
2015-01-30 23:23:56.852:INFO:oejs.Server:jetty-7.6.0.v20120127
2015-01-30 23:23:58.750:INFO:oejw.StandardDescriptorProcessor:NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
2015-01-30 23:23:59.925:INFO:/:Initializing Spring root WebApplicationContext
INFO  BootStrap: Starting Rundeck 2.4.1-1...
INFO  BootStrap: using rdeck.base config property: /var/lib/rundeck
INFO  BootStrap: loaded configuration: /etc/rundeck/framework.properties
INFO  BootStrap: RSS feeds disabled
2015-01-30 23:24:20.216:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/,file:/var/lib/rundeck/exp/webapp/},/var/lib/rundeck/exp/webapp
2015-01-30 23:24:20.271:INFO:/:Initializing Spring FrameworkServlet 'grails'
2015-01-30 23:24:20.354:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:4440

oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:4440
が出力されていれば起動が完了しています。

古いバージョンのパッケージを使ったときに、インストール後のいくつかアクセス権の設定がおかしく、エラーが出ているかもしれません。筆者が試したときは /tmp/rundeck の所有者が root ユーザになって書き込みエラーが出ていました。正しくは rundeck ユーザが所有者であるべきですので、修正してください。
chown rundeck:rundeck /tmp/rundeckchmod 750 /tmp/rundeck

初期設定

デフォルトでは、Rundeck サービスのアクセス URL が
http://localhost:4440
になっています。ソケット自体はIN6ADDR_ANY_INIT でバインドしているため、どこからでもアクセスできるのですが、ログイン認証の後このURLにリダイレクトされてしまうため操作が継続できないと思います。

本稿では、SSH のダイナミックポートフォワードを利用して、Socks5プロキシ経由でアクセスしているため、このURLのままでも問題がないのですが、ほとんどの場合、デフォルトのままでは都合が悪いと思われます。

/etc/rundeck/rundeck-config.properties に設定がありますのでこれを修正してください。
grails.serverURL=http://localhost:4440
修正後
grails.serverURL=http://ホスト名orIPアドレス:4440

I18N

デフォルトの設定ではコマンド出力がUTF-8なマルチバイトの文字を含むと、そこが ? に置換されてしまいます。rundeckdの実行時のcharsetがUTF-8になるように、/etc/rundeck/profileで
LANG=en_US.UTF-8
export LANG
あるいは
LANG=ja_JP.UTF-8
export LANG
を設定して起動する必要があります。

注意

古い版では、そもそもマルチバイトな文字列が扱えませんでした。この問題はv2.4.1で修正されていますので、v2.4.1以上を使うようにしてください。

ログイン

初期アカウントは、ユーザ名、パスワード共に admin です。


ログインできればこのような画面が表示されるでしょう。

ユーザアカウント

認証情報は/etc/rundeck/realm.propertiesで設定します。

形式は次の通りです。
<username>:<password>[,<rolename> ...]

初期状態ではadminユーザのデフォルトパスワードは平文で書かれていますが、これを秘匿するには次のようにします。
# java -cp /var/lib/rundeck/bootstrap/jetty-all-7.6.0.v20120127.jar org.eclipse.jetty.util.security.Password username password

Rundeckの管理者マニュアルに書かれているコマンドは古いJettyのときのものなので使用できません。現在のJetty 7での方法はこちらを参照してください。
https://wiki.eclipse.org/Jetty/Howto/Secure_Passwords
MD5の形式でよければ、つぎのワンライナーでも作成できます。
printf "MD5:%s" $(read -sp "Password: " passwd; echo "$passwd") | md5sum

実行例

# java -cp /var/lib/rundeck/bootstrap/jetty-all-7.6.0.v20120127.jar org.eclipse.jetty.util.security.Password admin admin
admin
OBF:1u2a1toa1w8v1tok1u30
MD5:21232f297a57a5a743894a0e4a801fc3
CRYPT:adpexzg3FUZAk

出力の OBF:, MD5:, CRYPT: 行のいずれかを<password>として設定します。ハッシュ形式を示すOBF:, MD5:, CRYPT:の部分も必要です。

admin:MD5:21232f297a57a5a743894a0e4a801fc3,user,admin,architect,deploy,build

ファイルを変更すると、つぎの認証からは新しい値が使用されます。サービスの再起動は不要です。

SSH 鍵の作成

Rundeckがコマンド実行際に使用するデフォルトのSSH鍵を作成しておきます。
プロジェクトごとに認証に使用する鍵を指定することができますので、からなずしもこの鍵を使う必要はありません。

# mkdir /var/lib/rundeck/.ssh
# chown rundeck:rundeck /var/lib/rundeck/.ssh
# chmod go-rwx /var/lib/rundeck/.ssh
# ssh-keygen -t rsa -f /var/lib/rundeck/.ssh/id_rsa -N '' -C Rundeck
Generating public/private rsa key pair.
Your identification has been saved in /var/lib/rundeck/.ssh/id_rsa.
Your public key has been saved in /var/lib/rundeck/.ssh/id_rsa.pub.
The key fingerprint is:
83:06:12:c0:bc:29:96:b3:1b:ae:c7:f8:71:b9:53:37 Rundeck
The key's randomart image is:
+--[ RSA 2048]----+
|+..              |
| o .             |
|  = .            |
|.* . . .         |
|o o   o S        |
| o   o. E.       |
|.o+ o. . .       |
|.ooo..           |
|oo. ..           |
+-----------------+
# chown rundeck:rundeck /var/lib/rundeck/.ssh/id_rsa*

つぎはプロジェクトの作成をします。

0 件のコメント:

コメントを投稿