6.16. ブートストラップ 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 証明書ファイルを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 } }) 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 } }) ignition['storage']['files'] = files; with open('bootstrap.ign', 'w') as f: json.dump(ignition, f)
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 } }) 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 } }) ignition['storage']['files'] = files; with open('bootstrap.ign', 'w') as f: json.dump(ignition, f)
RHOSP CLI を使用して、ブートストラップ Ignition ファイルを使用するイメージを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
$ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
イメージの詳細を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack image show <image_name>
$ openstack image show <image_name>
file
値をメモします。これはv2/images/<image_ID>/file
パターンをベースとしています。注記作成したイメージがアクティブであることを確認します。
イメージサービスのパブリックアドレスを取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack catalog show image
$ openstack catalog show image
-
パブリックアドレスとイメージ
file
値を組み合わせ、結果を保存場所として保存します。この場所は、<image_service_public_URL>/v2/images/<image_ID>/file
パターンをベースとしています。 認証トークンを生成し、トークン ID を保存します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack token issue -c id -f value
$ openstack token issue -c id -f value
$INFRA_ID-bootstrap-ignition.json
というファイルに以下のコンテンツを挿入し、独自の値に一致するようにプレースホルダーを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "ignition": { "config": { "merge": [{ "source": "<storage_url>", "httpHeaders": [{ "name": "X-Auth-Token", "value": "<token_ID>" }] }] }, "security": { "tls": { "certificateAuthorities": [{ "source": "data:text/plain;charset=utf-8;base64,<base64_encoded_certificate>" }] } }, "version": "3.2.0" } }
{ "ignition": { "config": { "merge": [{ "source": "<storage_url>",
1 "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 }] } }, "version": "3.2.0" } }
- セカンダリー Ignition 設定ファイルを保存します。
ブートストラップ Ignition データはインストール時に RHOSP に渡されます。
ブートストラップ Ignition ファイルには、clouds.yaml
認証情報などの機密情報が含まれます。これを安全な場所に保存し、インストールプロセスの完了後に削除します。