Red Hat Training

A Red Hat training course is available for Red Hat Satellite

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

表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"

ジョブ出力 の 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 を参照してください。