AnsibleでVMwareに接続するための初期設定(vCenter/6.7)@CentOS7
AnsibleでVMwareを操作したいと思ったのですが、日本語でまとまった記事が少なく、初心者向けの記事がなかったため記載します。
本記事では、AnsibleでVMwareモジュール(※1)を利用できる環境をセットアップします。
環境
ソフトウェア名 | バージョン |
---|---|
CentOS(for Ansible) | 7-1804 |
Ansible | 2.7.7 |
Python | 2.7.5 |
vCenter | 6.7 |
ESXi | 6.7 |
事前準備
Ansibleコントローラに、Pythonモジュールの pyVmomi と vSphere Automation SDK for Python の導入が必要です。以下の手順で導入していきます。
- pipインストール
- vSphere Automation SDK for Pythonの導入
- pyVmomiモジュールのインストール
pipのインストール
Python用のパッケージ管理ツール(pip)を導入します。
CentOS7のMinimalインストールした状態では、pipは導入されていませんが、
Python 2系だと2.7.9以上、Python 3系では3.4以上だと標準で導入されているようです。
以下に手順を記載します。
- pipをインストールするPythonスクリプトをダウンロードします。
# curl -O https://bootstrap.pypa.io/get-pip.py
- スクリプトを実行し、pipをインストールします。
# python get-pip.py
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
→ Python2.7系のみインストールされていたため、DEPRECATIONが表示されます。
Pyhthon2.7は、2020年の1月までしかサポートされないようです。
また、公式のインストールドキュメントは下記にあります。
https://pip.pypa.io/en/stable/installing/
vSphere Automation SDK for Pythonの導入
VMwareのAPI経由で操作するため、vSphere Automation SDK for Pythonの導入が必要です。
以下の手順で導入します。
- 作業用ディレクトリの作成
# mkdir ~/work
- 作業ディレクトリに移動し、SDKのGitリポジトリをクローン
# cd ~/work
# git clone https://github.com/vmware/vsphere-automation-sdk-python.git
- vSphere Automation SDK for Pythonの導入
# cd vsphere-automation-sdk-python
# pip install --upgrade --force-reinstall -r requirements.txt --extra-index-url file:///<HOME_DIR>/work/vsphere-automation-sdk-python/lib
→ <HOME_DIR>には、実行ユーザのホームディレクトリを指定してください。
以下のメッセージが表示されるとインストール完了です。
<省略> Successfully installed asn1crypto-0.24.0 certifi-2018.11.29 cffi-1.12.0 chardet-3.0.4 cryptography-2.5 enum34-1.1.6 idna-2.8 ipaddress-1.0.22 lxml-4.3.1 nsx-policy-python-sdk-2.3.0.0.2.11053635 nsx-python-sdk-2.3.0.0.2.11053635 pyOpenSSL-19.0.0 pyVmomi-6.7.1.2018.12 pycparser-2.19 requests-2.21.0 setuptools-40.8.0 six-1.12.0 suds-0.4 urllib3-1.24.1 vapi-client-bindings-1.5.0 vapi-common-client-2.10.2 vapi-runtime-2.10.2 vmc-app-python-sdk-2.3.0.0.2.11053635 vmc-client-bindings-1.3.1 werkzeug-0.14.1
エラーが出る場合は、以下で対応します。
enum34でエラーが出る場合
私の環境では、以下のメッセージが表示されてインストールに失敗しました。
Cannot uninstall 'enum34'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
# pip list | grep enum
Package Version ---------------------------- ------------- enum34 1.0.4
→ enum34の1.0.4が導入済みのようです。
pip uninstallコマンドで、アンインストールできなかったため、以下で退避します。# mv -v /usr/lib/python2.7/site-packages/enum* /tmp
pip list
で表示されていないことを確認し、再度モジュールのインストールを実行します。
ipaddressでエラーが出る場合
enum34の対応後、再度インストールを実行すると以下のメッセージが表示されました。
Cannot uninstall 'ipaddress'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
→ enum34の時と同様に該当パッケージを退避し、再度インストールを実施します。
公式のインストール手順は以下に記載されています。
https://github.com/vmware/vsphere-automation-sdk-python#troubleshooting
https://code.vmware.com/web/sdk/6.7/vsphere-automation-python
pyvmomiモジュールのインストール
PythonでVMwareを環境を操作するモジュールであるpyvmomiを導入します。
# pip install pvmoni
以上で、事前準備は完了です。次の項目で、動作を確認します。
VMware Dynamic Inventory Pluginの利用
AnsibleのVMware Dynamic Inventory Pluginを利用し、動作確認します。
- vmware_vm_inventoryを有効にします。
# vi /etc/ansible/ansible.cfg
【記載内容】
[inventory] enable_plugins = vmware_vm_inventory
- 作業対象ディレクトリに.vmware.ymlを作成します。
ここでは、ホームディレクトリに/ansible/vmwareを作成し、ファイルを作成します。# mkdir -p ~/ansible/vmware
# vi ~/ansible/vmware/auth.vmware.yml
【記載内容】
plugin: vmware_vm_inventory strict: False hostname: <対象ホスト> username: <ログインユーザ> password: <パスワード> validate_certs: False with_tags: True
- vmware_vm_inventory概要
- VMware環境からホストインベントリの仮想マシン情報を取得する。
- vmware.ymlもしくはvmware.yamlで終わるファイルを利用する。
- Requirements等、ドキュメントを参照ください。
https://docs.ansible.com/ansible/latest/plugins/inventory/vmware_vm_inventory.html
# ansible-inventory --list -i auth.vmware.yml
→ 情報が取得できたことを確認
具体的な利用方法は別途記載していきます。
参考
※1: AnsibleのVMwareモジュールは2種類あります。以下の記事がわかりやすいです。
Ansible: vSphere Guest モジュールについてのまとめ – Qiita
ディスカッション
コメント一覧
まだ、コメントがありません