我已经尝试了一切并到处搜索,但我似乎找不到解决方案。我想使用 Ansible 中的 openstack.cloud 模块通过 Ansible 在 OpenStack 中创建和分配卷。
因此,我正在进行测试,例如检索有关 OpenStack 中当前存在的卷的信息。这是任务:
- name: 1). Openstack Volumen Information
openstack.cloud.volume_info:
name: test1
vars:
ansible_python_interpreter: /usr/bin/python3.8
这是我确保设置了 OpenStack 身份验证环境变量的 playbook 文件:
---
- name: Test
hosts:
- Test
gather_facts: yes
roles:
- role: volume_test
vars:
environment:
http_proxy: http://10.40.40.20:80
https_proxy: http://10.40.40.20:80
ftp_proxy: http://10.40.40.20:80
no_proxy: 127.0.0.1,localhost
OS_AUTH_URL: https://horizon/test:3000
OS_IDENTITY_API_VERSION: 3
OS_INTERFACE: public
OS_PASSWORD: '<password>'
OS_PASSWORD_INPUT: '<password>'
OS_PROJECT_DOMAIN_ID: default
OS_PROJECT_ID: ce9f3801b1234afb83fbg0c93c987cb5
OS_PROJECT_NAME: '<project_name>'
OS_REGION_NAME: RegionOne
OS_USERNAME: '<user_name>'
OS_USER_DOMAIN_NAME: Default
我已在 CentOS 7.9 和 Ubuntu 20 VM 上尝试过此操作,但收到以下错误:
fatal: [Test]: FAILED! => {
"changed": false,
"module_stderr": "Shared connection to <test_host> closed.\r\n",
"module_stdout": "Failed to discover available identity versions when contacting https://horizon/test:3000. Attempting to parse version from URL.\r\nTraceback (mo
st recent call last):\r\n File \"/usr/lib/python3/dist-packages/urllib3/connectionpool.py\", line 662, in urlopen\r\n self._prepare_proxy(conn)\r\n File \"/usr/lib/python3/dis
t-packages/urllib3/connectionpool.py\", line 950, in _prepare_proxy\r\n conn.connect()\r\n File \"/usr/lib/python3/dist-packages/urllib3/connection.py\",
....
File \"/home/appserv/.local/lib/python3.8/site-packages/keystoneauth1/session.py\", line 1141, in post\r\n return self.request(url, 'POST', **kwargs)\r\n File \"/home/appserv/.local/lib/python3.8/site-packages/keystoneauth1/session.py\", line 923, in request\r\n resp = send(**kwargs)\r\n File \"/home/appserv/.local/lib/python3.8/site-packages/keystoneauth1/session.py\", line 1030, in _send_request\r\n raise exceptions.ConnectFailure(msg)\r\nkeystoneauth1.exceptions.connection.ConnectFailure: Unable to establish connection to https://horizon/test:3000/v3/auth/tokens: HTTPSConnectionPool(host='hori
zon, port=3000): Max retries exceeded with url: /v3/auth/tokens (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Tunnel or
SSL Forbidden')))\r\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1
正如@Zeitounator指出的,提到代理问题,我的解决方案是在playbook文件中注释http_proxy、https_proxy和no_proxy的环境变量。