エンジニア成長日記

成長するにはインプットばかりでなく、アウトプットも必要である。日々の成長記録を書き留めていきたい。

CentOS6.7 minimal インストールした環境にGUIを導入する手順

概要

CentOS6.7 minimal でインストール後、OracleのOUIを利用したインストールなどでGUIが必要になる場合があります。 今回は、GNOMEデスクトップ環境を導入する手順を記述します。

インストール手順

X Windows 関連のパッケージインストール

# yum -y groupinstall "X Window System"

# yum -y groupinstall "General Purpose Desktop"

# yum -y groupinstall "Desktop" 

CUIGUI切り替え

一時的にGUIへ切り替える場合

  • Xウィンドウシステムを起動する。
# startx 

永続的にGUIへ切り替える場合

# sed -i "s/id:3/id:5/g" /etc/inittab
  • 再起動する。
# reboot
or
# shutdown -r now

GUI起動後の設定

日本語化対応

  • 日本語関連のパッケージをグループインストールする。
# yum -y groupinstall "Japanese Support"
  • システム全体の文字セットを変更する。
# vi /etc/sysconfig/i18n

補足

ランレベル

ランレベル 意味
0 システムの停止
1 シングルユーザーモード
2 マルチユーザーモードNFSなし)
3 マルチユーザーモード(テキストログイン)
4 未使用
5 マルチユーザーモード(グラフィカルログイン)
6 システムの再起動

YAMLを覚えよう

はじめに

最近、ansibelなどの設定書式で用いられる記法「YAML」について、紹介します。 YAMLは、箇条書きのように記載できるため、大変わかりやすいフォーマットです。

YAMLとは?

概要

YAML Ain’t Markup Languageの略で、構造化データの表現する記法になります。 主に以下のような用途で利用されます。

  • 設定ファイル
  • データ保存
  • データ交換

XMLとの違い

XMLYAML大きな違いは、表記方法が異なります。

XML = 開始、終了タグ()を利用した構造化データを表現。 YAML = タグの代わりに、インデントを利用した構造化データを表現。

XMLと比べ、人が見る場合に非常にわかりやすい構造で表現することが可能となります。

以下、XMLYAMLを比較すために、サンプルを記載します。

例)  書籍の一覧を表現する場合

[XML]

<books>
<book>
    <name>書籍タイトルその1</name>
    <author>山本 太郎</author>
</book>
<book>
    <name>書籍タイトルその2</name>
    <author>鈴木 一郎</author>
</book>
</books>

[YAML]

books:
- name:書籍タイトルその1
    author:山本 太郎
- name:書籍タイトルその2
    author:鈴木 一郎

公式サイト

YAMLの公式サイトは、以下になります。書式の仕様などを調べる際にお役立てください。

URL http://yaml.org

環境

今回は、YAMLを構文を確認するため、Pythonを利用します。 各バージョンは、以下のとおりです。

□ OS

[root@yaml  ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)

YAML

[root@yaml  ~]# rpm -aq |grep yaml
libyaml-0.1.6-1.el6.x86_64
libyaml-devel-0.1.6-1.el6.i686

Python

[root@yaml  ~]# python -V
Python 2.6.6

※補足

今回は、YAMLファイルとPythonを繋ぐライブラリはAnsibleで利用されている「LibYAML for Python」を使います。

項目 説明
ライブラリ名 LibYAML for Python
WEBサイト http://pyyaml.org/wiki/PyYAML
ドキュメント http://pyyaml.org/wiki/LibYAML
ダウンロード http://pyyaml.org/download/libyaml
バージョン 0.1.6
YAML対応 YAML 1.1準拠

YAMLを触ってみる。

まず、YAMLの構文に慣れてもらうため、簡単なプログラムを書いてみます。

MyYaml.ymlの作成

YAMLを記述するファイルを作成します。 拡張子は、「yml」になります。

ここでは、配列を表す記述を記載してみます。

[root@yaml  ~]# vi MyYaml.yml
[root@yaml  ~]# cat MyYaml.yml
- a
- b
- c

parse.pyの作成

記載したYAMLファイルの構文をチェックするため、Pythonのコードを記述するファイルを作成します。 拡張子は、「py」になります。 ※parseとは、構文に従って分析する、品詞を記述する、構文解析するなどの意味を持つ単語です。

[root@yaml  ~]# vi parse.py
[root@yaml  ~]# cat parse.py
#-*- coding: utf-8 -*-
# yamlを利用するための宣言
import yaml;

