注釈:本記事の手順は、公式ドキュメント「Migrate from On Premise Chef Automate/Infra Server to Chef Declarative State Management (DSM) in On Premise Chef 360 Platform」を日本語に翻訳したものです。
はじめに
既存の Chef Infra Server データを、Chef 360 Platform の Chef Declarative State Management (DSM) に移行することができます。このプロセスにより、組織、ユーザー、クックブック、ポリシー、ロール、環境、データバッグ、ノード、その他 Chef Infra Server のデータが Chef DSM にインポートされます。1つまたは複数の組織を、単一の Chef 360 Platform テナントに移行可能です。
インポートプロセスでは、knife-ec-backup ツールを使用して Chef Infra Server からデータをエクスポートします。バックアップファイルを Chef 360 Platform にアップロードした後、データは自動的に処理され、Chef DSM に復元されます。
事前準備と推奨事項
- 移行作業はオフピーク時に実施してください。
- 可能な限り、非常に巨大な組織は複数の小さなバックアップに分割してください。
- エクスポート前に不要なオブジェクトを整理してください。
- インポート中はシステムリソースを監視してください。
移行時に発生するオブジェクトのマッピング
Chef Infra Server から Chef DSM へのデータ移行については、以下の概念的マッピングを参照してください。
| Chef Infra Server | Chef 360 Platform |
|---|---|
| Organizations | Tenant organizations |
| Users | Users and organization membership |
| Nodes | Nodes in Node Management and DSM inventory |
組織名の確認
作業を進める前に、既存の組織を確認して意図しないデータ損失を回避してください。インポート中、組織には以下のルールが適用されます。
- バックアップ内に存在し、Chef 360 Platform に存在しない組織は自動的に作成されます。
- バックアップ内に存在し、Chef 360 Platform に既に存在する組織は、バックアップデータで上書きされます。
- Chef 360 Platform に既に存在し、バックアップ内に存在しない組織はそのまま保持されます。
前提条件
- Chef Infra Server 12 以上
- データをエクスポートする Chef Infra Server への管理者権限
- Chef 360 Platform 1.6.1 以上がインストールされ、稼働していること
- Chef 360 Platform の FQDN およびインポートエンドポイントの詳細
- Chef 360 Platform API エンドポイントへのネットワーク接続
- バックアップ tar ファイルを保存するための十分なストレージ容量
移行ワークフロー
- 必要なツールをすべてダウンロードする。
- 必要なキーを取得し、接続を確認する。
- データの整理とバックアップを作成する。
- データを Chef DSM にインポートする。
- インポートを検証する。
- ノードと knife を Chef DSM に接続する。
必要なツールのダウンロード
- Chef 360 Platform UI の「Download Centre」から
chef-import-cliをダウンロードします。 - Habitat のインストール手順に従って Habitat をインストールします。
knife-ec-backupHabitat パッケージ(バージョン 3.0.7 以上)をインストールします。hab pkg install chef/knife-ec-backup -bf
デバイス登録と認証の設定
データのエクスポートとインポートを行う前に、デバイスを登録し、認証を設定します。
- デバイスを登録します。
chef-import-cli register-device --url "https://<CHEF_360_PLATFORM_URL>" --profile-name "chef-server-import" --device-name "<DEVICE_NAME>" - デフォルトプロファイルを設定します。
chef-import-cli set-default-profile chef-server-import - バックアップファイルの SHA256 チェックサムを生成します。
chef-import-cli importservice generate-sha256 --file /path/to/backup/chef-server-backup.tar.gz
Chef Infra Server からのエクスポート
Pivotal 秘密鍵の取得
pivotal.pem を取得するには、Chef の秘密情報 JSON から抽出する必要があります。以下のコマンドを実行し、パスを適宜置き換えてください。
/opt/opscode/embedded/bin/veil-dump-secrets /etc/opscode/private-chef-secrets.json | /opt/opscode/embedded/bin/ruby -rjson -e 'puts JSON.parse(STDIN.read)["chef-server"]["superuser_key"]' > <PATH_TO_PIVOTAL_KEY>
Chef Infra Server のバックアップ作成
以下のコマンドでバックアップを作成します。
hab pkg exec chef/knife-ec-backup knife ec backup backup_$(date +'%Y%m%d%H%M%s') --webui-key /etc/opscode/webui_priv.pem --with-key-sql -s <CHEF_INFRA_SERVER_URL> -u <CHEF_INFRA_SERVER_ADMIN_USER> -k <PATH_TO_PIVOTAL_KEY>
Chef DSM へのデータインポート
バックアップファイルのアップロード
- インポートプロセスを作成し、アップロード URL を取得します。
chef-import-cli importservice create-import-process --body '{"filename":"chef-server-backup.tar.gz","sha256sum":"<SHA256_CHECKSUM>"}' --importType dsm-import --profile chef-server-import - バックアップファイルが 5GB 未満の場合は
curlでアップロードします。curl -X PUT '<UPLOAD_URL>' -H 'Content-Type: application/gzip' --data-binary @<PATH_TO_SERVER_BACKUP_TAR>
インポートの進捗監視
以下のコマンドでステータスを確認します。
chef-import-cli importservice get-import-process-status --importId "<IMPORT_ID>" --profile chef-server-import --format json
インポートの検証と完了
- Chef 360 Platform UI の「DSM」ページにアクセスし、組織、ノード、クックブック等が正しくインポートされているか確認します。
- 完了後、
knifeの設定ファイル(config.rb)のchef_server_urlを Chef 360 Platform のエンドポイントに更新します。 - 各ノードの
/etc/chef/client.rbを更新し、Chef 360 Platform を指すように設定を変更します。
おわりに:技術サポート・移行支援のご案内
弊社では、今回のようなChef Infra Serverからの移行に不安を抱えるお客様に対し、現在の環境の構成やInSpecの活用状況を詳細にアセスメントし、最適な移行ロードマップをご提案するサポートを実施しております。
- 「自社環境ではSaaS版とSelf-Managed版のどちらが最適か」
- 「具体的な移行手順や必要な期間を知りたい」
といったご相談がございましたら、お客様のDevOps推進を支援する弊社の専門チームまで、ぜひお気軽にお問い合わせください。