既存の VMware 仮想マシンの削除¶
シナリオの要件¶
ソフトウェア
- Ansible 2.5 以降がインストールされています。
- Ansible コントロールノード (またはローカルホストで実行していない場合はターゲットホスト) に、Python モジュール
Pyvmomi
をインストールしている必要があります。 - pip で最新バージョンをインストールすることが推奨されます。インストールするには
pip install Pyvmomi
を実行してください (通常は OS パッケージが古く、互換性がないため)。
ハードウェア
- 少なくともスタンドアロンの ESXi サーバー 1 台、または
- ESXi サーバーが 1 台以上搭載されている vCenter Server
アクセス/認証情報
- Ansible (またはターゲットサーバー) には、vCenter サーバーまたは ESXi サーバーへのネットワークアクセスが必要です。
- vCenter サーバーまたは ESXi サーバーのユーザー名およびパスワード
- ESXi クラスター内のホストが、テンプレートが存在するデータストアにアクセスできる必要があります。
注意事項¶
- 変数名および VMware オブジェクト名はすべて大文字と小文字を区別します。
validate_certs
オプションを使用するには、Python 2.7.9 バージョンを使用する必要があります。このバージョンは、SSL 検証の動作を変更できるためです。vmware_guest
モジュールは、VMware Web UI およびワークフローを模倣するため、VMware インベントリーから仮想マシンを削除するには、電源がオフになっている必要があります。
Warning
vmware_guest
モジュールを使用して VMware 仮想マシンを削除することは破壊的な操作であり、元に戻すことができないため、先に進む前に仮想マシンと関連ファイル (vmx ファイルおよび vmdk ファイル) のバックアップを作成することが強く推奨されます。
例の説明¶
このユースケース/例では、名前を使用して仮想マシンを削除します。以下の Ansible Playbook は、これに必要な基本的なパラメーターを示しています。
---
- name:Remove virtual machine
gather_facts: no
vars_files:
- vcenter_vars.yml
vars:
ansible_python_interpreter: "/usr/bin/env python3"
hosts: localhost
tasks:
- set_fact:
vm_name:"VM_0003"
datacenter:"DC1"
- name:Remove "{{ vm_name }}"
vmware_guest:
hostname: "{{ vcenter_server }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
validate_certs: no
cluster: "DC1_C1"
name: "{{ vm_name }}"
state: absent
delegate_to: localhost
register: facts
Ansible は VMware API を使用してアクションを実行するため、このユースケースではローカルホストから API に直接接続されます。
つまり、Playbook は vCenter サーバーまたは ESXi サーバーから実行されないことを示しています。
ローカルホストに関するファクトは収集しないため、このプレイは gather_facts
パラメーターを無効にすることに注意してください。
ローカルホストが vCenter サーバーにアクセスできない場合は、API に接続する別のサーバーに対してこのモジュールを実行できます。その場合は、必要な Python モジュールをターゲットサーバーにインストールする必要があります。pip で最新バージョンをインストールすることが推奨されます。インストールするには pip install Pyvmomi
を実行してください (通常は OS パッケージが古く、互換性がないため)。
開始する前に、以下の点を確認してください。
- ESXi サーバーまたは vCenter サーバーのホスト名
- ESXi サーバーまたは vCenter サーバーのユーザー名およびパスワード
- 削除する既存の仮想マシンの名前
現時点では直接入力しますが、より高度な Playbook では、ansible-vault または Ansible Tower 認証情報 を使用して、より安全な方法でこれを抽象化し、保存できます。
vCenter サーバーまたは ESXi サーバーが Ansible サーバーから検証できる適切な CA 証明書で設定されていない場合は、validate_certs
パラメーターを使用してこの証明書の検証を無効にする必要があります。これを実行するには、Playbook に validate_certs=False
を設定する必要があります。
既存の仮想マシンの名前は、name
パラメーターで vmware_guest
モジュールの入力として使用されます。
予想されること¶
- この Playbook の完了後に、
vmware_guest
モジュールを使用して実行した他の操作と比較した JSON 出力は表示されません。
{
"changed": true
}
- 状態が
True
に変更になり、仮想マシンが VMware インベントリーから削除されることを通知します。環境やネットワーク接続によっては、時間がかかる場合があります。
トラブルシューティング¶
Playbook が失敗した場合は、以下を行います。
- ユーザー名およびパスワードの値が正しいことを確認します。
- 指定したデータセンターが利用可能かどうかを確認します。
- 指定した仮想マシンが存在しているかどうか、およびデータストアにアクセスするパーミッションがあるかどうかを確認します。
- 指定したディレクトリーの完全パスが存在していることを確認します。ディレクトリーが自動的に作成されることはありません。