前提・実現したいこと
自宅で ESXi と AWX を使い、仮想マシンへプロビジョニングできる環境を構築中です。
ESXi Hypervisor を導入したホスト (host01) と、AWX を動かしているホスト (host02) があります。
host01 には 4台の仮想マシンが動いており、 govc
を叩いて情報が取得できる事を確認しています。
$ govc find . -name '*host01*' /ha-datacenter/host/host01.example.com /ha-datacenter/host/host01.example.com/host01.example.com /ha-datacenter/vm/host01-guest01 /ha-datacenter/vm/host01-guest02 /ha-datacenter/vm/host01-guest03 /ha-datacenter/vm/host01-guest04
このとき、AWX から ESXi ホストに対し、インベントリソースを使って仮想マシンのインベントリ情報を収集しようとしています。
インベントリソースとして「VMware vCenter」を指定していますが、 vmware_vm_inventory
のドキュメントを見る限りでは ESXi サーバを指定することも可能だと見受けられたため使用しています。
vmware_vm_inventory – VMware Guest inventory source
そのため、ドキュメントの記載の通り、認証情報とインベントリソースを設定しました。
15.3.4.1.5. VMware vCenter - Ansible Tower User Guide 3.7.1
この状態でインベントリの同期を試しましたが、エラーが出力されます。
質問したい事は、以下の3点です。
- 以下のエラーを解決する方法はあるのでしょうか
- 上記以外の方法で AWX のインベントリソースとして ESXi ホスト単体を指定可能なのでしょうか
- 指定可能であれば、どのように設定すればよいでしょうか(参考リンクなどで構いません)
発生している問題・エラーメッセージ
インベントリ同期のジョブを実行すると、以下のエラーが出力されます。
ansible-inventory 2.9.7 config file = /etc/ansible/ansible.cfg configured module search path = ['/var/lib/awx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible-inventory python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)] Using /etc/ansible/ansible.cfg as config file setting up inventory plugins [WARNING]: * Failed to parse /tmp/awx_31_s98nn87d/vmware_vm_inventory.yml with auto plugin: 'NoneType' object has no attribute 'field' File "/usr/lib/python3.6/site-packages/ansible/inventory/manager.py", line 280, in parse_source plugin.parse(self._inventory, self._loader, source, cache=cache) File "/usr/lib/python3.6/site-packages/ansible/plugins/inventory/auto.py", line 58, in parse plugin.parse(inventory, loader, path, cache=cache) File "/var/lib/awx/vendor/inventory_collections/ansible_collections/community/vmware/plugins/inventory/vmware_vm_inventory.py", line 606, in parse cacheable_results = self._populate_from_source() File "/var/lib/awx/vendor/inventory_collections/ansible_collections/community/vmware/plugins/inventory/vmware_vm_inventory.py", line 670, in _populate_from_source field_mgr = self.pyv.content.customFieldsManager.field [WARNING]: Unable to parse /tmp/awx_31_s98nn87d/vmware_vm_inventory.yml as an inventory source ERROR! No inventory was parsed, please check your configuration and options.
以下は上記を含めたジョブ出力の全文です。
1.244 INFO Updating inventory 3: test-cluster 1.512 DEBUG Using base command: python /usr/bin/ansible-inventory -i /tmp/awx_31_s98nn87d/vmware_vm_inventory.yml --playbook-dir /tmp/awx_31_s98nn87d -vvvvv 1.512 INFO Reading Ansible inventory source: /tmp/awx_31_s98nn87d/vmware_vm_inventory.yml 1.513 INFO Using VIRTUAL_ENV: /var/lib/awx/venv/ansible 1.513 INFO Using PATH: /var/lib/awx/venv/ansible/bin:/var/lib/awx/venv/awx/bin:/usr/pgsql-10/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 1.513 INFO Using PYTHONPATH: /var/lib/awx/venv/ansible/lib/python3.6/site-packages: Traceback (most recent call last): File "/var/lib/awx/venv/awx/bin/awx-manage", line 8, in <module> sys.exit(manage()) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/__init__.py", line 152, in manage execute_from_command_line(sys.argv) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line utility.execute() File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/django/core/management/base.py", line 364, in execute output = self.handle(*args, **options) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/main/management/commands/inventory_import.py", line 1139, in handle raise exc File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/main/management/commands/inventory_import.py", line 1029, in handle venv_path=venv_path, verbosity=self.verbosity).load() File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/main/management/commands/inventory_import.py", line 215, in load return self.command_to_json(base_args + ['--list']) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/main/management/commands/inventory_import.py", line 198, in command_to_json self.method, proc.returncode, stdout, stderr)) RuntimeError: ansible-inventory failed (rc=1) with stdout: stderr: ansible-inventory 2.9.7 config file = /etc/ansible/ansible.cfg configured module search path = ['/var/lib/awx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible-inventory python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)] Using /etc/ansible/ansible.cfg as config file setting up inventory plugins [WARNING]: * Failed to parse /tmp/awx_31_s98nn87d/vmware_vm_inventory.yml with auto plugin: 'NoneType' object has no attribute 'field' File "/usr/lib/python3.6/site-packages/ansible/inventory/manager.py", line 280, in parse_source plugin.parse(self._inventory, self._loader, source, cache=cache) File "/usr/lib/python3.6/site-packages/ansible/plugins/inventory/auto.py", line 58, in parse plugin.parse(inventory, loader, path, cache=cache) File "/var/lib/awx/vendor/inventory_collections/ansible_collections/community/vmware/plugins/inventory/vmware_vm_inventory.py", line 606, in parse cacheable_results = self._populate_from_source() File "/var/lib/awx/vendor/inventory_collections/ansible_collections/community/vmware/plugins/inventory/vmware_vm_inventory.py", line 670, in _populate_from_source field_mgr = self.pyv.content.customFieldsManager.field [WARNING]: Unable to parse /tmp/awx_31_s98nn87d/vmware_vm_inventory.yml as an inventory source ERROR! No inventory was parsed, please check your configuration and options.
試したこと
AWX からそもそもログインできているのかについて確認しました(ホストに到達できているのかも含めて)。
認証情報をわざと変えて実行した所想定したエラーが表示されたため、そもそも到達できていなかったり認証回りでコケているわけではなさそうです。
[WARNING]: * Failed to parse /tmp/awx_32_ls9r6vhp/vmware_vm_inventory.yml with auto plugin: Unable to log on to vCenter or ESXi API at host01.example.com:443 as user01: Cannot complete login due to an incorrect user name or password.
また、自己署名の証明書を独自に作成して ESXi の標準の証明書を置き換えていますが、 validate_certs: False
を設定しても状況は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
- ESXi 7.0.0 (Build 15843807): 無償版で、vCenter Server はありません
- AWX 11.2.0 / Ansible 2.9.7: docker-compose で構築しています
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/30 13:03 編集