Red Hat Training

A Red Hat training course is available for Red Hat Satellite

第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「プロビジョニングに固有のホストオプション」を参照してください。

表6.1 --interface オプションの利用可能なキー

キー説明

type

Nic::ManagedNic::BMCNic::Bond のいずれかのインターフェースタイプを定義します。

name、identifier

インターフェースの ID

mac、ip、domain (または domain_id)、subnet (または subnet_id)

ネットワーク設定、ドメイン、サブネット ID はホストグループから継承できます。

primary、provision、managed、virtual

許容される値は true または false です。管理ホストは、プライマリーおよびプロビジョニングインターフェースを 1 つ指定する必要があります。

仮想インタフェースに固有のキー

 

tag

VLAN タグ。この属性はサブネット VLAN ID より優先されます。

attached_to

このインターフェースが属するインターフェース ID (例: eth1)

ボンディングインタフェースに固有のキー

 

mode

ボンディングモード。balance-rractive-backupbalance-xorbroadcast802.3adbalance-tlb および balance-alb の 1 つ

BMC インターフェースに固有のキー

 

provider

BMC プロバイダー。IPMI に設定可能

username、password

BMC アクセスの認証情報

Libvirt でプロビジョニングされるホストに固有のキー

 

compute_type

インターフェースタイプ。bridge または network の 1 つ

compute_network または compute_bridge

インターフェース名を指定します。インターフェースタイプに合わせて 1 つ選択します。

compute_model

virtiortl8139ne2k_pcipcnete1000 の 1 つ

RHEV でプロビジョニングされるホストに固有のキー

 

compute_name

インターフェース名 (例: eth0)

compute_network

クラスターに利用可能なネットワークの中から 1 つ選択します。RHV からの UUID を使用します。

VMware でプロビジョニングされるホストに固有のキー

 

compute_type

ネットワークアダプターのタイプ。vSphere のバージョンに合わせて指定します。

compute_network

VMware からのネットワーク ID

表6.2 プロビジョニングに固有のホストオプション

プロバイダーキー

--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 つを選択してください (CommandsKatelloPackagesPowerPuppet または 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 を参照してください。