# MyYaml.ymlファイルを読み込み(パース)後、結果を標準出力。
print yaml.load(open('MyYaml.yml').read())

動作確認

作成したMyYaml.ymlを、parse.pyでパースして、出力結果を確認します。

[root@yaml  ~]# python parse.py
['a', 'b', 'c']

以降の章からは、「MyYaml.yml」へ記載内容と「python parse.py」を実行した結果のみを記述して、YAMLファイルの書き方を覚えていきます。

XXXXXXX            # MyYaml.ymlの編集内容記載

(結果)
[XXXXXXX]          # python parse.pyを実行した結果記載

基本的な構文を抑えよう。

YAML では、主に次の 3 つの組み合わせでデータを表現します。

  • シーケンス(Sequence) データを連続的に並べた構造を表す。 Python=配列/Java=リストと呼ばれる。

  • マッピング(Mapping) キーと値のペアを列挙する構造を表す。 Python=ハッシュ/Java=マップと呼れる。

  • スカラー(scalar) 文字列、数値、真偽値などの変数(値の入れ物)を表す。 YAMLで記述した値は、自動的にデータ型を判別する。 ※Javaのようなデータ型の宣言は必要なく、中間のライブラリ(JYaml)が自動的に判別し、値を渡してくれます。

ここでは、上記の3つの書き方を紹介します。

シーケンス(Sequence)

□ 基本書式

- d1
- d2
- d3

(結果)
['d1', 'd2', 'd3']

☆注意点☆

  • [-]の後の半角スペースは必須。
- d1
-d2    #半角スペースなし
- d3

(結果)
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~

□ 入れ子(ネスト)書式

- d1
- 
    - sd2-1
    - sb2-2
- d3

(結果)
['d1', ['d2-1', 'd2-2'], 'd3']

☆注意点☆

  • 字下げにタブ・全角空白は使えない。※半角スペース2つで記述。
- d1
- 
- sd2-1 # 字下げにタブ使用。
    - sb2-2
- d3

(結果)※エラーが発生。
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~

  • 入れ子の際、親の値は記載しない。
- d1
- d2  # 親値を記載
    - sd2-1
    - sb2-2
- d3

(結果) ※入れ子にならず、1つ配列として認識される。
['d1', 'd2 - sd2-1 - sd2-2', 'd3']

マッピング(Mapping)

□ 基本書式

key1: val1
key2: val2

(結果)
{'key2': 'val2', 'key1': 'val1'}

☆注意点☆

  • :(コロン)の後の半角スペースは必須(1つ以上)。
key1: val1
key2:val2   # 半角スペースなし

(結果)※エラーが発生。
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~

  • key:の「:(コロン)」の前に半角スペースを入れることも可。 ** インデントを揃えることが出来る。
hostname: nsw1.exzample.com 
ipv4    : 192.168.0.1  # ipv4の後に半角スペースを入れる

(結果)
{'hostname': 'nsw1.exzample.com', 'ipv4': '192.168.0.1'}

□ 入れ子(ネスト)書式

keys:
skey1: val1
skey2: val2

(結果)
{'keys': {'skey1': 'val1', 'skey2': 'val2'}}

☆注意点☆

  • 字下げにタブは使えない。半角スペース2つで記述。
keys:
skey1: val1
skey2: val2  #字下げにタブ使用。

(結果)※エラーが発生。
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~

  • 入れ子の際、親の値は記載しない。
keys: vals        # 親値を記載
skey1: val1
skey2: val2
(結果)※エラーが発生。
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~

スカラー(scalar)

□ 自動判別

  • 記載した値が自動的に判別されることを確認します。
# 文字列
str1: 文字列
str2: string

# 整数
decimal1:  123                           # 10 進数
decimal2:  1,234,567,890                 # 10 進数
octal:     0644                          # 8 進数
hexa:      0xFF                          # 16 進数

# 浮動小数点
float1:    0.05

# 真偽値 (true, yes, false, no)
bool1:     true                          # 真
bool2:     yes                           # 真
bool3:     on                            # 真
bool4:     false                         # 偽
bool5:     no                            # 偽
bool6:     off                           # 偽

# Null値 (null, ~)
null1:     ~
null2:     null

# 日付 (yyyy-mm-dd)
date:      2005-01-01

# タイムスタンプ (yyyy-mm-dd hh:mm:ss [+-]hh:mm)
stamp:     2005-01-01 00:00:00 +09:00

