このブログでは、単純な Ansible サーバー更新スクリプトを使用して、それを リスクベースの更新システム に変えます。ここでは、リスクが最も低いサーバーに最初にパッチが適用され、優先度の高いシステムに移る前に徹底的にテストする機会が与えられます。
秘伝のソース?このフローをシームレスに行うために、明確に定義されたグループを設定します。しかし、本当の疑問は、前回から 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 コードについては、ここを参照してください。
私が初めて Ansible を使い始めたとき、頼りになるのは hosts ファイルでした。しかし、サーバーを追加するにつれて、特に二重の役割を持つサーバーを追加すると、そのファイルはますます複雑になりました。
これを実現するために従来の hosts ファイルを使用できますか?確かに、しかし欠点もいくつかあります。
hosts ファイルを使用すると、必要な構造をすべてキャプチャするために、エントリが重複したり、変数が追加されたりする可能性があります。一方、Excel ファイルは、整理整頓された、維持しやすい構造を提供します。
企業環境では、サーバー リストを含む Excel ファイルが既に 1 つ以上ある可能性が高いので、それを活用してみてはいかがでしょうか?
Python コードについてさらに詳しく知りたい場合は、お知らせください。
以上がPython と Excel を使用した動的なリスクベースの更新の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。