インストールと設定ガイド
インストールと設定ガイド
法律上の通知
概要
第1章 Atomic Host について
1.1. RHEL Atomic Host ファイルシステム
Red Hat Enterprise Linux Atomic Host は、起動可能で不変のバージョン管理された、RPM コンテンツのファイルシステムツリーを管理するためのオープンソースツール rpm-OSTree (atomic とも呼ばれる) を使用します。現在、これらのツリーは Red Hat によってパッケージから作成されています。rpm-ostree ツールはツリーを自動的に複製します。これにより、アトミックなアップグレードを中心としたアップグレードおよび保守についての戦略を立てやすくなります。ソフトウェアのアップグレードおよび保守に yum ではなく rpm-ostree を使用する点で、Red Hat Enterprise Linux Atomic Host の管理方法は他の Red Hat Enterprise Linux 7 製品と異なっています。
具体的には Red Hat Enterprise Linux Atomic Host を使用する場合、オペレーティングシステムのコンテンツは読み取り専用でマウントされます。アップデートは以下の方法で実行されます。新規の起動可能なファイルシステムツリーが生成され、これはストレージを現在の起動可能なファイルシステムツリーと共有します。古いファイルシステムツリーは、新規のファイルシステムツリーと並行して維持されます。これは、何かの理由で 2 番目のアップグレード後のバージョンが 1 番目のバージョンほど適切でないとされる場合に、ファイルシステムの 1 番目のアップグレード前のバージョンが実行されるバージョンとして自動的に復元されることを意味します。
コンテナーおよびデータを含む、複数のアップグレード後に保持されることが意図されたユーザーファイルは /var/ ディレクトリーに配置する必要があります。オペレーティングシステム自体は /usr/ ディレクトリーに保存され、読み取り専用になります。ls -l /
コマンドを使用して root ディレクトリーの詳細なファイルの一覧表示を実行する場合、従来の root レベルのディレクトリーの多くが、これらの 2 カ所の位置のいずれかを参照するシンボリックリンクであることに気づかれるでしょう。たとえば、/home/ ディレクトリーは /var/home/ ディレクトリーのシンボリックリンクです。このディレクトリーは複数のアップグレード後も保持されます。
root (/) ディレクトリーには、/sysroot/ ディレクトリーおよび /ostree/ ディレクトリーの 2 つの新規ディレクトリーがあります。これらのディレクトリーについての詳細は、「Understanding atomic upgrades in Red Hat Enterprise Linux Atomic Host」を参照してください。
1.2. インストール方法
Red Hat Enterprise Linux Atomic Host は複数のフォーマットで配信され、ベアメタル、複数の仮想環境、およびパブリックおよびプライベートのクラウドインフラストラクチャーにインストールできます。
Installation Media の下にある Download ボタンをクリックすると、Red Hat Enterprise Linux Atomic Host Product Page のインストールメディアを見つけることができます。詳細のインストール方法の説明は、『Red Hat Enterprise Linux インストールガイド』を参照してください。
1.3. システム要件
Red Hat Enterprise Linux Atomic Host は、過去 2 年以内に工場で生産された大半のハードウェアと互換性があります。ハードウェアの互換性は、古いシステムをお使いの場合やシステムをカスタマイズした場合にとりわけ重要になります。ハードウェアの仕様はほぼ毎日変更されるため、すべてのシステムの互換性を確認することが推奨されます。サポートされるハードウェアの最新リストについては、「Red Hat Hardware Compatibility List」を参照してください。システム要件の一般的な情報については、「Red Hat Enterprise Linux テクノロジーの機能と制限」を参照してください。
Red Hat Enterprise Linux Atomic Host のランタイム要件は Red Hat Enterprise Linux と同じです。ただし、ベアメタルまたは仮想環境の Anaconda ベースのインストール (インタラクティブ、キックスタート、および PXE) の場合はメモリーが 2GB 必要です。
1.4. RHEL Atomic Host の登録
ソフトウェアアップデートを有効にするには、Red Hat Enterprise Linux Atomic Host インストールを登録する必要があります。これは、以下に説明したとおりに subscription-manager コマンドで実行できます。お使いのシステムは、HTTP プロキシーを使用する必要があるネットワークに置かれます。詳細は、Red Hat ナレッジベースの記事「Red Hat Subscription Manager に HTTP Proxy を設定する」を参照してください。--name= オプションを使用すると、サブスクリプションレコードを表示する際に覚えやすい名前を使用できます。
$ sudo subscription-manager register --username=<username> --auto-attach
注意: Red Hat Enterprise Linux Atomic Host は Red Hat Subscription Manager (RHSM) とのみ連携します。Red Hat Enterprise Linux Atomic Host は RHN とは連携しません。
注意: Red Hat Enterprise Linux Atomic Host を使用するには、製品 ID 271 の Red Hat Enterprise Linux Atomic Host と製品 ID 61 の Red Hat Enterprise Linux Server を登録する必要があります。これらはどちらも同じエンタイトルメントを使用します。
システムが適切に登録されると、以下のように両方の ID が表示されます。
$ sudo subscription-manager list +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux Atomic Host Product ID: 271 Version: 7 Arch: x86_64 Status: Subscribed Status Details: Starts: 02/27/2015 Ends: 02/26/2016 Product Name: Red Hat Enterprise Linux Server Product ID: 69 Version: 7.1 Arch: x86_64 Status: Subscribed Status Details: Starts: 02/27/2015 Ends: 02/26/2016
subscription-manager コマンドについては、『Red Hat Subscription Management Guide』の 3.2 「Registering from the Command Line」にも記載されています。
1.5. RHEL Atomic Host の設定
Red Hat Enterprise Linux Atomic Host は、/etc/ ディレクトリーの設定ファイルを使用して、Red Hat Enterprise Linux 7 と同様の方法で設定されます。Red Hat Enterprise Linux Atomic Host は、デスクトップを使用しない最小のサーバー製品です。したがって、GUI で使用されるグラフィカル設定ツールは利用できません。
現時点で Red Hat Enterprise Linux 7 の /etc/passwd ファイルに一覧表示されている一部のシステムユーザーは、読み取り専用の /usr/lib/passwd ファイルに移動しています。Red Hat Enterprise Linux Atomic Host のアプリケーションは Linux コンテナー内で実行されるため、これがデプロイメントに影響することはありません。useradd などの従来のユーザー管理ツールについては、/etc/passwd ファイルにローカルで追加したユーザーを書き込みます。
インストール時にネットワークを設定していない場合は、nmcli ツールを使用し、インストール後に設定することができます。以下のコマンドは、atomic というネットワーク接続の作成、ホスト名のセットアップ、およびその接続のアクティブ化を実行します。
# nmcli con add type ethernet con-name atomic ifname eth0 # nmcli con modify my-office my-office ipv4.dhcp-hostname atomic ipv6.dhcp-hostname atomic # nmcli con up atomic
nmcli ツールの使用方法についての詳細は、『Red Hat Enterprise Linux 7 ネットワークガイド』の「2.3.2. nmcli を使用したネットワーク接続」を参照してください。
Red Hat Enterprise Linux 7 の設定方法についての詳細は、『Red Hat Enterprise Linux 7 システム管理者のガイド』を参照してください。
1.6. cloud-init のセットアップ
Red Hat Enterprise Linux Atomic Host は cloud-init を使用して、インストールと最初の起動時にシステムを設定します。当初 cloud-init は、クラウドインスタンスの早期の初期化を行うために作成されました。Red Hat Enterprise Linux Atomic Host では、仮想マシンのインストールにも使用できます。
cloud-init で使用されるファイルは YAML フォーマットのファイルです。
マシンを最初に起動した時だけ cloud-init を実行します。ファイルで構文エラーが発生したために cloud-init に失敗した場合や、ユーザーの資格情報など必要なディレクティブがすべて含まれていない場合は、新しいインスタンスを作成して起動する必要があります。新しい cloud-init ファイルを使って失敗したインスタンスを再起動しても 機能しません。
以下は、cloud-init で実行される共通タスクの例になります。
cloud-init でユーザーを作成する
cloud-init でユーザーを作成するには、meta-data および user-data の 2 つのファイルを作成し、それらを ISO イメージにパッケージ化する必要があります。
ディレクトリーを作成し、そのディレクトリーに移動します。
$ mkdir clouinitiso $ cd cloudinitiso
meta-data という名前のファイルを作成します。以下の行を meta-data というファイルに追加します。
instance-id: Atomic0 local-hostname: atomic-00
user-data という名前のファイルを作成します。以下の行を user-data ファイルに追加します。
#cloud-config password: atomic chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvZ user1@domain.com
注意: 上記の user-data ファイルの最終行は ssh 公開キーです。SSH 公開キーは ~/.ssh/id_rsa.pub にあります。
meta-data および user-data を含む ISO イメージを作成します。
# genisoimage -output atomic0cidata.iso -volid cidata -joliet -rock user-data meta-data
- atomic0cidata.iso という名前のファイルが生成されます。Red Hat Enterprise Linux Atomic Host をインストールするマシンにこのファイルを添付して、ユーザー名を "cloud-user" にし、パスワードは "atomic" にします。
cloud-user のパスワードの有効期限を設定し、初回ログイン時にパスワードを変更するように設定する
"cloud-user" に初回ログイン時にパスワードを変更させるように設定するには、user-data ファイルで 'chpasswd: {expire: False}' 行を 'chpasswd: {expire: True}' に変更します。
#cloud-config password: atomic chpasswd: {expire: True} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
password および chpasswd は、とくに指定がない限りデフォルトユーザーで操作するため有効になります。
注意: これはグローバル設定です。True に設定すると、作成したすべてのユーザー (以下を参照) でパスワードを変更する必要があります。
デフォルトのユーザー名を変更する
デフォルトのユーザー名を cloud-user から変更するには、'user: username' 行を user-data ファイルに追加します。
#cloud-config user: username password: atomic chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
root パスワードを設定する
root パスワードを設定するには、user-data ファイルの 'chpasswd' セクションにユーザー一覧を作成する必要があります。一覧のフォーマットは以下のとおりです。空白文字は重要です。一覧に空白を持つパスワードを設定するため、空白文字はコロン (:) のいずれの側にも追加しないでください。この方法でユーザーパスワードを設定する場合は、すべてのパスワード をこのセクションに設定する必要があります。つまり、先頭部分からこのセクションに 'password:'' 行を移動する必要があります。
#cloud-config ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com chpasswd: list: | root:password cloud-user:atomic expire: False
初回のシステム設定時にユーザーを追加し、ユーザーオプションを設定する
ユーザーは user-data ファイルの users セクションに作成され、説明されます。このセクションを追加した場合は、デフォルトユーザーのオプションもここに設定する必要があります。
users セクションの最初のエントリーは 'default' であるため、デフォルトユーザー cloud-user は、他のユーザーと共に作成されます。デフォルトの行を省略すると、cloud-user は作成されません。
#cloud-config users: - default - name: foobar gecos: User N. Ame selinux-user: staff_u groups: users,wheel ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com chpasswd: list: | root:password cloud-user:atomic foobar:foobar expire: False
注意: デフォルトでは se-linux-user 値がない場合は、ユーザーには unconfined_u というラベルが追加されます。
注意: この例では、foobar ユーザーを 2 つのグループ ('users' および 'wheel') に置きます。cloud-init 0.7.5 の時点では、グループリストに空白文字を使用することはサポートされていません。詳細は、BZ 1126365 を参照してください。
最初に起動コマンドを実行する
user-data ファイルの 'runcmd' および 'bootcmd' セクションを使用して、起動時および初期化時に任意のコマンドを実行できます。bootcmd セクションは、初期化プロセスの早い内に実行されます。runcmd セクションは、init によるプロセスの最後の方で実行されます。これらのコマンドはその後の起動のために 保存されず、最初の初期化起動時にのみ実行されます。
#cloud-config users: - default - name: foobar gecos: User N. Ame groups: users chpasswd: list: | root:password fedora:atomic foobar:foobar expire: False bootcmd: - echo New MOTD >> /etc/motd runcmd: - echo New MOTD2 >> /etc/motd
sudoer を追加する
ユーザーは、sudo および groups エントリーを、以下に示す user-data ファイルの users セクションに追加することによって sudoer に設定できます。
#cloud-config users: - default - name: foobar gecos: User D. Two sudo: ["ALL=(ALL) NOPASSWD:ALL"] groups: wheel,adm,systemd-journal ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA...vz user@domain.com chpasswd: list: | root:password cloud-user:atomic foobar:foobar expire: False
静的ネットワーク設定をセットアップする
'network-interfaces' セクションを meta-data ファイルに追加します。このセクションには、ネットワーク設定オプションの通常のセットが含まれます。
cloud-init で発生している現在の バグ のために、静的なネットワーク設定は自動的に開始しません。代わりに、デフォルトの DHCP 設定がアクティブになったままとなります。回避策としては、bootcmd ディレクティブからネットワークインターフェースを手動で停止してから再起動することが推奨されます。
network-interfaces: | iface eth0 inet static address 192.168.1.10 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 bootcmd: - ifdown eth0 - ifup eth0
cloud-user を削除し、root 以外のユーザーを持たないようにする
root ユーザーだけを作成するには、user-data ファイルの 'users' セクションに root エントリーを作成します。このセクションは 'name' オプションと同様に単純です。
users: - name: root chpasswd: list: | root:password expire: False
オプションで、以下のように root ユーザーに SSH キーを設定できます。
users: - name: root ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com
インスタンスで cloud-init を再実行する
ほとんどの状態では、すでに作成された仮想マシンの設定を変更するために cloud-init を再実行することはできません。
インスタンス ID を変更 (たとえば、Atomic0 から Atomic1 へ変更) できる環境で cloud-init が使用される場合、インスタンス ID を変更し、cloud-init の再実行のために再起動することで既存の仮想マシンを再設定することができます。これは、cloud-init が完全かつ適切に設定された状態の最初のブートシステムで作成するようにセットアップされることになっているため、実稼働環境では推奨される方法ではありません。
ほとんどの IAAS 実装では、インスタンス ID を変更することはできません。cloud-init を再実行する必要がある場合、新規のインスタンス ID を取得するには、インスタンスのクローン作成が必要になります。
シェルスクリプトを bootcmd および runcmd に配置する
配置することは可能です。'bootcmd' または 'runcmd' の一覧表示されている値を使用する場合、それぞれの一覧表の項目は 'execve' を使用して実行されます。文字列の値を使用する場合、文字列全体がシェルスクリプトとして実行されます。または、単純に cloud-init を使用してシェルスクリプトを実行する場合、'.yaml' ファイルで cloud-init を指定する代わりにシェルスクリプト (シェバング (shebang)(#!) を使用) を指定できます。
シェルスクリプトを 'bootcmd' および 'runcmd' に配置する方法の例については、この web サイト を参照してください。
第2章 物理インストール
第3章 仮想マシンのインストール
- Linux Hypervisor Installation with qcow2 Media (qcow2 メディアを使用した Linux ハイパーバイザーのインストール)
- Red Hat Enterprise Virtualization Environment Installation (Red Hat Enterprise 仮想化環境のインストール)
- Red Hat Enterprise Linux OpenStack Platform Installation (Red Hat Enterprise Linux OpenStack Platform のインストール)
- VMWare Installation (VMWare のインストール)
- Microsoft Hyper-V Installation (Microsoft Hyper-V のインストール)
- Google Compute Engine Installation (Google Compute Engine のインストール)
- Amazon Web Services Installation (Amazon Web Services のインストール)
第4章 PXE インストール
第5章 アップグレードおよびダウングレード
RHEL Atomic Host は、オープンソースツールの rpm-OSTree を使用し、起動可能で不変のバージョン管理された RPM コンテンツのファイルシステムツリーを管理します。yum を使用し、従来のパッケージ管理モデルを持つ他の Red Hat Enterprise Linux 7 製品とは異なり、RHEL Atomic Host は OSTree を使用します。RHEL Atomic Host は新たなオペレーティングシステムの root を用意し、これを次回の起動時のデフォルトにすることによりアップグレードされます。
5.1. 新規バージョンへのアップグレード
アップグレードを実行するには、以下のコマンドを実行します。
$ sudo atomic host upgrade $ sudo systemctl reboot
HTTP プロキシーが必要なシステムを使用している場合は、環境変数でプロキシーを設定できます。環境変数を設定するには、以下のようなコマンドを実行してください。
$ sudo env http_proxy=http://proxy.example.com:port/ atomic host upgrade
5.2. 直前バージョンへのロールバック
Red Hat Enterprise Linux Atomic Host の直前のインストールに戻すには、以下のコマンドを実行します。
$ sudo atomic host rollback $ sudo systemctl reboot
初回のアップグレード後は、Red Hat Enterprise Linux Atomic Host の 2 つのバージョンがシステムで利用可能になります。1 つ目は現在実行されているバージョンです。2 つ目はアップグレードでインストールされたばかりの新規バージョンか、または直前のアップグレードの前にインストールされていたバージョンのいずれかになります。
設定は複数回のアップデート後も保持されますが、以前のバージョンに戻す場合は保存されません。つまり、設定を変更した後に直前のバージョンにロールバックする場合は、変更した設定が元に戻ります。
atomic host upgrade コマンドを実行すると、Red Hat Enterprise Linux Atomic Host の実行されていないバージョンの置換が実行されます。さらに、このバージョンは次回の起動時に使用されるように設定されます。
実行されているオペレーティングシステムのバージョンを判別するには、以下のコマンドを実行します。
$ sudo atomic host status
/ostree/deploy/rhel-atomic-host/ ディレクトリーにディレクトリーのハッシュ名が含まれる出力は以下のようになります。
$ sudo atomic host status TIMESTAMP (UTC) VERSION ID OSNAME REFSPEC * 2015-05-07 19:00:48 7.1.2 203dd666d3 rhel-atomic-host rhel-atomic-host:rhel-atomic-host/7/x86_64/standard 2015-04-02 20:14:06 7.1.1-1 21bd99f9f3 rhel-atomic-host rhel-atomic-host:rhel-atomic-host/7/x86_64/standard
この出力例は、次回の再起動時にバージョン 7.1.1-1 が起動することを示しています。次回の再起動時に起動するバージョンは先頭に表示されます。
また、この例ではバージョン 7.1.2 が現在実行中であることを示しています。現在実行中のバージョンにはアスタリスク (*) が付けられます。
この出力は atomic host upgrade コマンドの実行後すぐに作成されました。したがって、新規バージョンは次回の再起動時に適用されるように設定されています。
第6章 アプリケーション例
6.1. Red Hat Enterprise Linux 7 ホストシステム上での Red Hat Enterprise Linux 6 プラットフォームイメージのインストール
6.1.1. 概要
このセクションでは、Red Hat Enterprise Linux 7 を Docker フォーマットのコンテナーのホストシステムとして使用する方法について説明します。サブスクリプションマネージャーツールを使用して Red Hat Enterprise Linux 7 サーバーをインストールし、システムを登録します。
このトピックでは、Red Hat Enterprise Linux 7 サーバーホストシステムのインストール後に Red Hat Enterprise Linux 6 プラットフォームイメージをインストールするステップについて説明します。Red Hat Enterprise Linux のインストール方法についての詳細は、『Red Hat Enterprise Linux 7 インストールガイド』を参照してください。
6.1.2. Docker サービスのインストールおよびプラットフォームイメージの取得
以下の手順は、root ユーザーとして実行する必要があります。
Red Hat Enterprise Linux 7 サーバーをインストールした後に、以下のコマンドを使用してシステムを登録します。
# subscription-manager register --auto-attach
Docker および docker-registry パッケージを含む RHEL Extras リポジトリーを有効にします。
# subscription-manager repos --enable=rhel-7-server-extras-rpms # subscription-manager repos --enable=rhel-7-server-optional-rpms
または http://rhn.redhat.com に移動し、ここから RHEL Extras チャンネルをサブスクライブします。
docker パッケージのインストール:
# yum install docker
docker サービスの有効化および起動:
# systemctl enable docker # systemctl start docker
以下のコマンドを実行してサービスが実行中であることを確認できます。
# systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) Active: active (running) since Fri 2015-05-22 12:03:34 CEST; 3h 19min ago Docs: http://docs.docker.com Main PID: 843 (docker) CGroup: /system.slice/docker.service └─843 /usr/bin/docker -d --selinux-enabled
以下のコマンドを使用して、Red Hat Docker Registry から Red Hat Enterprise Linux 6 プラットフォームイメージをダウンロードします。
# docker pull registry.access.redhat.com/rhel6
以下のコマンドで、システムで利用可能なイメージを一覧表示します。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.access.redhat.com/rhel6 6.6 f5f0b338bbd6 9 weeks ago 155.6 MB registry.access.redhat.com/rhel6 latest f5f0b338bbd6 9 weeks ago 155.6 MB
/etc/redhat-release ファイルの内容を確認し、RHEL6 イメージが RHEL7 ホストシステムにあることを確認します。最初に、ホストシステムで以下を実行します。
# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.1 (Maipo)
次に、再びホストシステムからプラットフォームコンテナーイメージを確認します (コンテナーイメージにログインする必要はありません)。
# docker run rhel6 cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.6 (Santiago)
上記は RHEL6 プラットフォームイメージが RHEL7 ホストシステムに正常にダウンロードされ、そのイメージを使用することができることを示しています。
6.1.3. 例: コンテナーに Apache Web Server を構築する
このセクションでは、RHEL6 プラットフォームイメージを使用して Apache Web Server をインストールする方法について説明します。
# Using RHEL 6 platform image and Apache Web server # Version 1 # Pull the rhel image from the local registry FROM rhel6:latest USER root MAINTAINER Maintainer_Name # Disable repos RUN yum -y install deltarpm yum-utils --disablerepo=*-eus-* --disablerepo=*-htb-* \n --disablerepo=*-ha-* --disablerepo=*-rt-* --disablerepo=*-lb-* --disablerepo=*-rs-* --disablerepo=*-sap-* RUN yum-config-manager --disable *-eus-* *-htb-* *-ha-* *-rt-* *-lb-* *-rs-* *-sap-* > /dev/null # Update image RUN yum install httpd -y # Create Apache content RUN echo "Help! I am trapped inside a container!" > /var/www/html/index.html EXPOSE 80 # Start the service CMD ["-D", "FOREGROUND"] ENTRYPOINT ["/usr/sbin/httpd"]
+ MAINTAINER 行を変更してユーザーの名前を追加します。
コンテナーの構築: Dockerfile を含むディレクトリーから、以下のコマンドを実行します。
# docker build -t rhel6apache .
コンテナーの起動: コンテナーイメージを起動するには、以下のコマンドを実行します。
# docker run -d -p 80:80 --name=rhel6apache rhel6apache
インストールのテスト: Web サーバーをテストします。
# curl http://localhost/index.html Help! I am trapped inside a container!
Comments