(結果)
{'date': datetime.date(2005, 1, 1), 'float1': 0.050000000000000003, 'bool5': False,
    'bool4': False, 'bool6': False, 'bool1': True, 'bool3': True, 'bool2': True,
    'hexa': 255, 'str2': 'string', 'str1': u'\u6587\u5b57\u5217', 'decimal2': '1,234,567,890',
    'stamp': datetime.datetime(2004, 12, 31, 15, 0), 'null1': None, 'octal': 420, 'null2': None, 'decimal1': 123}

□ 文字列変換

文字列として変換したい場合は、「"“」(ダブルコーテーション)で囲みます。

# 整数
decimal1:  123                           # 10 進数
decimal2:  1,234,567,890                 # 10 進数
octal:     0644                          # 8 進数
hexa:      0xFF                          # 16 進数

# 整数
decimal1:  "123"                           # 10 進数
decimal2:  "1,234,567,890"                 # 10 進数
octal:     "0644"                          # 8 進数
hexa:      "0xFF"                          # 16 進数

# 浮動小数点
float1:    "0.05"

# 真偽値 (true, yes, false, no)
bool1:     "true"                          # 真
bool2:     "yes"                           # 真
bool3:     "on"                            # 真
bool4:     "false"                         # 偽
bool5:     "no"                            # 偽
bool6:     "off"                           # 偽

# Null値 (null, ~)
null1:     "~"
null2:     "null"

# 日付 (yyyy-mm-dd)
date:      "2005-01-01"

# タイムスタンプ (yyyy-mm-dd hh:mm:ss [+-]hh:mm)
stamp:     "2005-01-01 00:00:00 +09:00"

(結果)
{'bool5': 'no', 'bool4': 'false', 'bool6': 'off', 'bool1': 'true',
    'bool3': 'on', 'bool2': 'yes', 'hexa': '0xFF', 'null1': '~', 'null2': 'null',
    'decimal2': '1,234,567,890', 'octal': '0644', 'date': '2005-01-01', 'float1': '0.05',
    'decimal1': '123', 'stamp': '2005-01-01 00:00:00 +09:00'}

    ※文字列変換前
    {'bool5': False, 'bool4': False, 'bool6': False, 'bool1': True,
    'bool3': True, 'bool2': True, 'hexa': 255, 'null1': None, 'null2': None,
    'decimal2': '1,234,567,890', 'octal': 420, 'date': datetime.date(2005, 1, 1),'float1': 0.050000000000000003,
    'decimal1': 123, 'stamp': datetime.datetime(2004, 12, 31, 15, 0)}

複雑な構文を抑えよう。

前章では、基本的な構文を紹介しました。 ここでは、シーケンスとマッピングを混合した書き方を紹介します。

マッピング - シーケンス

□ 基本書式

- bookname: sample1
    author: taro
- bookname: sample2
    author: jiro

(結果)
[{'bookname': 'sample1', 'author': 'taro'}, {'bookname': 'sample2', 'author': 'jiro'}]

シーケンス - マッピング

□ 基本書式

books:
    - sample1
    - sample2
authors:
    - taro
    - jiro

(結果)
{'books': ['sample1', 'sample2'], 'authors': ['taro', 'jiro']}

ブロックスタイルとフロースタイルを抑える。

YAMLの構文には、以下の2種類があります。

  • ブロックスタイル インデントを使って構造を表す書き方 1 行に収まる文字列の場合に便利。

  • フロースタイル 「{}」や「[]」を使って構造を表す書き方 複数行にわたる文字列の場合に便利。

今まで紹介した構造の書き方は、「 ブロックスタイル 」になります。 以降は、「 フロースタイル 」に構造の書換え、その違いを確認しましょう。

シーケンス(Sequence)

□ 基本書式

[d1, d2, d3]

(結果)
['d1', 'd2', 'd3']

☆注意点☆

  • [,]の後の半角スペースは必須。
[d1,d2, d3]  #d2の前の半角スペースなし

(結果)※エラーが発生。
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~ 

□ 入れ子(ネスト)書式

ネストしたい個所を[]で囲みます。

[d1, [d2-1, d2-2], d3]

(結果)
['d1', ['d2-1', 'd2-2'], 'd3']

マッピング(Mapping)

□ 基本書式

{key1: val1, key2: val2}

(結果)
{'key2': 'val2', 'key1': 'val1'}

☆注意点☆

  • :,の後の半角スペースは必須。
{key1: val1,key2:val2} # key2前の半角スペースなし

