第6章 ホストの管理
ホストは、Red Hat Satellite が管理する物理システムまたは仮想システムのことを指します。以下のセクションでは、hammer
を使用したホストとホストグループの作成方法および設定方法を説明します。以下の手順を Web UI で行う場合は『ホストの管理』を参照してください。
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 複数のコンテンツビューに対するホストグループの作成
以下の Bash スクリプトは、ライフサイクル環境ごとにホストグループを作成します。
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"
ジョブ出力 の ID を検索するには以下を実行します。
$ hammer job-invocation list
ジョブ出力を監視するには以下を実行します。
$ hammer job-invocation output \ --id job_ID \ --host host_name
ジョブ出力をキャンセルするには以下を実行します。
$ hammer job-invocation cancel \
--id job_ID
hammer でのリモートコマンドの実行に関する詳しい情報は hammer job-template --help
または hammer job-invocation --help
を参照してください。