8.4.15. ブートストラップ Ignition ファイルの準備
OpenShift Container Platform インストールプロセスは、ブートストラップ Ignition 設定ファイルから作成されるブートストラップマシンに依存します。
ファイルを編集し、アップロードします。次に、Red Hat OpenStack Platform (RHOSP) がプライマリーファイルをダウンロードする際に使用するセカンダリーブートストラップ Ignition 設定ファイルを作成します。
前提条件
-
インストーラープログラムが生成するブートストラップ Ignition ファイル
bootstrap.ign
があります。 インストーラーのメタデータファイルのインフラストラクチャー ID は環境変数 (
$INFRA_ID
) として設定されます。- 変数が設定されていない場合は、Kubernetes マニフェストおよび Ignition 設定ファイルの作成 を参照してください。
HTTP(S) でアクセス可能な方法でブートストラップ Ignition ファイルを保存できます。
- 記載された手順では RHOSP イメージサービス (Glance) を使用しますが、RHOSP ストレージサービス (Swift)、Amazon S3、内部 HTTP サーバー、またはアドホックの Nova サーバーを使用することもできます。
手順
以下の Python スクリプトを実行します。スクリプトはブートストラップ Ignition ファイルを変更して、ホスト名および利用可能な場合は、実行時の CA 証明書ファイルを設定します。
import base64 import json import os with open('bootstrap.ign', 'r') as f: ignition = json.load(f) files = ignition['storage'].get('files', []) infra_id = os.environ.get('INFRA_ID', 'openshift').encode() hostname_b64 = base64.standard_b64encode(infra_id + b'-bootstrap\n').decode().strip() files.append( { 'path': '/etc/hostname', 'mode': 420, 'contents': { 'source': 'data:text/plain;charset=utf-8;base64,' + hostname_b64, 'verification': {} }, 'filesystem': 'root', }) ca_cert_path = os.environ.get('OS_CACERT', '') if ca_cert_path: with open(ca_cert_path, 'r') as f: ca_cert = f.read().encode() ca_cert_b64 = base64.standard_b64encode(ca_cert).decode().strip() files.append( { 'path': '/opt/openshift/tls/cloud-ca-cert.pem', 'mode': 420, 'contents': { 'source': 'data:text/plain;charset=utf-8;base64,' + ca_cert_b64, 'verification': {} }, 'filesystem': 'root', }) ignition['storage']['files'] = files; with open('bootstrap.ign', 'w') as f: json.dump(ignition, f)
RHOSP CLI を使用して、ブートストラップ Ignition ファイルを使用するイメージを作成します。
$ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
イメージの詳細を取得します。
$ openstack image show <image_name>
file
値をメモします。これはv2/images/<image_ID>/file
パターンをベースとしています。注記作成したイメージがアクティブであることを確認します。
イメージサービスのパブリックアドレスを取得します。
$ openstack catalog show image
-
パブリックアドレスとイメージ
file
値を組み合わせ、結果を保存場所として保存します。この場所は、<image_service_public_URL>/v2/images/<image_ID>/file
パターンをベースとしています。 認証トークンを生成し、トークン ID を保存します。
$ openstack token issue -c id -f value
$INFRA_ID-bootstrap-ignition.json
というファイルに以下のコンテンツを挿入し、独自の値に一致するようにプレースホルダーを編集します。{ "ignition": { "config": { "append": [{ "source": "<storage_url>", 1 "verification": {}, "httpHeaders": [{ "name": "X-Auth-Token", 2 "value": "<token_ID>" 3 }] }] }, "security": { "tls": { "certificateAuthorities": [{ "source": "data:text/plain;charset=utf-8;base64,<base64_encoded_certificate>", 4 "verification": {} }] } }, "timeouts": {}, "version": "2.4.0" }, "networkd": {}, "passwd": {}, "storage": {}, "systemd": {} }
- セカンダリー Ignition 設定ファイルを保存します。
ブートストラップ Ignition データはインストール時に RHOSP に渡されます。
ブートストラップ Ignition ファイルには、clouds.yaml
認証情報などの機密情報が含まれます。これを安全な場所に保存し、インストールプロセスの完了後に削除します。