因此,我尝试在我的 OpenStack 云中引导一个控制器,但在尝试创建安全组时似乎失败了。
我相信发生这种情况是因为从引导调试中我注意到在身份验证详细信息中没有有关 TenantId 的信息:
03:07:53 DEBUG goose client.go:511 身份验证详细信息:&{Token:e755f8efd8b546c4bdcd1816aeeb0a65 TenantId:UserId:c98f1d30569b4712bd7b2dc80d38d09f Domain:admin_domain RegionServiceURLs:map[RegionOne:map[identity:http://xxx.xxx.xxx.174:5000/v3对象存储:http://xxx.xxx.xxx.164:80/swift/v1放置:http://xxx.xxx.xxx.176:8778网络:http://xxx.xxx.xxx.169:9696计算:http://xxx.xxx.xxx.176:8774/v2.1图像:http://xxx.xxx.xxx.175:9292]]}
调试中的实际错误是
导致原因:请求 (http://xxx.xxx.xxx.169:9696/v2.0/security-groups) 返回意外状态:400;错误信息:{“NeutronError”:{“message”:“在没有 keystone AuthN 的情况下运行需要指定 tenant_id”,“type”:“HTTPBadRequest”,“detail”:“”}}
这个错误有点道理,因为中子不知道在哪个项目上创建安全组。
有谁知道为什么 TenantId 不会被声明,即使我在运行 juju add-credential 时声明了这一点。
我的确切引导命令是:
juju bootstrap mycloudname.example.com juju-openstack-controller --metadata-source ~/simplestreams/images --config network=fef7b36b-8c2c-4a2c-a860-0ed826231730 --config use-floating-ip=yes --config external-network=46fb58fc-6935-4e64-a54e-8c351370f184 --debug
更新至 2.4.3 问题仍然存在 https://bugs.launchpad.net/juju/+bug/1785747
答案1
尝试在 ~/.local/share/juju/credentials.yaml 文件中将“domain-name: admin_domain”更改为“domain-name: ""”,其中指定了 openstack 云凭据。此方法至少在一种情况下有效。
创建了一个特定于此错误的错误: https://bugs.launchpad.net/juju/+bug/1806985