Ansible を使って VMware Infrastructure 管理を簡素化する方法

正直なところ、VMware 管理用に Ansible をセットアップするのは、特にスクリプト作成の初心者や、vSphere クライアントに頻繁にアクセスせずにホストを管理したい場合には、簡単ではありません。しかし、一度コツをつかめば、VM のデプロイ、バージョンのチェック、サービスの開始/停止などを自動化することで、膨大な時間を節約できます。注意点として、最初はすべてを構成するのが少し難しいですが、正しい手順に従えば、単一のコマンドまたはプレイブックで複数の ESXi ホストまたは vCenter を管理するのがかなり巧妙であることがわかります。最終的には、Web GUI で何度もクリックすることなく、VM の電源をオンにしたり、ホストでサービスを有効にしたりできるようになります。とはいえ、スキャン、構成の編集、そして場合によっては少し頭を悩ませることも覚悟しておいてください。もちろん、VMware の API はそのままではそれほど使いやすいわけではないからです。

Ansibleを使用してVMwareタスクを自動化する方法

PythonとpyVmomiがインストールされていることを確認してください

  • Linuxコントロールマシンに、VMwareモジュールが依存するPython SDKであるpyVmomiをインストールします。通常は、 を実行するだけです$ sudo pip install pyvmomi。pipが更新されていない古いディストリビューションでは、1、2回失敗するのを確認したので、必要に応じてまずpipを更新してください。
  • Ansible もセットアップされていることを確認してください。多くのディストリビューションのリポジトリには Ansible が含まれていますが、通常は最新バージョンの方が優れています。

VMware インベントリ プラグインを有効にするためにansible.cfgを設定します

  • ここで、Ansible に VMware プラグインを認識させます。/etc/ansible/ansible.cfg を開き以下の行を追加または確認します。
