Troubleshooting your Barbican Setup¶
如果您无法在此文档中找到您正在寻找的答案,您可以在 OFTC IRC 频道 #openstack-barbican 上提问
在成功向 Keystone 认证后,获取 Barbican HTTP 401 错误¶
您可能会看到¶
即使使用有效的令牌,您也会收到 HTTP 401 Unauthorized 响应
curl -X POST -H "X-Auth-Token: $TOKEN" -H "Content-type: application/json" \
-d '{"payload": "my-secret-here", "payload_content_type": "text/plain"}' \
https://:9311/v1/secrets
由以下原因引起¶
Barbican 服务器上的签名证书已过期。
如何避免¶
检查 Barbican 服务器上的 Keystone 签名证书是否已过期。查看 /tmp/barbican/cache/signing_cert.pem 中的到期日期。如果已过期,请按照以下步骤操作。
在您的 Keystone 服务器上,验证 signing_cert.pem 的到期日期与 Barbican 机器上的到期日期是否相同。通常可以在 Keystone 服务器上的
/etc/keystone/ssl/certs中找到signing_cert.pem。如果证书匹配,请按照以下步骤创建新的证书
从您的 Barbican 和 Keystone 服务器中删除它。
编辑
/etc/keystone/ssl/certs/index.txt.attr并将 unique_subject 设置为 no。运行
keystone-manage pki_setup以创建新的signing_cert.pem下次访问 Barbican API 时,更新后的证书将被下载到您的 Barbican 服务器。
如果证书不匹配,请从您的 Barbican 服务器中删除
signing_cert.pem。不要从 Keystone 中删除。下次您访问 Barbican API 时,Keystone 中的证书将被下载到您的机器。
返回的引用使用 localhost 而不是正确的主机名¶
您可能会看到¶
curl -X POST -H "X-Auth-Token: $TOKEN" -H "Content-type: application/json" \
-d '{"payload": "my-secret-here", "payload_content_type": "text/plain"}' \
http://myhostname.com/v1/secrets
# Response:
{
"secret_ref": "https://:9311/v1/secrets/UUID_HERE"
}
由以下原因引起¶
响应主机名的默认配置未修改为端点的主机名(通常是负载均衡器的 DNS 名称和端口)。
如何避免¶
将您的 barbican.conf 文件中的 host_href 设置从 localhost:9311 更改为正确的主机名(例如上面的 myhostname.com)。
Barbican 的 tox 测试无法在我的 Mac 上运行¶
您可能会看到¶
clang: error: unknown argument: '-mno-fused-madd'
如何避免¶
有一个 很棒的博客文章 提供了有关错误的更多详细信息以及如何解决它的方法。 此链接提供了有关错误以及如何解决它的更多详细信息。
Barbican 的 tox 测试无法在我的 Mac 上找到 ffi.h¶
您可能会看到¶
c/_cffi_backend.c:13:10: fatal error: 'ffi.h' file not found
...
ERROR: could not install deps [...]; v = InvocationError('...', 1)
如何避免¶
确保 xcode 和 cmd line 工具是最新的。最简单的方法是从 OS X 命令行运行 xcode-select --install。当被问及是否要安装命令行工具时,请务必回答“是”。现在 ls /usr/include/ffi/ffi.h 应该显示缺失的文件存在,并且 tox 测试应该可以运行。
Barbican 的 tox 测试失败并显示“ImportError: No module named _bsddb”¶
您可能会看到¶
ImportError: No module named _bsddb
如何避免¶
运行测试 via tox(使用 testr)将在 .testrepository 目录中创建数据文件。如果环境中可用 bsddb,则这些数据文件可能会使用 bsddb 创建。如果运行的环境中没有 bsddb,这可能会导致问题。要解决此问题,请删除您的 .testrepository 目录并再次运行 tox。
uWSGI 日志 ‘OOPS ! failed loading app’¶
您可能会看到¶
...
spawned uWSGI master process (pid: 59190)
spawned uWSGI worker 1 (pid: 59191, cores: 1)
spawned uWSGI worker 1 (pid: 59192, cores: 1)
Loading paste environment: config:/etc/barbican/barbican-api-paste.ini
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter \
0x7fd098c08520 pid: 59191 (default app)
OOPS ! failed loading app in worker 1 (pid 59192) :( trying again...
Respawned uWSGI worker 1 (new pid: 59193)
Loading paste environment: config:/etc/barbican/barbican-api-paste.ini
OOPS ! failed loading app in worker 1 (pid 59193) :( trying again...
worker respawning too fast !!! i have to sleep a bit (2 seconds)...
...
注意
您将看不到此错误的任何有用的日志或堆栈跟踪!
由以下原因引起¶
vassal(worker)进程无法访问数据存储。
如何避免¶
检查您的 barbican.conf 文件中的 sql_connection,以确保它引用了有效的可访问数据库。
“Cannot register CLI option” 错误在导入 logging 时¶
您可能会看到¶
...
File ".../oslo_config/cfg.py", line 1275, in register_cli_opt
raise ArgsAlreadyParsedError("cannot register CLI option")
ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option
由以下原因引起¶
尝试在配置参数“解析”后调用 olso.config 的 register_cli_opt() 函数(有关详细信息,请参阅 oslo.config 项目的 cfg.py 文件 中的注释和方法)。
如何避免¶
不要调用 import barbican.openstack.common.log as logging 来获取 logger,而是调用 from barbican.common import config 使用以下方法在您的源代码文件中获取 logger:LOG = config.getLogger(__name__)。
Responder 抛出 TypeError: 'NoneType' object has no attribute '__getitem__'¶
您可能会看到¶
...
2013-04-14 14:17:56 [FALCON] [ERROR] POST \
/da71dfbc-a959-4ad3-bdab-5ee190ce7515/csrs? => Responder raised \
TypeError: 'NoneType' object has no attribute '__getitem__'
由以下原因引起¶
忘记在通过 XxxxResource 类创建的实体中设置您的非空 FK。
如何避免¶
在通过 repository 创建它之前,请不要忘记设置实体上定义的任何 FK。
uWSGI 配置问题:ImportError: No module named site¶
您可能会看到¶
...
uwsgi socket 0 bound to TCP address :9311 fd 3
Python version: 2.7.3 (...) [...]
Set PythonHome to ./.venv
ImportError: No module named site
由以下原因引起¶
找不到 Barbican 项目的 Python 虚拟环境。
要么上面的 ‘broker’ 设置不正确,要么您尚未启动队列进程(例如 RabbitMQ)
如何避免¶
确保 etc/barbican/barbican-api-paste.ini 处的 uWSGI 配置文件已正确配置(请参见上面的安装步骤),尤其是如果虚拟环境文件夹的名称与 .ini 文件不同。
REST 请求因 JSON 错误而失败¶
您可能会看到¶
{
"title": "Malformed JSON"
}
由以下原因引起¶
Barbican REST 服务器无法解析来自您的 REST 客户端的传入 JSON 消息。
如何避免¶
确保您提交的是正确格式化的 JSON。例如,列表中的最后一个名称/值对之后是否有逗号?所有基于文本的名称/值周围是否有引号?值的类型是否与预期匹配(例如,整数和布尔类型而不是带引号的文本)?
如果您正在使用 Chrome 的 Advanced REST Client,并且尝试将文件上传到 secrets PUT 调用,这不仅会由于它使用的多部分格式而失败,而且还会尝试将此文件提交到每个 REST 请求,从而导致此错误。关闭带有客户端的选项卡/窗口,然后重新启动它。
Crypto Mime Type 不受支持,当我尝试运行测试或访问 API 时¶
您可能会看到¶
一个包含以下内容的堆栈跟踪(例如)
CryptoMimeTypeNotSupportedException: Crypto Mime Type of 'text/plain' not supported
由以下原因引起¶
Barbican 插件未安装到 Python 插件管理器可以找到它们的位置。
如何避免¶
确保您运行 pip install -e .。
Python “找不到模块错误”与 uWSGI 脚本一起使用¶
您可能会看到¶
*** has_emperor mode detected (fd: 6) ***
...
!!! UNABLE to load uWSGI plugin: dlopen(./python_plugin.so, 10): image not found !!!
...
File "./site-packages/paste/deploy/loadwsgi.py", line 22, in import_string
return pkg_resources.EntryPoint.parse("x=" + s).load(False)
File "./site-packages/distribute-0.6.35-py2.7.egg/pkg_resources.py", line 2015, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named barbican.api.app
...
*** Starting uWSGI 1.9.13 (64bit) on [Fri Jul 5 09:59:29 2013] ***
由以下原因引起¶
Barbican 源代码模块未在 uwsgi 等应用程序的 Python 路径中找到。
如何避免¶
确保您正在从虚拟环境运行,并且在激活虚拟环境后执行了 pip。这尤其包括 pip install -e 命令。此外,虚拟环境可能会损坏,因此您可能需要重建它。
‘无法打开数据库文件 None None’ 运行脚本时出错¶
您可能会看到¶
...
File "./site-packages/sqlalchemy/engine/strategies.py", line 80, in connect
return dialect.connect(*cargs, **cparams)
File "./site-packages/sqlalchemy/engine/default.py", line 283, in connect
return self.dbapi.connect(*cargs, **cparams)
OperationalError: (OperationalError) unable to open database file None None
[emperor] removed uwsgi instance barbican-api.ini
...
由以下原因引起¶
sqlite 数据库的 destination 文件夹未找到,或不可写。
如何避免¶
确保 /var/lib/barbican/ 文件夹存在并且可以被运行 Barbican API 进程的用户写入。
‘ValueError: No JSON object could be decoded’ 使用 Keystoneclient 中间件¶
您可能会看到¶
...
2013-08-15 16:55:15.759 2445 DEBUG keystoneclient.middleware.auth_token \
[-] Token validation failure. _validate_user_token \
./site-packages/keystoneclient/middleware/auth_token.py:711
...
2013-08-15 16:55:15.759 2445 TRACE keystoneclient.middleware.auth_token \
raise ValueError("No JSON object could be decoded")
2013-08-15 16:55:15.759 24458 TRACE keystoneclient.middleware.auth_token \
ValueError: No JSON object could be decoded
...
2013-08-15 16:55:15.766 2445 WARNING keystoneclient.middleware.auth_token \
[-] Authorization failed for token ...
2013-08-15 16:55:15.766 2445 INFO keystoneclient.middleware.auth_token \
[-] Invalid user token - rejecting request...
由以下原因引起¶
keystoneclient 中间件组件正在查找 openssl 中的 cms 命令,该命令在版本 1.0.1 之前不可用。
如何避免¶
更新 openssl。
“accept-encoding of ‘gzip,deflate,sdch’ not supported”¶
您可能会看到¶
Secret retrieval issue seen - accept-encoding of 'gzip,deflate,sdch' not supported
由以下原因引起¶
这可能是您使用的浏览器的问题,因为通过 curl 执行请求似乎不受影响。
如何避免¶
除了使用 curl 等命令来发出 REST 请求之外,您可能没有其他选择。