このドキュメントでは、NSOやCNCなどのシスコソフトウェアスタックを導入するための仕様駆動の自動化プラットフォームであるプログラマブルインストーラについて説明します。
| フィールド | 値 |
|---|---|
| 製品 | プログラマブルインストーラ |
| ドキュメントタイプ | テクニカルホワイトペーパー:アーキテクチャ、実装、成果 |
| 主な対象者 | ソリューションアーキテクト、プラットフォームエンジニア、DevOps/SRE、デリバリリーダー |
| 二次対象者 | エンジニアリング管理、セキュリティレビューア、プログラムマネージャ |
Programmable Installerは、Ciscoソフトウェアスタック(Network Services Orchestrator(NSO)、Crosswork Network Controller(CNC)、Crosswork Data Gateway(CDG)、Business Process Automation(BPA)など)を、Enterprise Linux(RHELファミリ)および該当する関連インフラストラクチャ(VMware vCenter、OpenShift、KVM、エアギャップのKubernetes)に導入して運用するための仕様駆動の自動化プラットフォームです。 システムは、宣言的インテント(YAML仕様およびオプションのガイド付きインテント生成)を実行(Ansibleロールおよびプレイブック)から分離し、アーティファクトのパッケージ化、長時間実行されるインストール前のバンドルの検証、暗号化されたシークレットの準備、検証ゲートのオーケストレーションを行うPythonコントロールプレーンを使用します。
このホワイトペーパーでは、アーキテクチャ層、主要なデータフロー、実装パターン(ハイブリッドのデータ駆動型アーティファクト検証モデルを含む)、導入モード(ネイティブ、コンテナ化、オンライン、エアギャップ)、および検証とロギングのフレームワークについて説明します。デリバリおよびプラットフォーム組織にとって、このプラットフォームの目的は、手動による作業を減らし、設定ミスやバイナリの不足を早期に解消し、環境固有のパラメータ設定を維持しながら、製品とトポロジ全体で自動化を標準化することです。
キーワード:インフラストラクチャ自動化、宣言型導入、Ansible、YAML仕様、エアギャップパッケージ、アーティファクト検証、Crosswork、NSO、CNC、CDG、BPA、検証ポリシー、DevOps
| ロール | 推奨されるフォーカス |
|---|---|
| 意思決定者/リーダー | 概要、§1価値提案、§8メリットとリスクポスチャ、§10まとめ |
| ソリューションアーキテクト | §3-§6(アーキテクチャ、仕様モデル、実装、導入パターン) |
| DevOps/SRE/デリバリエンジニア | §5-§7、付録B、コンパニオン内部ホワイトペーパー付属書 |
| セキュリティ確認者 | §7セキュリティとコンプライアンスポスチャ、§3.2の信頼境界 |
企業による多層ネットワークの自動化およびオーケストレーション製品の導入は、従来から手間のかかる作業でした。長いランブック、多くの手動ステップ、サイト間のバージョンのずれや、数時間のうちにプロセスが発生する障害(NEDの欠落、OVAパスの誤り、不完全なエアギャップイメージセット)などです。 このパターンでは、コストが増加し、変更ウィンドウが長くなり、監査が困難になります。
プログラマブルインストーラは、インストールを仕様(トポロジ、バージョン、プラットフォームの選択(vCenterとOpenShiftとVanilla VM)、ファイルパス、エンタイトルメント)によってパラメータ化されたプログラムとして扱います。自動化は、可能な限り強力で、お客様を越えて繰り返し可能です。また、クラスタまたは製品をインストールする前に、「準備不可」を明確に示す結果として迅速に処理できるように、事前にチェックが行われます。
| アクター/システム | ロール |
|---|---|
| デリバリーエンジニア | 仕様書の作成または生成、パッケージの実行、Vaultの準備、検証、オーケストレータ、およびAnsible |
| インストーラホスト | Linuxコントロールノード(ネイティブまたはコンテナ)、Python、Ansible構成、アーティファクト用ディスク |
| ターゲットインフラストラクチャ | 仕様ごとのvCenter、OpenShift/KubeVirt、またはvanilla VM |
| 加工品のソース | 内部ミラー、権限付与レイアウト、ソフトウェア配布:環境固有 |
| ダウンストリームシステム | モニタリング、変更管理、オプションのJIRAワークフロー |
| レイヤ | 担当 |
|---|---|
| 仕様 | トポロジ、バージョン、プラットフォーム、パス、資格 |
| コントロール プレーン | パッケージ、バンドル検証、Vaultヘルパー、検証ドライバ、オーケストレータCLI |
| 自動化プレーン | ホストの準備、Kubernetesのライフサイクル、製品のインストール、および初期構成 |
| 成果物 | バイナリ、イメージ、チャート、OVA、tarballs |
| 製品/バンドル |
|---|
| nso |
| CNC |
| CDG |
| BPA |
| CNC + NSO |
仕様は、プラットフォーム(vCenter、OCP、VM、KVMなど)、ホスト、バージョン付きアプリケーション、トポロジ(NSO CFS/RFSレイアウトなど)、エンタイトルメント(NEDおよびアドオンパッケージ)、およびOVA、qcow2イメージ、アプリケーション層のtarballのファイルパスを説明するYAMLドキュメントです。
特定のアプリケーションuser_specは、CNC/CDGのデフォルトとパスフォールバックを提供します。オーケストレータのパーサーは、ユーザの仕様を正しいソースとして扱い、ユーザのキーが存在しないときに共通の仕様エントリを使用します。
インテント・ジェネレータは、一連の質問表、ルール・エンジン(日付駆動型ロジック)、およびintent.yamlへのスキーマバックマッピング。
オーケストレータは、スクリプトまたはインタラクティブな生成インテント、検証バンドル、およびインストールの調整を行うための単一のエントリです。その設計は明らかにハイブリッドです。
Readiness:AReportaggregates discovered artifacts; is_readyis trueは、仕様の解析後に必要なファイルが欠落していない場合に適用されます。このモジュールは、sys.frozenパス解決を介してPyInstaller-frozenバイナリをサポートします。
このコンポーネントは、アーティファクトのパッケージングとホストの前提条件のインストール(オンライン、エアギャップ、自動検出)のためのインタラクティブメニューとCLIモード、およびcombinedCNC_NSOを含むマルチアプリケーションパッケージングを提供します。Ansibleおよびverify-bundleロジックで期待されるアーティファクトツリーを生成します。
このフレームワークでは、階層型ポリシー制御(Global → App → Stage → Individual Check)、チェックの自動検出、構造化ログに対する拡張レポート、およびオプションのJIRA統合が提供されます。オペレータは、導入前または導入後のフェーズを、導入に使用した仕様と同じ仕様に基づいて実行し、自動化を企業の変更の規律に適した品質ゲートに合わせます。
一般的な支店の指標スケール:BPAおよびNSO全体で30回のチェックの順序(list-validation-checksonで確認する必要があります)。
仕様から必要なボルト変数を導出し、ポリシーに基づいてパスワードをプロンプトまたは受け入れ、暗号化されたgroup_vars/all_secrets.yamlとAnsible用のボールトパスワードファイルを生成します。これにより、プレイブックへのアドホックな秘密の埋め込みが削減されます。
| パターン | 要約 |
|---|---|
| ネイティブ(AlmaLinux/RHEL) | PYTHONPATHとANSIBLE_CONFIGを設定し、製品ガイドごとにパッケージング、ヴォールト、検証、オーケストレータ、プレイブックを実行 |
| Dockerベースのインストーラ | scripts/setup_installer.shおよびscripts/start_installer.shとホストマウントの組み合わせにより、大きなアーティファクトに対応。 |
| エアギャップ | 接続されたマシン上のパッケージ、バンドルの転送、ターゲットへの抽出、インストール—airgap |
| macOSバンドルの作成 | Usepython3 ./setup_cxinstaller_prereqs.py をMacで使用してバンドルを準備し、プロジェクト文書に従ってLinux指向の導入を目標とする |
配置前の呼び出しの例:
cd /opt/cx-installer
python3 validation_checks/run_validation_checks.py -t pre -s specification/your_spec.yaml
オプションのフラグ付き:
これは内部ソーシングのモデルであり、より多くのシスコアプリケーションをインストールする場合は、同じ原則に従ってリポジトリを分岐できます。
| テーマ | 成果 |
|---|---|
| 時間と労力 | 手動の手順が少なくて済む。Ansibleまたは製品インストーラで遅れるのではなく、検証バンドルおよび検証フェーズで障害が検出される |
| 一貫性 | 契約間で共有されるスキーマ、ロール、およびアーティファクトのレイアウトにより、「スノーフレーク」の違いが軽減されます |
| 切断された操作 | 文書化されたバンドル転送は、ランタイムダウンロードなしで規制されたネットワークをサポートします |
| ガバナンス | 構造化検証レポートとオプションのJIRAフックにより、変更記録とフォローアップをサポート |
| 拡張性 | 拡張ポイントの消去: ARTIFACT_DEFS、ハンドラ、新しいロール/プレイブック、インテント・スキーマ |
定量的なメトリック(インストール期間、不具合率)は組織に固有です。比較可能なトポロジの従来のランブックに対して基準を設定する必要があります。
統合的な役割の中で新しいタスクを好む。境界が明確な場合は新しい役割を導入する。Wireプレイブックviaimport_playbookorドキュメント化されたエントリプレイブックgroup_vars / varsで安全なデフォルトを維持します。
YAMLスキーマのunderintent-generator/schema/およびchatbot入力を更新します。生成されたファイルがAPP_CONFIGで予期されるファイル名と一致することを確認します。
CX Programmable Installerは、宣言仕様、パッケージングと検証用のPythonコントロールプレーン、およびCrosswork関連製品のスケーラブルで反復可能な展開を実現するAnsible自動化プレーンを、さまざまなインフラストラクチャと接続モデルに組み合わせています。このアーキテクチャは、意図的に意図を実行から切り離し、データに基づくアーティファクトの期待を実用的な場所に適用し、エンタープライズ配信に適した検証およびVaultワークフローを組み込みます。運用に関する付属書(プレイブックテーブル、トラブルシューティングマトリクス、接続マトリクス、拡張コマンドリファレンス)については、このアドバイザリに関連する社内用ホワイトペーパーを参照してください。
| ドキュメント | パス |
|---|---|
| オペレータガイド | README.md |
| リリースプレイブック | リリース_ガイド.md |
| 内部アーキテクチャ付属書 | docs/CX_INSTALLER_TECHNICAL_WHITE_PAPER_INTERNAL.md |
| Docker(オンライン/エアギャップ/使用状況) | SETUP_ONLINE_DOCKER.md, SETUP_AIRGAPPED_DOCKER.md, USAGE_DOCKER.mdを使用する |
| 検証フレームワーク | docs/validation_checks/README.md |
| Vaultマネージャ | docs/scripts/VAULT_SECRETS_MANAGER.md |
| 製品ガイド | docs/nso.md、docs/bpa.md、docs/CNC_VCENTER_DEPLOYMENT_GUIDE.md、docs/CNC_OCP_DEPLOYMENT_GUIDE.md、docs/CNC_NSO_DEPLOYMENT_GUIDE.md |
| インテントジェネレータ | intent-generator/README.md |
| チャットボット/ルールフローの概要 | docs/HowItWorks.md |
cx-installer/
├── ansible_playbooks/ # ansible.cfg, files/, group_vars/, playbooks/, roles/, vars/
├── apps/ # App-specific supporting content
├── deploy/ # Python deploy helpers, logging utilities
├── docs/ # Technical documentation
├── intent-generator/ # Chatbot, rule engine, schemas, output/
├── scripts/ # Docker setup/start, vault_secrets_manager.py, ...
├── specification/ # User specs, samples, common fragments
├── validation_checks/ # Policies, runners, reports
├── cx_deploy_orchestrator.py
├── setup_cxinstaller_prereqs*
├── requirements.txt
└── README.md
セットアップ後のアーティファクトの焦点(標準):ansible_playbooks/files/artifacts/、files/bin/、files/charts/、files/images/。
スクリプト:cx_deploy_orchestrator.py
| 引数 | 説明 |
|---|---|
| – アプリケーション/ -a | nso | crossworksuite | bpa |
| – スペシフィケーション/ -s | YAML仕様へのパス |
| --手順 | generate-intent | verify-bundle |インストール |
| – 確認のみ | バンドルを確認します。準備ができていない場合はゼロ以外で終了します。 |
| – ドライ作動 | ドライ作動(サポートされている場合) |
| —list-specs | 既知の仕様の一覧表示 |
環境(標準セッション):
export PYTHONPATH=$(pwd)
export ANSIBLE_CONFIG=$(pwd)/ansible_playbooks/ansible.cfg
| 用語 | 定義 |
|---|---|
| 仕様 | YAMLユーザー仕様:プラットフォーム、アプリケーション、トポロジ、パス、資格 |
| 意図 | インテントジェネレータまたは手書きの同等のツールから正規化されたYAML |
| バンドル | パッケージ化されたインストーラツリー(通常はtarball)によるエアギャップ転送 |
| オーケストレータ | cx_deploy_orchestrator.py:調整の確認/意図/インストール |
| 成果物の検証 | 必要なバイナリ/イメージがスペックごとに存在するファイルシステムのチェック |
| Vault | シークレット用のVaultで暗号化された変数ファイル |
| NED | ネットワーク要素ドライバパッケージ(NSO) |
| CFS/RFS | NSOクラスタフォワーダ/冗長フォワーダトポロジの概念 |
| エアギャップ | パッケージのダウンロードエンドポイントへのインストーラ時アクセスがない環境 |
| バージョン | 日付 | 注意事項 |
|---|---|---|
| 1.0 | 2026-03-27 | 初期発行準備テクニカルホワイトペーパー(プログラム可能なインストーラのフレーミング) |
| 改定 | 発行日 | コメント |
|---|---|---|
2.0 |
28-Apr-2026
|
初期リリース、フォーマット |
1.0 |
28-Apr-2026
|
初版 |