第5章 RHEL CDK の使用

5.1. RHEL CDK の使用

Vagrant box が追加され、1 つ以上の VM が実行中である場合、CDK 環境の使用および管理を開始するためにいくつかのタスクを実行できます。本章では、Red Hat CDK の使用に関連するトピックを扱います。

5.1.1. CDK Vagrantfile の選択

CDK zip ファイルには、Vagrant から異なる方法で設定された RHEL VM を起動するために使用できる複数の異なる Vagrant ファイルがあります。現時点では、rhel-ose、rhel-docker-eclipse、および rhel-k8s-singlenode-setup を選択できます。

5.1.1.1. OpenShift を使用した開発における rhel-ose の使用

rhel-ose ディレクトリーから vagrant up を実行する場合、Vagrantfile はインストールした vagrant box から RHEL 仮想マシンを起動します。その box の特徴は以下の通りです。

  • OpenShift を使用して CDK 開発環境をセットアップします (https://www.openshift.com/enterprise/whats-new.html を参照)。
  • RHEL VM からホストシステムにサービスを公開するためにプライベートネットワークを作成します。

rhel-ose Vagrantfile から CDK RHEL VM を起動し、この使用を開始するには、以下を実行します。

  1. rhel-ose ディレクトリーに切り替え、RHEL VM を起動します (Windows の場合、%USERPROFILE%\cdk\components\rhel\rhel-ose を使用します)。

    $ cd ~/cdk/components/rhel/rhel-ose/
    $ vagrant up
  2. 同じディレクトリーから、以下のように box をプロビジョニングします。

    注意: vagrant provision が必ずしも必要な訳ではありませんが、これはタイムアウトの問題を解決するのに役立ち、次のステップについてのヘルプメッセージを表示するのに使用できます。

    $ vagrant provision
    ==> default: Running provisioner: shell...
        default: Running: inline script
    ...
    ==> default: [INFO] Create 'test-admin' user and 'test' project ...
    ==> default:
    ==> default: You can now access OpenShift console on: https://10.1.2.2:8443/console
    ==> default:
    ==> default: To use OpenShift CLI, run:
    ==> default: $ vagrant ssh
    ==> default: $ oc status
    ==> default:
    ==> default: To become a cluster-admin, add '--config' to oc commands:
    ==> default: $ vagrant ssh
    ==> default: $ oc status --config=/var/lib/origin/openshift.local.config/master/admin.kubeconfig
    ==> default:
    ==> default: To browse the OpenShift API documentation, follow this link:
    ==> default: http://openshift3swagger-claytondev.rhcloud.com
    ==> default:
    ==> default: Then enter this URL:
    ==> default: https://10.1.2.2:8443/swaggerapi/oapi/v1
    ==> default: .
  3. プロビジョニングの終わりに、OpenShift コンソールにアクセスする方法について説明した出力が表示され、oc コマンドラインを使用して OpenShift プロジェクトの使用を開始することができます。以下は、これを開始する 1 つの方法です。

    注記

    OpenShift (ose) サービスを停止するには、仮想マシンをシャットダウンする必要があります。atomic stop コマンドは現時点では適切に機能しません。

    +

    rhel-ose Vagrantfile から作成された RHEL VM を使用する方法の詳細は、rhel-ose ディレクトリーの README.rst ファイルを参照してください。

5.1.1.2. Eclipse を使用した開発における rhel-docker-eclipse の使用

rhel-docker-eclipse ディレクトリーから vagrant up を実行する場合、Vagrantfile はインストールした vagrant box から RHEL 仮想マシンを起動します。この box の特徴は以下の通りです。

  • docker サービスを有効にし、起動します。
  • VM はホストから Eclipse IDE で利用できます。

rhel-docker-eclipse Vagrantfile から CDK RHEL VM を起動し、その使用を開始するには、以下を実行します。

  1. rhel-docker-eclipse ディレクトリーに切り替え、RHEL VM を起動します (Windows の場合、%USERPROFILE%\cdk\components\rhel\rhel\rhel-docker-eclipse を使用します)。

    $ cd ~/cdk/components/rhel/rhel-docker-eclipse/
    $ vagrant up
  2. vagrant ssh を使用してログインし、RHEL VM のシェルを開き、systemctl を使用して docker のステータスを確認します。

    $ vagrant ssh
    [vagrant@localhost ~]$ systemctl status docker
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
      Drop-In: /usr/lib/systemd/system/docker.service.d
               └─flannel.conf
       Active: active (running) since Mon 2016-01-25 13:28:55 EST; 13min ago
         Docs: http://docs.docker.com
    ...

    vagrant ssh コマンドを使うと、ユーザー vagrant (パスワード vagrant) は RHEL VM に自動ログインします。systemctl コマンドは、docker サービスがアクティブで、有効にされていることを示しています。

  3. docker コマンドの使用によるコンテナーの取得、実行、停止、起動、構築またはその他の方法による使用を開始できます。直接 docker コマンドを使用する方法の詳細は、「Get Started with Docker Formatted Container Images (Docker フォーマットのコンテナーイメージの使用方法)」を参照してください。

5.1.1.3. Kuberntes を直接使用した開発における rhel-k8s-singlenode-setup の使用

rhel-k8s-singlenode-setup ディレクトリーから vagrant up を実行する場合、Vagrantfile は RHEL 仮想マシンを、インストールした vagrant box から起動します。その box の特徴は以下のようになります。

  • docker サービスを起動します。
  • RHEL VM で一体型の Kubernetes Master および Node を実行するために必要なすべてのサービスを起動します。

結果として作成される仮想マシンでは、Kubernetes pod、サービス、レプリケーションコントローラーおよびその他の機能を構築するためにkubectl コマンドの使用を開始できます。

  1. rhel-docker-eclipse ディレクトリーに切り替え、RHEL VM を起動します (Windows の場合、%USERPROFILE%\cdk\components\rhel\rhel\rhel-k8s-singlenode-setup を使用します)。

    $ cd ~/cdk/components/rhel/rhel-k8s-singlenode-setup/
    $ vagrant up
  2. vagrant ssh を使用して RHEL VM にアクセスし、kubernetes のステータスを確認します。

    $ vagrant ssh
    [vagrant@localhost ~]$ kubectl cluster-info
    Kubernetes master is running at http://localhost:8080
  3. RHEL Kubernetes 対応の VM の使用を開始します。Kubernetes で実行するコンテナー化されたアプリケーションを開発する方法の詳細は、『Get Started Orchestrating Containers with Kubernetes』ガイドの「Launching container pods with Kubernetes」セクションを参照してください。

5.1.2. RHEL VM へのアクセス

Red Hat CDK を使用して起動する仮想マシンにアクセスするにはいくつかの方法あります。同様に、OpenShift および Eclipse などの Web UI から CDK VM にアクセスする方法は複数あります。以下のセクションでは、Vagrant から CDK にアクセスする方法について説明します。

5.1.3. 実行中の Running Vagrant Box との相互作用

起動している Vagrant box を使用するには、まずその box を起動したディレクトリーに切り替えます。たとえば、cd %USERPROFILE%\cdk\components\rhel\rhel-ose (Windows) または cd ~/cdk/components/rhel/rhel-ose (Fedora、RHEL、または Mac OS X) などに移動します。この場所から複数の異なる vagrant コマンドを実行して、boxを異なる方法で使用し、管理することができます。

vagrant コマンドと一緒に使用できるサブコマンドを一覧表示します。

$ vagrant list-commands

SSH を使用して Red Hat Enterprise Linux CDK Vagrant Box にログインします。

$ vagrant ssh

上記により、ユーザーは vagrant ユーザーとしての RHEL 仮想マシンに自動ログインします。これが終了したら、SSH セッションを終了します (exit を入力)。Vagrant box を停止するには、以下を実行します。

$ vagrant halt

システム上ですべての Vagrant box の状態を確認し、box が適切に停止されていることを確認するには、以下を使用します。

$ vagrant global-status

任意の時点で作成した VM および仮想化の空きリソースを削除する必要がある場合は vagrant destroy コマンドを使用します。ホームディレクトリーの.vagrant.d にある Vagrantfile および box イメージはそのまま残り、後続の vagrant up コマンドを使って新規バージョンの環境を再作成できます。

$ vagrant destroy
注記

Vagrant がマシンごとの状態を保持する .vagrant サブディレクトリーを削除する前に vagrant destroy コマンドを使用して仮想化 (libvirt または Virtualbox) リソースを解放します。libvirt を使用するシステムに .vagrant サブディレクトリーがない場合は、virt-manager (GUI) または virsh (CLI) などの libvirt ツールを使用して、Vagant が作成したリソースを手動で削除してから同じ名前の Vagrant box を立ち上げることができます。同様に、仮想化に Virtualbox を使用しているシステムでは、Virtualbox GUI を使用して Vagrant で作成したリソースを削除します。

vagrant destroy の後に、Vagrant box を元の正常な状態で再び立ち上げることができます。

5.1.4. Vagrant CDK プラグインの使用

CDK には、CDK Vagrant box の使用に対して追加機能を提供するいくつかのプラグインが同梱されます。以下は、それらのプラグインとそれらを使用する方法についての説明です。

5.1.4.1. vagrant-adbinfo プラグインの使用

vagrant-adbinfo プラグインを使用すると、Vagrant CDK RHEL VM 内の docker サービスにアクセスするために必要な環境変数を表示できます。以下は、その情報を表示し、使用する方法例です。

$  vagrant adbinfo
  # Set the following environment variables to enable access to the
  # docker daemon running inside of the vagrant virtual machine:

  export DOCKER_HOST=tcp://192.168.121.45:2376
  export DOCKER_CERT_PATH=/home/chris/cdk/components/rhel/rhel-ose/.vagrant/machines/default/libvirt/.docker
  export DOCKER_TLS_VERIFY=1
  export DOCKER_MACHINE_NAME=785b349

$ eval $(vagrant adbinfo)

adbinfo の詳細は、CDK プラグインディレクトリーの vagrant-adbinfo-README.md ファイルを参照してください。

5.1.4.2. landrush プラグインの使用

landrush プラグインを使用すると、ホストシステムと仮想ゲストの両方が識別できる単一 DNS サービスをセットアップできます。landrush プラグインを使用する方法の詳細は、CDK プラグインディレクトリーの vagrant-landrush-README.md ファイルを参照してください。

5.1.4.3. vagrant-registration プラグインの使用

vagrant-registration プラグインを使用すると、RHEL VM の Red Hat サブスクリプションを Vagrant で管理できます。このプラグインは、ゲストで利用可能なタイプのサブスクリプションサービスでサブスクリプションを管理できます。ただし、現時点でこのプラグインは RHEL Suscription Manager (subscription-manager および関連コマンド) およびこれ以前の rhn_register コマンドのみをサポートしています。

「Red Hat Enterprise Linux Vagrant Boxe の Red Hat への登録」セクションには、CDK でサブスクリプションを管理する方法の詳細情報が記載されています。vagrant-registration プラグインの詳細は、CDK プラグインディレクトリーの vagrant-registration-README.md ファイルを参照してください。

5.1.5. Red Hat Enterprise Linux Vagrant Boxe の Red Hat への登録

vagrant up で RHEL VM を起動する時点で RHEL VM を登録していない場合は、すぐにこれを登録する必要があります。この際、RHEL システムの登録を強くお勧めします。登録しない場合、正式の Red Hat リポジトリーを使用して以下を行うことはできません。

  • RHEL 仮想マシンでのソフトウェアのアップグレード。
  • RHEL 仮想マシンへのソフトウェアパッケージの追加。
  • VM に構築または実行する RHEL コンテナーへのソフトウェアパッケージの追加。

RHEL ベースコンテナーイメージは、ホストシステムの資格情報を Docker が使用できるように設定されます。コンテナー内にパッケージをインストールしようとすると、yum コマンドはホストの資格情報を使用して、Red Hat のそれらのパッケージにアクセスできるようにします。有効な Red Hat サブスクリプションがないと、RHEL コンテナーの構築に必要な完全に機能する設定を行うことはできません。

Red Hat に CDK 仮想マシンを登録するプロセスは、Vagrant プラグインの vagrant-registration を使って自動化されます。デフォルトで Vagrant box が起動すると、Red Hat カスタマーポータルのユーザー名とパスワードを入力するようにプロンプトが出されます。登録プラグインは Vagrant box を利用可能なサブスクリプションに自動的に割り当てます。

RHEL VM が CDK に登録されると、ID および有効期限のあるエンタイトルメントが VM 用に作成されます。いったん登録されると、CDK エンタイトルメントの期限が切れるまで VM を再登録する必要はありません。この期限が過ぎると、コンテナーは Red Hat ソフトウェアリポジトリー (CDN) にアクセスできなくなります。

サブスクリプションがアクティブな状態で CDK VM を登録する場合、90 日間有効な新規のエンタイトルメントを取得できます。同じ VM を再登録する場合、新たに 90 日のエンタイトルメントを取得できます。これを何度も繰り返すことができます。

vagrant halt または vagrant destroy のいずれかを使用して Vagrant box を停止する場合、このプラグインは Red Hat サブスクリプションを自動的にリリースします。ホストシステムの再起動などのその他の手段で Box を停止する場合、サブスクリプションを別の Box で使用するために手動でサブスクリプションを削除する必要がある場合があります。Red Hat カスタマーポータル で subscription management を使用し、すでに使用されなくなった仮想システムを見つけ、これを削除します。

RHEL サブスクリプションがない場合、Red Hat Enterprise Linux Developer Suite の無料のエンタイトルメントを提供する計画が検討されています。それらのエンタイトルメントにより、RHEL ホストをダウンロードし、CDK で登録することができます。これらについての更新情報を確認してください。

5.1.5.1. 登録プロセスの自動化 (資格情報の保存)

Vagrant box を起動するたびにプロンプトに対応しなくてもよいように Red Hat の資格情報を保存することをお勧めします。これは、単一の Vagrantfile から複数の仮想マシンを立ち上げる複雑な Vagrantfile の場合に必須になります。

資格情報を保存するには、以下の行をユーザー別の Vagrantfile に追加してください。このファイルへのパスはプラットフォームごとに異なります。

  • Windows: %USERPROFILE%\.vagrant.d\Vagrantfile
  • Fedora, RHEL, or Mac OS X: ~/.vagrant.d/Vagrantfile

設定はそのユーザー ID で開始したすべての boxで利用できます。ユーザーごとの Vagrantfile は自動作成されません。

Vagrant.configure('2') do |config|
 config.registration.subscriber_username = '<your Red Hat username>'
 config.registration.subscriber_password = '<your Red Hat password>'
end

または、Red Hat の資格情報の詳細をファイルシステムに保存しないことを選択する場合は、以下の設定を使用して、資格情報を環境変数から取得することができます。ユーザー名は $SUB_USERNAME 環境変数 (Windows の SUB_USERNAM) に、パスワードは $SUB_PASSWORD 環境変数 (Windows の SUB_PASSWORD) に保存してから Vagrant を開始するようにしてください。

Vagrant.configure('2') do |config|
  config.registration.subscriber_username = ENV['SUB_USERNAME']
  config.registration.subscriber_password = ENV['SUB_PASSWORD']
end

さらに、これらの設定はユーザーごとの ~/.vagrant.d/Vagrantfile の設定を上書きする特定の Vagrantfile でも使用できます。既存の Vagrantfile では、Vagrant.configure('2') do |config| で開始されるブロックがすでにあるため、既存のブロックにこれらの 2 つの config.registration 行 (上記を参照) のみを追加します。

詳細情報は、CDK ソフトウェアコンポーネントを含む ZIP ファイルの ~/cdk/plugins ディレクトリーにある vagrant-registration-README.md ファイルを参照してください。