Python と Excel を使用した動的なリスクベースの更新」
このブログでは、単純な Ansible サーバー更新スクリプトを使用して、それを リスクベースの更新システム に変えます。ここでは、リスクが最も低いサーバーに最初にパッチが適用され、優先度の高いシステムに移る前に徹底的にテストする機会が与えられます。
-
Ansible の自動化:
- Python と Excel を使用した動的なリスクベースの更新"
- ホストファイル
- 動的ホストリスト
- hosts ファイルを使用しないのはなぜですか?
秘伝のソース?このフローをシームレスに行うために、明確に定義されたグループを設定します。しかし、本当の疑問は、前回から Ansible スクリプトを大幅に変更せずにこれを実行できるかということです。調べてみましょう!
ホストファイル
ホスト ファイルはこの変更の中心です。前回の投稿では、サーバーの種類ごとにグループ化された静的ファイルを使用しました。ここで、リスク レベルごとにグループ化する 2 番目のレイヤーを追加します。これにより、ホスト ファイルが若干複雑になります。
しかし、ここにひねりがあり、ホスト ファイルがより汎用的なソースから動的に生成できたらどうなるでしょうか?そうすれば柔軟性が保たれ、無限のファイル編集をしなくて済みます!
動的ホストリスト
Ansible は動的に作成されたホスト ファイルを操作できるため、サーバーを追跡するためのより柔軟な方法が得られます。この例では、Excel ファイルを使用してホストを整理します。
hosts_data.xlsx 構造の例:
Host Name | Server Environment | Ansible User | Server Type | DNS | Notes |
---|---|---|---|---|---|
mint | dev | richard | desktop | desktop.sebostech.LOCAL | Mint desk top |
ansible_node | dev | ansible_admin | Ansible | ansible_node.sebostech.local | Development server; Only updates monthly |
clone_master | dev | ansible_admin | clone | clone.dev.sebostech.local | Development server; Only updates monthly |
mele | staging | richard | nas | nas.stage.sebostech.local | Testing server; Used for application testing |
pbs | production | root | backup server | pbs.prod.sebostech.local | Testing server; Used for application testing |
pve | production | root | hypervisor | api.stage.sebostech.local | Testing server; Used for application testing |
samba | production | richard | nas | nas.prod.sebostech.local | Critical server; Requires daily backup |
firewall | production | richard | firewall | firewall.sebostech.local | Critical server; Requires daily backup |
ほとんどの IT 部門はすでにサーバーのリストを Excel ファイルに隠しています。それを有効に活用してみてはいかがでしょうか?このアプローチにより、定期的な手動更新を行わなくても、Ansible ホストを整理して最新の状態に保つことが簡単になります。
しかし、Ansible は Excel ファイルをどのように使用するのでしょうか?このデータを使用可能な動的インベントリに変換する方法を詳しく見てみましょう!
## This will run agains all host ansible-playbook -i dynamic_inventory.py playbook.yml
環境変数オプションを使用して、サーバー環境、サーバー タイプ、または両方の組み合わせに基づいて、特定のグループをターゲットにすることもできます。
## Just production SERVER_ENVIRONMENT="production" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## Just nas SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## production nas SERVER_ENVIRONMENT="production" SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"
新しいグループが必要ですか? Excel ファイルを更新し、それに応じて Python スクリプトを調整するだけです。とても簡単です!
Python コードについては、ここを参照してください。
hosts ファイルを使用しないのはなぜですか?
私が初めて Ansible を使い始めたとき、頼りになるのは hosts ファイルでした。しかし、サーバーを追加するにつれて、特に二重の役割を持つサーバーを追加すると、そのファイルはますます複雑になりました。
これを実現するために従来の hosts ファイルを使用できますか?確かに、しかし欠点もいくつかあります。
hosts ファイルを使用すると、必要な構造をすべてキャプチャするために、エントリが重複したり、変数が追加されたりする可能性があります。一方、Excel ファイルは、整理整頓された、維持しやすい構造を提供します。
企業環境では、サーバー リストを含む Excel ファイルが既に 1 つ以上ある可能性が高いので、それを活用してみてはいかがでしょうか?
Python コードについてさらに詳しく知りたい場合は、お知らせください。
以上がPython と Excel を使用した動的なリスクベースの更新の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ThedifferencebetweenaforloopandawhileloopinPythonisthataforloopisusedwhenthenumberofiterationsisknowninadvance,whileawhileloopisusedwhenaconditionneedstobecheckedrepeatedlywithoutknowingthenumberofiterations.1)Forloopsareidealforiteratingoversequence

Pythonでは、ループの場合は、反復の数がわかっている場合に適していますが、ループは反復の数が不明で、より多くの制御が必要な場合に適しています。 1)ループの場合は、簡潔なコードとPythonicコードを使用して、リスト、文字列などのトラバーシーケンスに適しています。 2)条件に応じてループを制御する必要がある場合やユーザーの入力を待つ必要がある場合、ループがより適切ですが、無限のループを避けるために注意を払う必要があります。 3)パフォーマンスに関しては、FORループはわずかに高速ですが、通常、違いは大きくありません。適切なループタイプを選択すると、コードの効率と読みやすさが向上します。

Pythonでは、リストを5つの方法でマージできます。1)シンプルで直感的なオペレーターを使用して、小さなリストに適しています。 2)extend()メソッドを使用して、頻繁に更新する必要があるリストに適した元のリストを直接変更します。 3)要素上でリストの分析式、簡潔、動作を使用する。 4)itertools.chain()関数を使用して効率的なメモリになり、大規模なデータセットに適しています。 5)要素をペアにする必要があるシーンに適しているように、 *演算子とzip()関数を使用します。各方法には特定の用途と利点と短所があり、選択する際にはプロジェクトの要件とパフォーマンスを考慮する必要があります。

forlopseused whenthentheNumberofiterationsiskが、whileloopsareuseduntiLaconditionismet.1)forloopsareideal for sequenceslikelists、usingsintaxlike'forfruitinfruits:print(fruit) '.2)

toconcatenatealistoflistsinpython、useextend、listcomprehensions、itertools.chain、またはrecursivefunctions.1)extendistraighttraightrawardbutverbose.2)listcomprehesionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsised effective forlargerdatasets.3)itertools.chainmerymery-emery-efforience-forforladatas

Tomergelistsinpython、あなたはオペレーター、extendmethod、listcomfulting、olitertools.chain、それぞれの特異的advantages:1)operatorissimplebutlessforlargelist;

Python 3では、2つのリストをさまざまな方法で接続できます。1)小さなリストに適したオペレーターを使用しますが、大きなリストには非効率的です。 2)メモリ効率が高い大規模なリストに適した拡張方法を使用しますが、元のリストは変更されます。 3)元のリストを変更せずに、複数のリストをマージするのに適した *オペレーターを使用します。 4)Itertools.chainを使用します。これは、メモリ効率が高い大きなデータセットに適しています。

Join()メソッドを使用することは、Pythonのリストから文字列を接続する最も効率的な方法です。 1)join()メソッドを使用して、効率的で読みやすくなります。 2)サイクルは、大きなリストに演算子を非効率的に使用します。 3)リスト理解とJoin()の組み合わせは、変換が必要なシナリオに適しています。 4)redoce()メソッドは、他のタイプの削減に適していますが、文字列の連結には非効率的です。完全な文は終了します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版
便利なJavaScript開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