(結果)※エラーが発生。
Traceback (most recent call last):
File "parse.py", line 6, in 
~ 略 ~ 

□ 入れ子(ネスト)書式

{keys: {skey1: val1, skey2: val2}}

(結果)
{'keys': {'skey1': 'val1', 'skey2': 'val2'}}

マッピング - シーケンス

□ 基本書式

[
    {bookname: sample1, author: taro},
    {bookname: sample2, author: jiro}
]

(結果)
[{'bookname': 'sample1', 'author': 'taro'}, {'bookname': 'sample2', 'author': 'jiro'}]

シーケンス - マッピング

□ 基本書式

{
    books: [sample1, sample2],
    authors: [taro, jiro]
}

(結果)
{'books': ['sample1', 'sample2'], 'authors': ['taro', 'jiro']}

改行を含むデータを扱ってみよう

YAMLの特性として改行すると次のデータになってしまいます。 改行を利用する場合は、下記の記号を利用します。

  • |(パイプ) ** 改行を保存することが可能。

  • (リダイレクト) ** 半角スペースに置き換える事が可能。

|(パイプ)を利用してみる。

key: |
    v
    a
    l

(結果)
{'key': 'v\na\nl\n'}    #改行コード「\n」が保存されます。

>(リダイレクト)を利用してみる。

key: >
    v
    a
    l

(結果)
{'key': 'v a l'}    #改行コードが半角スペースに変換されます。

まとめ

もう、お分かりの通り

%{color: red; font-size: 20px;}YAML% では、 %{color: red; font-size: 20px;}インデント%%{color: red; font-size: 20px;}重要% です。

途中でも紹介しましたが、YAMLファイルを作成する場合は、次の注意点は覚えておきましょう!!

  • 「-(ハイフン)」,「:(コロン)」,「,(カンマ)」の後には、1文字以上の半角スペースを入れること。
  • タブや全角スペースによるインデントは禁止。

おわりに…

今回は、Ansibleの構文を書くために必要な知識を覚えて頂くことを目的としたため、紹介しませんでしたが、他にもYAMLでは、次のようなことも出来ます。 ※Ptyhon(LibYAML for Python)で対応していない物もあり。

  • アンカー(&)とエイリアス() ** アンカー(&)で記載した構文を、エイリアス()で複製する。
  • …(ピリオド3つ) ** 指定した以降の処理は、スキップする。
  • —(ハイフン3つ) ** ドキュメントの終始を表す。

etc…

これらの情報は、以下のサイト(Ruby + YAML)がまとまっておりました。

http://magazine.rubyist.net/?0009-YAML

良ければ、ご参照ください。

Subversion 1.8インストール手順

はじめに

CentOS6.5では、「1.6」が標準インストールされているが、1.6は、サポートが終了している+便利機能が追加されていることもあり、 最新の「1.8」を利用します。

最新の1.8をインストールする方法は色々とありますが、今後のメンテも考慮し、米WANDiscoが公開していCentOS6向けのリポジトリの設定を追加します。

subversionでは、リポジトリへ接続するプロトコルとして5つ(file,svn,svn+ssl,http,https)用意されていますが、今回は、sslを利用した接続は記載していません。

また、プロセスは必要に応じて起動するため、スーパーサーバー(xinetd)を用いて構築します。

構成について

OS

実行ユーザ

  • root権限を持つ任意のユーザ

SW

ソフトウェア バージョン 備考
Subversion  1.8.9
xinetd    2.3.14
mod_dav_svn 1.8.14-1 apache連携

インストール作業

サービス名の設定

  • svnserve(3603)を「/ete/service」ファイルに追記する。
# vi /etc/services
(以下、変更)
  542 svnserve        3690/tcp                        # Subversion
  543 svnserve        3690/udp                        # Subversion

ポート開放

* svnserve(3603)ポートを追加する。
vi /etc/sysconfig/iptables
(以下、追記)
-A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT            #「svn://」経由用
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT              #「http://」経由用

リポジトリ追加

WANDiscoリポジトリ

  • 設定ファイルを作成する。
# vi /etc/yum.repos.d/wandisco.repo
(以下、追記)
[wandisco-svn]
name=WANDisco Repository - snv-1.8 centos6
baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-WANdisco
  • GPGキーを追加する。
rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
yum repolist --enablerepo=wandisco-svn
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
~略~
wandisco-svn         WANDisco Repository - snv-1.8 centos6                        171
repolist: 8,364

パッケージインストール

