mwallraf.oneos_upgrader
oneos_upgrader
OneOSソフトウェアを実行しているEkinops OneAccessデバイスのアップグレード用のAnsibleロールです。主に2つのOSバージョンがあります:OneOS 5とOneOS 6です。
OneOS 5はCisco IOS-XEに非常に似ており、ソフトウェアイメージはフラッシュメモリに存在し、どのソフトウェアをロードするかを示すブートコマンドが必要です。
OneOS 6には主要と冗長のソフトウェアバンクがあり、各バンクには異なるソフトウェアがロードされている場合があります。ルーターを再ロードする前に、どのバンクを主要にするかを指定する必要があります。
このロールは、両バージョンを自動的にサポートしています。
要件
- ansible.utils
- mwallraf.ekinops
障害
障害が発生した場合、そのホストのプロセスは中止されます。これにより、レポートが生成されない可能性があります。失敗したホストはレポートにも表示されません。
ロールタグ
このロールのモードを定義するために使用できるタグが4つあります。タグが指定されない場合、完全なアップグレードが実行されます:
- report: プレチェックのみを実行し、ステータスレポートを生成します(このタグはデフォルトで常に実行されます)
- staging: アップグレードの準備のために可能なすべてのタスクを実行しますが、中断を引き起こしません。ほとんどの場合、ステージングプロセス後に再起動のみが必要です
- upload: ファイルのアップロードプロセスのみを実行します。アップグレードに必要なファイルのみがアップロードされます
- upgrade: アップグレードを完了するために必要なすべての手順を実行します
デフォルトのロール変数
以下の変数はデフォルトで設定されていますが、必要に応じてオーバーライドできます:
- auto_configure_pre_requisites: 事前要件の自動設定を切り替えます(例:SCPサーバーを有効にする) デフォルト= true
計算された変数
以下の変数は、指定された変数と実行中の設定に基づいて計算されます:
- running_os_is_compliant: 現在のOSが既に準拠しているかどうかを示します(wanted_os_versionに比較)
- boot_os_is_compliant: ブートOSが既に準拠しているかどうかを示します(wanted_boot_versionに比較)
- scp_is_enabled: SCPが有効かどうかを示します
アップグレードプロセス
タグに応じて、アップグレードプロセスは異なる場合があります。デフォルトでは完全なアップグレードが行われます。
レポートモード
レポートモードでは、基本的なチェックのみを行い、ルーターがアップグレードされるべきか、十分なディスクスペースがあるかを示すレポートを生成します。
使用法:
ansible-playbook -i hosts playbook.yml --tags report
プレイブックタスク:
- 接続して事実を取得
- ルーターとアップグレードプロセスのステータスを判断するために追加の事実を設定
- 各ホストのデバッグメッセージを表示
詳細:
- タスク:
- oneos_upgrader : FACTSを収集 > ホスト名 タグ: [always]
- oneos_upgrader : FACTSを収集 > システムの詳細を取得 タグ: [always]
- oneos_upgrader : FACTSを収集 > sshの詳細を取得 タグ: [always]
- oneos_upgrader : FACTを設定 > 必要なosファイルの統計を取得 タグ: [always]
- oneos_upgrader : FACTを設定 > wanted_os_file_stats タグ: [always]
- oneos_upgrader : FACTを設定 > 必要なブートファイルの統計を取得 タグ: [always]
- oneos_upgrader : FACTを設定 > wanted_boot_file_stats タグ: [always]
- oneos_upgrader : FACTを設定 > 必要なリカバリファイルの統計を取得 タグ: [always]
- oneos_upgrader : FACTを設定 > wanted_recovery_file_stats タグ: [always]
- oneos_upgrader : FACTSを収集 > メモリを表示 タグ: [always]
- oneos_upgrader : FACTを設定 > fact_memory タグ: [always]
- oneos_upgrader : メイン > OS固有のgather_factsタスクを実行 タグ: [report, staging, upgrade]
- oneos_upgrader : FACTを設定 > アップグレードが必要かどうかを計算 タグ: [always]
- oneos_upgrader : FACTを設定 > scp_is_enabled タグ: [always]
- oneos_upgrader : FACTを設定 > ディスクまたはソフトウェアバンクにファイルが存在するかを確認 タグ: [always]
- oneos_upgrader : FACTを設定 > ファイルアップロードの要件 タグ: [always]
- oneos_upgrader : FACTを設定 > disk_space_sufficient_ 事実の計算 タグ: [always]
- oneos_upgrader : レポート > ホストの詳細を取得 タグ: [report, staging, upgrade]
- DEBUG > すべての変数を出力 タグ: [always]
- ファイルを/etc/file.confにテンプレート化 TAGS: [always]
テンプレートはCSVレポートの概要を生成するために予定されています。このタスクは最後に実行される必要があるため、プレイブック内から呼び出す必要があります。
post_tasks:
- name: レポート > ファイルに保存
ansible.builtin.template:
src: "roles/oneos_upgrader/templates/report_overview.j2"
dest: report.txt
tags:
- always
ステージングモード
ステージングモードでは、必要なすべてのチェックが行われ、すべてのファイルがアップロードされ、アップグレードの準備が中断なく進められます。
使用法:
ansible-playbook -i hosts playbook.yml --tags staging
プレイブックタスク:
- 接続して事実を取得
- ルーターとアップグレードプロセスのステータスを判断するために追加の事実を設定
- デバイスに空きがない場合は旧ファイルを削除
- ディスクスペースを再計算
- 事前設定のジョブがある場合は実施されます(例:SCPの有効化)
- 必要に応じてファイルをアップロード
- すべてのファイルに空きがない場合、まずブートファイルがコピーされます
- ソフトウェアバンクまたはブートファイルが準備されます。もし保留中のブートイメージアップグレードがなければです。
複数のアップグレード(BOOT + RECOVERY + OS)が必要な場合、すべてを同時にステージすることはできません。すべてのファイルのための十分なディスクスペースがあれば、アップロードが完了します。ファイルの読み込みは最初のファイル(例:BOOT)のみで行うことができます。続行するためには再起動が必要だからです。したがって、マルチステージアップグレードはステップバイステップで行う必要があります。または、アップグレードプロセス中に追加の手順が実行されます。