ansible playbook error was: ModuleNotFoundError: No module named 'azure.mgmt.monitor.version' although the module is installed
ansible playbook error was: ModuleNotFoundError: No module named 'azure.mgmt.monitor.version' although the module is installed
将 ansible 升级到版本 2.10.5 和 python3.8.10 后,我的 playbook.yml 失败并出现此错误。
ModuleNotFoundError: No module named 'azure.mgmt.monitor.version'
fatal: [localhost]: FAILED! => {"attempts": 1, "changed": false, "msg": "Failed to import the required Python library (ansible[azure] (azure >= 2.0.0)) on certrenewplay's Python /usr/bin/python3`
如果我 运行 python3 -c "import azure.mgmt.monitor"
并且如果我 运行 pip3 list
我看到它安装为 azure-mgmt-monitor==2.0.0
剧本代码中出错的确切部分是:
- name: Create _acme-challenge record for zone "{{ env_name_dot }}"
azure_rm_dnsrecordset:
subscription_id: "{{ mgmt_subscription }}"
client_id: "{{ mgmt_vault_azure_client_id }}"
tenant: "{{ mgmt_vault_azure_tenant_id }}"
secret: "{{ mgmt_vault_azure_client_secret }}"
resource_group: "{{ mgmt_rg }}"
relative_name: "_acme-challenge.{{ env_name }}"
zone_name: "{{ dns_zone_name }}.{{ dns_zone_domain }}"
record_type: TXT
state: present
records:
- entry: "{{ cn_challenge_data }}"
time_to_live: 60
when: dns_zone_name != 'activedrop'
register: add_record
retries: 1
delay: 10
until: add_record is succeeded
我不确定自己做错了什么 - 谁能给我建议或帮助我解决这个问题?
谢谢
我认为您没有按照有关从 https://github.com/ansible-collections/azure
安装 azure 集合的说明进行操作
安装集合本身不会安装 python 依赖项,这些依赖项是使用 python pip 安装的,您需要确保将它们安装在同一个 python (v)env 中安装 ansible 的地方,否则 ansible 会给你你在尝试加载模块时看到的错误。
不幸的是,azure-mgmt-monitor 包存在错误,即使在 3.0.0 上也无法正确创建版本子模块。无法准确追踪它在代码中被破坏的位置,但它确实存在,并且在 Ansible Galaxy 模块中直接导入该子模块导致它失败。不幸的是,此时您应该使用 Azure CLI 而忘记使用 azure_rm
同样的问题发生在我身上,因为 Ansible 现在附带了它自己的 Azure 集合版本,并且它与我使用“ansible-galaxy 集合”命令在我自己的剧本中手动安装的版本冲突。
我建议你只使用 Ansible 附带的版本,然后像这样安装它的要求:
pip install -r /usr/lib/python3/dist-packages/ansible_collections/azure/azcollection/requirements-azure.txt
在新安装的系统(例如 Docker 中)正确设置比修复损坏的系统更容易。
将 ansible 升级到版本 2.10.5 和 python3.8.10 后,我的 playbook.yml 失败并出现此错误。
ModuleNotFoundError: No module named 'azure.mgmt.monitor.version'
fatal: [localhost]: FAILED! => {"attempts": 1, "changed": false, "msg": "Failed to import the required Python library (ansible[azure] (azure >= 2.0.0)) on certrenewplay's Python /usr/bin/python3`
如果我 运行 python3 -c "import azure.mgmt.monitor"
并且如果我 运行 pip3 list
我看到它安装为 azure-mgmt-monitor==2.0.0
剧本代码中出错的确切部分是:
- name: Create _acme-challenge record for zone "{{ env_name_dot }}"
azure_rm_dnsrecordset:
subscription_id: "{{ mgmt_subscription }}"
client_id: "{{ mgmt_vault_azure_client_id }}"
tenant: "{{ mgmt_vault_azure_tenant_id }}"
secret: "{{ mgmt_vault_azure_client_secret }}"
resource_group: "{{ mgmt_rg }}"
relative_name: "_acme-challenge.{{ env_name }}"
zone_name: "{{ dns_zone_name }}.{{ dns_zone_domain }}"
record_type: TXT
state: present
records:
- entry: "{{ cn_challenge_data }}"
time_to_live: 60
when: dns_zone_name != 'activedrop'
register: add_record
retries: 1
delay: 10
until: add_record is succeeded
我不确定自己做错了什么 - 谁能给我建议或帮助我解决这个问题? 谢谢
我认为您没有按照有关从 https://github.com/ansible-collections/azure
安装 azure 集合的说明进行操作安装集合本身不会安装 python 依赖项,这些依赖项是使用 python pip 安装的,您需要确保将它们安装在同一个 python (v)env 中安装 ansible 的地方,否则 ansible 会给你你在尝试加载模块时看到的错误。
不幸的是,azure-mgmt-monitor 包存在错误,即使在 3.0.0 上也无法正确创建版本子模块。无法准确追踪它在代码中被破坏的位置,但它确实存在,并且在 Ansible Galaxy 模块中直接导入该子模块导致它失败。不幸的是,此时您应该使用 Azure CLI 而忘记使用 azure_rm
同样的问题发生在我身上,因为 Ansible 现在附带了它自己的 Azure 集合版本,并且它与我使用“ansible-galaxy 集合”命令在我自己的剧本中手动安装的版本冲突。
我建议你只使用 Ansible 附带的版本,然后像这样安装它的要求:
pip install -r /usr/lib/python3/dist-packages/ansible_collections/azure/azcollection/requirements-azure.txt
在新安装的系统(例如 Docker 中)正确设置比修复损坏的系统更容易。