Subversion

  • インストールする。
# yum install -y --enablerepo=wandisco-svn subversion
  • バージョンを確認する。
# svn --version
svn, version 1.8.14 (r1692801)

xinetd

  • インストールする。
# yum install -y xinetd
  • バージョンを確認する。
# xinetd -version
xinetd Version 2.3.14 libwrap loadavg

mod_dav_svn

  • apachemavenを連携させるため、モジュールをインストールする。
# yum install  --enablerepo=wandisco-svn mod_dav_svn

Subversion設定

動作確認のため、新規にリポジトリを作成します。

リポジトリ作成

# mkdir /var/lib/svn
# svnadmin create /var/lib/svn/sample

各種設定

# vi svnserve.conf
(以下、修正差分)
    12,13c12,13
    < anon-access = none    #匿名のアクセスを許可するかどうかを設定。(read,write,none)
    < auth-access = write    #認証されたユーザのアクセス権を設定。(read,write,none)
    ---
    > # anon-access = read
    > # auth-access = write
    20c20
    < password-db = passwd     #ユーザとパスワードが記述されたファイルへのパスを設定。(相対パスor絶対パス)
    ---
    > # password-db = passwd
    27c27
    < authz-db = authz
    ---
    > # authz-db = authz
    32c32
    < realm = Proteus ★説明★ Repository
    ---
    > # realm = My First Repository
  • リポジトリへアクセスするユーザを追記する。※書式:ユーザ名 = パスワード
# vi passwd
(以下、修正)
7,11d6
< taro = taro01
< jiro = jiro01
  • ログインユーザに権限を与える。
# vi authz
~省略~
# diff authz authz_20130517
24,29d23
< developer = taro
< viewer = jiro
<
< [/]
< @developer = rw
< @viewer = r

ディレクトリのユーザ・グループ権限変更

  • ユーザ「apache」・グループ「apache」に変更する。
# pwd
/var/lib/svn
# ll sample
~略~
drwxrwxr-x 6 root   root  4096  5月 17 10:58 sample
# chown -R apache. apache sample
  • 「conf」ディレクトリを、ユーザ「root」・グループ「root」に変更する。
# ll sample
drwxrwxr-x 6 apache clsys 4096  5月 17 10:58 sample

# chown -R root.root sample/conf
# ll sample
合計 48
drwxrwxr-x 2 apache clsys 4096  5月 17 10:58 locks
drwxrwxr-x 2 apache clsys 4096  5月 17 10:58 hooks
-r--r--r-- 1 apache clsys    2  5月 17 10:58 format
drwxrwsr-x 6 apache clsys 4096  5月 17 10:58 db
-rw-rw-r-- 1 apache clsys  229  5月 17 10:58 README.txt
drwxrwxr-x 2 root   root  4096  5月 17 11:07 conf

xinetd設定

  • svnserve用の設定ファイルを作成する。
# vi /etc/xinetd.d/svnserve
(以下、設定)
# default: on
# svn configuration
service svnserve
{
    disable = no
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    server = /usr/bin/svnserve
    server_args = -i --root /var/lib/svn
}
  • サービス再起動する。
# service xinetd restart
  • 設定が反映されていることを確認する。
# chkconfig --list
xinetd ベースのサービス:
~略~
        svnserve:       on

http+svn連携設定

  • 設定ファイルに接続情報を記載する。
vi /etc/httpd/conf.d/subversion.conf
~略~
# ModDavSvn Configuration For Maven2

  DAV svn
  SVNPath /var/lib/svn/maven2
#  AuthType Basic       #認証種類
#  AuthName "SVN Maven2"    #認証名
#  AuthUserFile /opt/WANdisco/apache22/conf/svn.passwd  #パスワードファイル場所
#  Require valid-user   #ユーザ+パスワード一致。

動作確認

ansibleで鍵認証を使う方法。

はじめに

ansibleは、ssh経由で対象のサーバを操作します。

そのため、標準はパスワード認証ですが、セキュリティ的に好ましくありません。できれば、鍵認証で操作することをお勧めします。

そこで、鍵の作成から公開鍵の配布の仕方を書いてみました。

よく公開鍵の配布を「.ssh/authorized_keys」を手書きで書き換える人がいますが、「ssh-copy-id」コマンドを使った方が楽だと思ってます。

手順

鍵作成

# ssh-keygen -t rsa -b 2048

公開鍵配布

