thulium_drake.foreman
AnsibleによるForeman構成
このロールは、組織やコンテンツを持つForemanまたはSatelliteサーバーをプロビジョニングする手段を提供します。
このロールを動作させるためには、以下のAnsibleコレクションが必要です:
- 'theforeman.foreman' 3.4.0以上
- 'ansible.utils' 2.6.0以上
- 'ansible.posix' 1.4.0以上
Ansible 2.12以上でテスト済みです。
このロールは、Foreman 3.2 / Katello 4.4以上、またはRed Hat Satellite 6.11以上をサポートします。
Ansibleコントローラーに対するその他の要件:
- python-netaddr(サブネット関連のタスク用)
ガイダンスのために例のインベントリとプレイブックをチェックしてください!または私のブログ記事を読んでみてください。
Satelliteオフラインインストール
オフラインインストールISOを使用してSatelliteをインストールしたい場合は、インストールISOまたはミラーからRHELリポジトリを構成していることを確認してください。
コンテンツビュー(CV)、コンポジットコンテンツビュー(COV)および公開
このロールを使用して新しいコンテンツビューやコンポジットを作成する際は、以下の戦略が適用されます:
- コンテンツビューは、それに含まれる製品と同じ名前で作成されます。
- 新しく作成されたリポジトリは、作成後に同期されます(非同期で)。
- 新しく作成されたコンポジットコンテンツビューは、組織内のすべてのライフサイクル環境に昇格されます。
このアイデアの背後には、COVがクライアントに関連付けられている唯一のものであるという考えがあります。基本的なCVはライブラリにのみ存在し、他の環境に昇格させてはなりません。
すべてのCOVには自動公開が有効になっており、新しいバージョンを「タグ付け」し公開するためのサンプルプレイブックも提供されています。
ホスト発見
ホスト発見のために、以下のレコードをDNSに登録して、FDIが正しいサーバーに報告できるようにします:
- Foremanサーバー用:
_x-foreman._tcp.dev.example.com 600 IN SRV 0 5 443 foreman.dev.example.com
- Foreman Smartプロキシ用:
_x-foreman._tcp.dev.example.com 600 IN SRV 0 5 8443 fm-proxy.dev.example.com
環境がこれらのレコードで機能しない場合は、foreman_discovery_image_autodetectをfalseに設定できます。これにより、Foremanのデフォルト設定が使用されます。Smartプロキシを使用する場合は、これが問題を引き起こすことがあります。
Smartプロキシのインストール
Smartプロキシに使用される設定の一部はForemanサーバーと共有されています。重複設定を防ぐために、以下のインベントリが推奨されます:
[foreman]
foreman.infra.example.com
[foreman_proxies]
fm-proxy.dev.example.com
[foreman_infra]
[foreman_infra:children]
foreman
foreman_proxies
次に、foreman_infraのグループ変数にForemanのすべてのグローバル設定を配置します。これにより、サーバーとプロキシの両方で利用可能になります。各Foremanシステム(サーバーまたはプロキシ)のインスタンス固有の設定を含むhost_varsを作成できます。
限界、バグとワークアラウンド
時にはインストーラーがForemanサービスの構成を正常に完了できないことがあります。Ansibleタスクは、その場合にトリガーされるように設定されています(--detailed-exitcodesをサポートしないForeman/Satelliteのバージョンを実行していない限り)。
問題が発生した場合は、以下の手順に従って問題を特定してください:
foreman-installer
を手動で実行します(引数は必要ありません)。これにより、どこを探すべきかの一般的な方向が示されます。- /var/log/foreman-installerのログを確認します。
- Foremanサービスを再起動します。これにより、時々「リセット」され、Foremanがインストーラーを正常に終了することがあります。
特定の事柄については、以下をご参照ください。
デプロイメント、ディスカバリーおよびUEFIとBIOSとiPXEに関する情報
テストにより、さまざまな設定がホストがネットワークからブートできるかどうかに影響を与えることが示されています。
以下のセットアップをテストしました:
ディスカバリー:
KVM
- BIOS:このロールにより構成されたデフォルト設定で動作します。iPXEでも使用できます。
- UEFI:少し不安定ですが、TFTPがタイムアウトするため、PXEからFDIを読み込もうとすると問題が発生するかもしれません。iPXEは正常に動作します。
HyperV:
- Gen1(BIOS):構成されたデフォルト設定で動作します。iPXEでも使用できます。
- Gen2(UEFI):iPXEが必要で、SecureBootを無効にしなければなりません。
OSデプロイメント:
KVM
- BIOS:このロールにより構成されたデフォルト設定で動作します。iPXEでも使用できます。
- UEFI:このロールによるデフォルト設定で
pxe_loader: 'Grub2 UEFI'
を使用します。iPXEでも使用できます。
HyperV:
- Gen1(BIOS):このロールにより構成されたデフォルト設定でCentOS7まで動作します。CentOS8以降はGen2が必要です。
- Gen2(UEFI):iPXEが必要で、SecureBootを無効にしなければなりません。
ローカルブート
KVM
- BIOS:正常に動作します。iPXEでも使用できます。
- UEFI:このロールによるデフォルト設定で
pxe_loader: 'Grub2 UEFI'
を使用します。UEFIシステムメニューでiPXEがハングする場合があります。https://community.theforeman.org/t/ipxe-does-not-boot-local-hard-disk-on-uefi/21437
HyperV:
- Gen1:正常に動作します。
- Gen2:正常に動作しますが、SecureBootを無効にしなければなりません。
iPXEを有効にするにはforeman_deploy_ipxe: true
を設定し、OSに対してpxe_loader: 'None'
を使用します。
バグ:OS作成エラー
ホスト -> オペレーティングシステムからすべてのOSを削除します(Foremanサーバーに関連するものは削除できません)。
限界:パスワードを含むリソースは常に変更される
Foremanモジュールはパスワードフィールドに設定された現在のパスワードを見ることができないため、比較できません。
したがって、これらは常に変更されます(オペレーティングシステム、アップストリームレポ資格情報など)。これにより、変更されたリソースによって追加のアクションが必要になることがあります。現時点では問題となっていませんが、プレイブックの実行に少し時間がかかることがあります。
限界:ホストグループは常にリスト内の最初のパーティションテーブルを使用する
ホストグループは、アクティベーションキー、オペレーティングシステム、およびライフサイクルの組み合わせの結果であるため、設定可能性は限られています。執筆時点で、このロールはすべてのホストグループに同じパーティションテーブルを構成します。
異なるパーティションテーブルによるデプロイメントの例は以下の通りです:
# 以下のパーティションテーブルは、自動パーティショニングのために
# 最初のディスク以外すべてのディスクを無視するように設定されています。
# ディスクの種類(vdまたはsd)を自動検出しないため、
# 使用されるディスクをハードコードする必要があります。
foreman_partition_tables:
- name: 'Kickstart default first disk only'
os_family: 'Redhat'
layout: |
<%#
kind: ptable
name: Kickstart default first disk only
model: Ptable
description: Ansibleによって管理されています。変更は失われます。
%>
zerombr
clearpart --all --initlabel
ignoredisk --use-only=sda
autopart <%= host_param('autopart_options') %>
foreman_operating_systems:
- name: 'CentOS'
major_version: 7
arch:
- 'x86_64'
os_family: 'Redhat'
kickstart: true
kickstart_repo: 'CentOS7-Base'
partitions:
- 'Kickstart default first disk only'
root_pass: 'some_password'
parameters:
- name: 'autopart_options'
value: '--nohome'