第6章 ホストの管理
ホストは Red Hat Satellite が管理する物理または仮想システムを参照します。以下のセクションでは、hammer
をしようしたホストとホストのグループの作成、設定方法を説明します。以下の手順を Web UI で行う手順は 『Red Hat Satellite Host Configuration Guide』を参照してください。
6.1. ホストグループの作成
ホストグループは、ホストまたはホストグループの集まりです。共有のホストパラメーターを保持するために、ホストグループを作成することを推奨します。ホストグループのメンバーは、これらのパラメーターを継承するので、ホストの作成じに個別に設定する必要はありません。階層形式でホストグループをネスト化できる点に注意してください。
以下のコマンドはホストグループの作成の基本オプションを表示しています。
$ hammer hostgroup create \ --name "<hostgroup_name>" \ --environment "<environment_name>" \ --architecture "<architecture_name>" \ --domain <domain_name> \ --subnet <subnet_name> \ --puppet-proxy <proxy_name> \ --puppet-ca-proxy <ca-proxy_name> \ --operatingsystem "<os_name>" \ --partition-table "<table_name>" \ --medium "<medium_name>" \ --organization-ids <org_ID1>,<org_ID2>... \ --location-ids <loc_ID1>,<loc_ID2>...
設定可能なオプションの完全一覧については hammer hostgroup create --help
を参照してください。ホストグループの作成時に構成できない設定が 2 つあります。
- アクティベーションキーは、ホストグループの作成後に、以下を使用して追加する必要があります。
$ hammer hostgroup set-parameter \ --hostgroup "<hostgroup_name>" \ --name "kt_activation_keys" \ --value <key_name>
hammer activation-key list
を実行してアクティベーションキーの名前を検索します (アクティベーションキーの詳細は4章アクティベーションキーの管理を参照してください)。
- root パスワードは、ホストグループにホストを追加する際に指定する必要があります。
例6.1 複数のコンテンツビューに対するホストグループの作成
以下のバッシスクリプトは、ライフサイクル環境ごとにホストグループを作成します。
MAJOR="7" OS=$(hammer --output csv os list | awk -F "," "/RedHat ${MAJOR}/ {print \$2;exit}") ARCH="x86_64" ORG="ACME" LOCATIONS="london,munich" PTABLE_NAME="ptable-acme-os-rhel-server" DOMAIN="example.com" hammer lifecycle-environment list --organization "${ORG}" | awk -F "|" '/[[:digit:]]/ {print $2}' | sed s'/ //' | while read LC_ENV do if [[ ${LC_ENV} == "Library" ]]; then continue fi LC_ENV_LOWER=$(echo ${LC_ENV} | tr '[[:upper:]' '[[:lower:]]') ParentID=$(hammer --output csv hostgroup list --per-page 999 | awk -F"," "(\$3 ~ /^${LC_ENV_LOWER}$/) {print \$1}") hammer hostgroup create --name "rhel-${MAJOR}server-${ARCH}" \ --medium "${ORG}/Library/Red_Hat_Server/Red_Hat_Enterprise_Linux_${MAJOR}_Server_Kickstart_${ARCH}_${MAJOR} Server" \ --parent-id ${ParentID} \ --architecture "${ARCH}" \ --operatingsystem "${OS}" \ --partition-table "${PTABLE_NAME}" \ --subnet "${DOMAIN}" \ --domain "${DOMAIN}" \ --organizations "${ORG}" \ --locations "${LOCATIONS}" \ --content-view "cv-os-rhel-${MAJOR}Server" \ --environment-id $(hammer --output csv environment list --per-page 999 | awk -F "," "/KT_$ {ORG}_${LC_ENV}_cv_os_rhel_${MAJOR}Server/ {print \$1}") HgID=$(hammer --output csv hostgroup list --per-page 999 | awk -F"," "(\$3 ~ /^${LC_ENV_LOWER}\/rhel-${MAJOR}server-${ARCH}$/) {print \$1}") hammer hostgroup set-parameter \ --hostgroup-id "${HgID}" \ --name "kt_activation_keys" \ --value "act-${LC_ENV_LOWER}-os-rhel-${MAJOR}server-${ARCH}" done
6.2. ホストの作成
ホストグループに一般的なパラメーターを設定して、ホスト作成時に必要なオプションの数を減らすことを推奨します。以下のコマンドは、基本的なホストを作成してホストグループに関連付けます。
$ hammer host create \ --name "<host_name>" \ --hostgroup "<hostgroup_name>" \ --interface="primary=true, \ provision=true, \ mac=<mac_address>, \ ip=<ip_address>" \ --organization-id <org_ID> \ --location-id <loc_ID> \ --ask-root-password yes
上記のコマンドを実行後に、root パスワードを指定するように求められます。ホストの IP および MAC アドレスを指定する必要があります。プライマリーネットワーク・インターフェースの他のプロパティーはホストグループから継承するか、subnet
および domain
パラメーターを使用して設定することができます。--interface
オプションを使用して追加のインターフェースを設定できます。このオプションはキーと値のペア一覧を受け入れます。利用可能なインターフェース設定の一覧については表6.1「--interface オプションの利用可能なキー」を参照してください。
ホストグループのメンバーなしにホストを作成する場合には、「ホストグループの作成」に記載されている追加のオプションを指定します。利用可能なホストのパラメーターは幅広くありますが、詳細は hammer host create --help
の出力を参照してください。特定のパラメーターの値は、ホストがプロビジョニングするコンピュートリソースの種別により異なります。参考として表6.2「プロビジョニングに固有のホストオプション」を参照してください。
キー | 説明 |
---|---|
type |
|
name、identifier |
インターフェースの ID |
mac、ip、domain (または domain_id)、subnet (または subnet_id) |
ネットワーク設定、ドメイン、サブネット ID はホストグループから継承できます。 |
primary、provision、managed、virtual |
許容される値は |
仮想インタフェースに固有のキー | |
tag |
VLAN タグ。この属性はサブネット VLAN ID より優先されます。 |
attached_to |
このインターフェースが属するインターフェース ID (例: eth1) |
ボンディングインタフェースに固有のキー | |
mode |
ボンディングモード。 |
BMC インターフェースに固有のキー | |
provider |
BMC プロバイダー。 |
username、password |
BMC アクセスの認証情報 |
Libvirt でプロビジョニングされるホストに固有のキー | |
compute_type |
インターフェースタイプ。 |
compute_network または compute_bridge |
インターフェース名を指定します。インターフェースタイプに合わせて 1 つ選択します。 |
compute_model |
|
RHEV でプロビジョニングされるホストに固有のキー | |
compute_name |
インターフェース名 (例: eth0) |
compute_network |
クラスターに利用可能なネットワークの中から 1 つ選択します。RHV からの UUID を使用します。 |
VMware でプロビジョニングされるホストに固有のキー | |
compute_type |
ネットワークアダプターのタイプ。vSphere のバージョンに合わせて指定します。 |
compute_network |
VMware からのネットワーク ID |
プロバイダー | キー |
---|---|
--compute-attributes オプションのキー | |
EC2 |
flavor_id、image_id、availability_zone、security_group_ids、managed_ip |
GCE |
machine_type、image_id、network、external_ip |
Libvirt |
cpus、memory、start |
OpenStack |
flavor_ref、image_ref、tenant_id、security_groups、network |
RHEV |
cluster、template、cores、memory、start |
VMware |
cpus、corespersocket、memory_mb、cluster、path、guest_id、scsi_controller_type、hardware_version、start |
--volume オプションのキー | |
Libvirt |
poll_name、capacity、format_type |
RHEV |
size_gb、storage_domain、bootable |
VMware |
datastore、name、size_gb、thin、eager_zero |
例6.2 ボンディングインターフェースペアでのホストの作成
以下の例では、ボンディングインターフェースのペアでホストを作成する方法を示します。インターフェースのボンディングに関する詳しい情報は、『Red Hat Enterprise Linux ネットワークガイド』を参照してください。
$ hammer host create --name bondtest \ --hostgroup-id 1 \ --ip=192.168.100.123 \ --mac=52:54:00:14:92:2a \ --subnet-id=1 \ --managed true \ --interface="identifier=eth1, \ mac=52:54:00:62:43:06, \ managed=true, \ type=Nic::Managed, \ domain_id=1, \ subnet_id=1" \ --interface="identifier=eth2, \ mac=52:54:00:d3:87:8f, \ managed=true, \ type=Nic::Managed, \ domain_id=1, \ subnet_id=1" \ --interface="identifier=bond0, \ ip=172.25.18.123, \ type=Nic::Bond, \ mode=active-backup, \ attached_devices=[eth1,eth2], \ managed=true, \ domain_id=1, \ subnet_id=1" \ --organization-id 1 \ --location-id 1 \ --ask-root-password yes
6.3. ホストコレクションの作成
Red Hat Satellite ホストコレクションは、ホストのグループを指します。以下のコマンドはホストコレクションを作成する際に最低限必要なオプションです。
$ hammer host-collection create \ --organization-label <org_label> \ --name <hc_name>
ホストコレクションにホストを追加するには、以下のコマンドを実行します。
$ hammer host-collection add-host \ --id <hc_ID> \ --host-ids <ch_ID1>,<ch_ID2>...
以下のコマンドを実行して、ホストコレクションとアクティベーションキーを関連付けます (アクティベーションキーの詳細は4章アクティベーションキーの管理を参照してください)。
$ hammer activation-key add-host-collection \ --id <ak_ID> \ --host-collection <hc_name>
ホストコレクションのグループに含まれるホストは、アクティベーションからの設定を継承します。
6.4. ホストでのリモートジョブの実行
リモートの実行機能により、Satellite Server で任意のコマンドを定義して、リモートホストで実行できます。コマンドは、プロビジョニングテンプレートとよく似たジョブテンプレートで定義されます。デフォルトでジョブテンプレートが複数含まれているので、それを使用することも、リモートホストでのソフトウェアパッケージの操作や Puppet プロセスの起動などのカスタムテンプレートを定義することも可能です。Hammer でこの機能を使用するには、root として以下のコマンドを実行してリモートの実行 CLI をインストールします。
# yum install tfm-rubygem-hammer_cli_foreman_remote_execution
利用可能なジョブテンプレートを表示するには、以下を実行します。
$ hammer job-template list
テンプレート定義ファイルを使用してジョブテンプレートを作成するには以下のコマンドを使用します。
$ hammer job-template create \ --file "<template>" \ --name "<template_name>" \ --provider-type SSH \ --job-category "<category_name>"
<template> は、テンプレート定義が含まれるファイルへのパスに置き換えてください。また、カスタムの <category_name> を指定するか、既存のカテゴリーの 1 つを選択してください (Commands
、Katello
、Packages
、Power
、Puppet
または Services
)。他に利用可能なパラメーターに関する情報は hammer job-template create --help
の出力を参照してください。
カスタムパラメーターでジョブを呼び出すには以下を実行します。
$ hammer job-invocation create \ --job-template "<template_name>" \ --inputs <key1>="<value>",<key2>="<value>",... \ --search-query "<query>"
リモートジョブに使用するテンプレート名を指定します。キーと値のペアをコンマ区切りのリストとして入力値を指定してください。hammer job-template info
を実行して、テンプレートに必要なパラメーターが何かを表示します。<query> は、どのホストが影響を受けるかを定義するフィルターの表現に置き換えます (例: name ~ rex01)。
例6.3 選択したホストでの httpd サービスの起動
以下の例では、デフォルトの Service Action - SSH Default テンプレートをベースにリモートジョブを実行する方法を示します。このテンプレートは、名前に「target」が含まれるホストで httpd サービスを機能します。
$ hammer job-invocation create \ --job-template "Service Action - SSH Default" \ --inputs service="httpd",action="start" \ --search-query "name ~ target"
ジョブの出力を監視するには以下を実行します。
$ hammer job-invocation output \ --id <job_ID> \ --host <host_name>
hammer job-invocation list
の出力で <job_ID> を検索します。hammer でのリモートコマンドの実行に関する詳しい情報は hammer job-template --help
または hammer job-invocation --help
を参照してください。