# ssh-copy-id -i ~/.ssh/id_rsa.pub user@XX.XX.XX.XX
user@XX.XX.XX.XX's password:
Now try logging into the machine, with "ssh 'user@XX.XX.XX.XX'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

動作確認

# ansible XX.XXX.XX.XX -m ping

XX.XXX.XX.XX | success >> {
"changed": false,
"ping": "pong"
}

OpenDaylight Test VM(odl-test-desktop-4.ova)のインストール手順

はじめに

今回は、SDNコントローラーの一つである「OpenDaylight」を簡易にインストールする手順を紹介します。

1から必要なパッケージをインストールする方法もありますが、当記事では、あらかじめ必要なパッケージがまとまっている試験用の「Test VM(odl-test-desktop-4.ova)」を、VMware ESXiへ導入する手順になります。

構成

Test VM(odl-test-desktop-4.ova)を導入すると、以下の環境がインストールされ、OpenDaylightをすぐに体験することができます。

VM disk

  • Ubuntu 14.04 desktop
  • 20GB HDD,
  • ova file size=4GB

パッケージ

  • Java 1.7 OpenJDK,
  • OpenDaylight Helium-SR1.1
  • POSTMAN plugin with some example collections
  • mininet 2.1.0
  • Open vSwitch 2.0.2
  • CPqD ofsoftswitch13
  • Wireshark 1.12.2 with OF1.3 dissectors
  • Netopeer Netconf server
  • integration test repository
  • Robot framework 2.8.6
  • RIDE 1.3,CBench

インストール手順

ダウンロード

公式サイトより、ダウンロードします。

# wget https://wiki.opendaylight.org/images/HostedFiles/odl-test-desktop-4.ova
# file odl-test-desktop-4.ova

解凍

ダウンロードしたファイルを解凍します。

# tar xvf odl_test_server_2.ova

編集

odl-test-desktop-4.ovaを、VMware ESXiに導入する場合は、ひと手間かける必要があります。 公式サイトでも記載※1.されていますが、OVAファイルを開き、次のように記述を削除しなければいけません。

vi odl-test-desktop-4.ova

(以下、削除)
virtualbox-2.2 

圧縮

基のOVAファイルに圧縮します。

# tar cvf odl-test-desktop-4.ova odl-test-desktop-4.ovf odl-test-desktop-4-disk1.vmdk

インスタンス作成

vSphere Client上で、「ファイル」⇒「OVFテンプレートのデプロイ」をクリックし、再圧縮した「odl-test-desktop-4.ova」を指定します。 ターミナルの指示に従い、インスタンスを作成します。

f:id:abcmark2010:20151212150152j:plain

f:id:abcmark2010:20151212150207j:plain

f:id:abcmark2010:20151212150208j:plain

f:id:abcmark2010:20151212150209j:plain

f:id:abcmark2010:20151212150210j:plain

f:id:abcmark2010:20151212150211j:plain

仮想マシンの起動

デプロイが完了した仮想マシン(odl-test-desktop-4.ova)を選択後、「右クリック」 - 「電源」 - 「パワーオン」 をクリックします。

ログイン

起動完了後、コンソールを開き、ユーザ(mininet)/パスワード(mininet)を入力し、ログインします。

【ログイン前】

f:id:abcmark2010:20151212150213j:plain

【ログイン後】

f:id:abcmark2010:20151212150214j:plain

日本語化対応

今回は、Mozc(モズク)という、Google 日本語入力のオープンソース版を利用します。

パッケージ インストール

日本語関連のパッケージをインストールします。

mininet@mininet-vm:~\> sudo aptitude -y install language-pack-ja-base language-pack-ja ibus-mozc

システム文字セット変更

システムの文字セットを日本語に変更します。

mininet@mininet-vm:~\> update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

mininet@mininet-vm:~\> source /etc/default/locale
mininet@mininet-vm:~\> echo $LANG
ja_JP.UTF-8

再起動

OSを再起動します。

mininet@mininet-vm:~\> sudo reboot

日本語入力確認

エディタを開き、日本語入力ができるか確認します。 ※英語←→日本語の切替シュートカット = 「Super+Spaceキー」。

動作確認

karaf 起動

karaf が起動できることを確認します。

/home/mininet/controller-HeliumSR1.1/distribution-karaf-0.2.1-Helium-SR1.1/bin/karaf

f:id:abcmark2010:20151212150130j:plain

参考

Opendaylight Test_VMs Wiki

https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Test_VMs

第319回 Ubuntu 14.04と日本語入力

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0319