[在庫] enable_plugins = vmware_vm_inventory、host_list、script、auto、yaml、ini、toml
  • 次に、vCenter または ESXi の詳細情報を記述した新しいインベントリ YAML ファイル(例:/etc/ansible/vmware/vmware.yml)を作成します。ここで問題になることが多いのは、Ansible に接続方法を指定しなければならないことです。
  • --- プラグイン: vmware_vm_inventory 厳密: False ホスト名: 192.168.13.70 ユーザー名: [email protected] パスワード: pas1swsew43 検証証明書: False タグ付き: True 

    ヒント:自己署名証明書を使用している場合は、validate_certs をFalseに設定してください。そうしないと、認証に失敗します。

    VMとESXiホストを一覧表示する

    • すべての VM を表示するには、次のコマンドを実行します。
    $ ansible-inventory --list -i /etc/ansible/vmware/vmware.yml
  • クールな階層ビューを表示するには、次を試してください。
  • $ ansible-inventory --graph -i /etc/ansible/vmware/vmware.yml

    インベントリファイルが正しく動作し、正しいサーバーに接続していることを確認するのに役立ちます。警告:認証情報やネットワークが不安定な場合、インベントリコマンドが動作しなくなることがあります。残っているSSHの問題や証明書の警告を修正してから、再度実行してください。

    ESXiホストを/etc/ansible/hostsに追加する

    • ほとんどの人は次のように追加することを好みます。
    [すべての esxi ホスト] esxi1 ansible_host=192.168.31.20 esxi2 ansible_host=192.168.31.21 esxi3 ansible_host=192.168.31.22 
  • 次に、ログイン情報を定義します。
  • [すべての esxi ホスト:変数] ansible_user=ルート ansible_python_interpreter=/bin/python ansible_ssh_pass=P1ssw0rd6 

    注意:ここではパスワードがプレーンテキストで記載されていますが、これは理想的ではありません。セキュリティを強化するには、ESXiホストにSSHキーを設定してください。ただし、これは全く別の話です。

    接続性をテストする

    • すべてのホストがネットワーク経由で応答することを確認します。
    $ ansible all_esxi_hosts -m ping
  • パスワードを要求された場合は、--ask-pass次回フラグを追加できます。または、SSH キー認証を使用すると、煩雑さが軽減されます。
  • ここで、ネットワークと資格情報が確実であるという安心できる「OK」チェックが得られます。

    すべてのESXiホストでコマンドを実行する

    • ESXiのバージョンを知りたいですか?次のコマンドを実行してください。
    $ ansible all_esxi_hosts -m シェル -a "vmware -vl"
  • SSH経由でアクセス可能なものはすべて実行できます。ネットワークの再起動やシステム情報の確認などです。通常は動作しますが、SSHの制限やカスタマイズされた設定によって特定のコマンドがブロックされる可能性があるので注意してください。
  • プレイブックを使用して VM 操作を自動化する

    • vCenterで「munfs01」というVMをパワーオンするためのプレイブックvm_start.ymlの例を以下に示します。vmware_vars.ymlの認証情報が正しいこと、およびcommunity.vmwareコレクションがインストールされていることを確認してください。
    - 名前: vmを起動 ホスト: ローカルホスト 事実収集: 偽 コレクション: - コミュニティ.vmware vars_files: - vmware_vars.yml タスク: - 名前: 電源オン vmware_guest_powerstate: ホスト名: "{{ ホスト名 }}" ユーザー名: "{{ username }}" パスワード: "{{ password }}" 名前: munfs01 検証証明書: "{{ 検証証明書 }}" 状態: 電源オン 

    で実行してください$ ansible-playbook /etc/ansible/vmware/vm_start.yml。その後、vSphere Client を確認してください。VM が起動しているはずです。何か問題がありますか?ログやネットワーク設定を確認してください。問題が発生している場合は、トラブルシューティングが必要になる可能性があります。

    ESXi でサービスを簡単に有効化

    • ESXi ホストで NTP をオンにするための便利なプレイブック スニペットを次に示します。
    --- - ホスト: ローカルホスト だれの: vcenter_hostname: "192.168.31.20" vcenter_user: [email protected] vcenter_パスワード: passwprd123 esxi_ホスト名: 192.168.31.50 esxi_ユーザー名: root esxi_パスワード: es-122023 タスク: - 名前: NTPサービスを開始 community.vmware.vmware_host_service_manager: ホスト名: "{{ vcenter_hostname }}" ユーザー名: "{{ vcenter_user }}" パスワード: "{{ vcenter_password }}" esxi_hostname: "{{ esxi_hostname }}" サービス名: ntpd 状態: 現在 サービスポリシー: オフ 検証証明書: いいえ 委任先: ローカルホスト 

    これを で実行します$ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.yml。注意: 無料の VMware Hypervisor (ESXi フリー) バージョンでは API アクセスが制限されているため、ライセンスの変更や特定の詳細設定など、一部の操作は Ansible からは実行できません。

    追加メモ

    設定には少し忍耐が必要です。APIは必ずしも完璧ではないことを覚えておいてください。また、VMwareは無料版で調整できる範囲について少し曖昧なようです。しかし、一度使いこなせるようになると、定型的なタスクの自動化は病みつきになります。ただし、ワンクリックで奇跡が起こるとは期待しないでください。より複雑な自動化については、GitHubリポジトリのWinhanceをご覧ください。

    これでVMwareの管理にかかる時間を少しでも短縮できれば幸いです。必要な時にすぐに使える優れたプレイブックを用意しておくことに勝るものはありません。

    まとめ

    • pyVmomiをインストールし、ansible.cfgを設定します。
    • VMware インベントリを構成し、接続を確認する
    • ESXiホストをインベントリに追加する
    • コマンドまたはプレイブックを実行して VM とサービスを管理する
    • セキュリティに留意: プレーンパスワードよりもSSHキーを優先する

    まとめ

    セットアップが完了したら、Ansibleを使って多数のESXiホストとVMを管理すると、作業が格段に楽になります。完璧というわけではありませんし、VMware APIは特に無料版では…制限されているように感じることもあります。しかし、自動化に興味のある方であれば、全体的には努力する価値は十分にあります。ただし、ある程度の試行錯誤が必要で、頭を悩ませる瞬間も何度かあるかもしれません。このツールが、誰かの時間を節約したり、将来頭を悩ませる問題を回避したりすることに役立つことを願っています。