Contents
community.vmwareではvSANを構築・情報取得できるモジュールが提供されています。
このモジュールを使用するには vSAN Management SDK for Python が必要です。
vSANのSDKはダウンロードして手動インストールする必要があるので、そのやり方とvSANモジュールの使い方について説明します。
環境
今回は以下の環境を準備しています。
項目 | バージョン |
---|---|
Python | 3.6.8 |
Ansible Base | 2.10.7 |
community.vmware | 1.9.0 |
vSAN Management SDK for Python | 7.0U2 |
pyvmomi | 7.0.1 |
環境はvenv前提で説明します。
vSAN Management SDK for Pythonインストール
次のURLからそれぞれの環境に合わせたバージョンをダウンロードします。
ダウンロードするにはMy VMwareのアカウントが必要になります。
いくつかの言語でリスト化されたページが表示されるので vsan-sdk-python.zip
をダウンロードします。
ダウンロードしたらアーカイブを解凍します。
1 2 |
(venv) $ unzip vsan-sdk-python.zip |
今回の例では以下のディレクトリを作成してSDKをインストールします。
また、SDKが認識できるように、ここでは環境変数に探索パスを追加します。
1 2 3 |
(venv) $ mkdir vsan_sdk (venv) $ export PYTHONPATH="`pwd`/vsan_sdk:$PYTHONPATH" |
vSANモジュールを動作させるには、以下の2つのファイルが必要なのでコピーします。
- vsanmgmtObjects.py
- vsanapiutils.py
1 2 3 4 |
(venv) $ find vsan-sdk-python/ -type f | grep -e vsanmgmtObjects -e vsanapiutils | xargs -n 1 -i cp {} vsan_sdk/ (venv) $ ls vsan_sdk/ vsanapiutils.py vsanmgmtObjects.py |
それぞれインポートできるか確認します。
1 2 |
(venv) $ python -c 'import vsanapiutils; import vsanmgmtObjects' |
エラーが表示されなければSDKのインストール作業は終わりです。
vSANモジュールを動かす
community.vmwareをインストール
今回はワークディレクトリにインストールします。
1 2 3 4 5 6 7 |
(venv) $ ansible-galaxy collection install community.vmware -p collections (venv) $ ANSIBLE_COLLECTIONS_PATHS=./collections ansible-galaxy collection list (snip) Collection Version ---------------- ------- community.vmware 1.9.0 |
vSANを有効化するPlaybook作成
サンプルとしてvSANを有効にするPlaybookを作成してみます。
1 2 |
(venv) $ vi enable_vsan.yml |
各変数は環境に合わせて変更してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
--- - name: Enable vSAN hosts: localhost gather_facts: false tasks: - name: Eanble vSAN community.vmware.vmware_cluster_vsan: hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" validate_certs: false datacenter_name: "{{ dc1 }}" cluster_name: "{{ ccr1 }}" enable_vsan: true |
実行してvSANを有効化します。
1 2 3 4 5 6 7 8 9 10 11 |
(venv) $ ansible-playbook enable_vsan.yml [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [Enable vSAN] ************************************************************************************************************************************************************* TASK [Eanble vSAN] ************************************************************************************************************************************************************* changed: [localhost] PLAY RECAP ********************************************************************************************************************************************************************* localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
有効化できました 🙂