EGI-Foundation.voms-client

EGI VOMS 客户端

Docker 仓库在 Quay

一般信息

关于 VOMS 和 VO

这是一个配置 VOMS 客户端的 Ansible 角色。VOMS 是一个用于管理虚拟组织成员资格的网络服务。VOMS 客户端是必需的,以便根据虚拟组织成员资格获取与特定服务交互的授权(以短期代理的形式)。VOMS 客户端是一组命令行工具,它们向相关的 VOMS 服务器发送经过身份验证的请求,以请求授权。

要使用 VOMS 客户端,个人需要:

  • 拥有个人的 x.509 证书
  • 在他们想要获取授权的虚拟组织中注册

VOMS 客户端通常安装在用户界面或工作节点上。

配置

VOMS 客户端的配置通过一些文件完成:

  1. .lsc 文件
  2. vomses 文件

有关更详细的信息,请参见 VOMS 文档

对于每个你想交互的虚拟组织,相关的配置需要到位。这可能是一个耗时的任务,特别是在站点管理员不知道应该配置哪些虚拟组织的情况下。

为了使生活更轻松,我们采用了数据驱动的方法。

所需的数据通过 EGI 操作门户 API 提供,作为该角色的数据源。这使我们能够一次性配置在操作门户中注册的所有虚拟组织。有两种方法可以生成配置:

  1. 从在 Ansible 运行时从 Lavoisier 拉取的原始数据生成配置
  2. 从在 Ansible 运行时之前从 Lavoisier 拉取的过滤数据生成配置

在前一种方法中,可以使用精心制作的 json_query 来迭代从 Lavoisier 返回的数据。在这种情况下,查询需要反映 Lavoisier 返回的数据对象的复杂性和结构,无法假设返回一致的数据数组。在后一种方法中,使用一个简单的过滤数据对象来迭代,这个数据对象经过过滤以排除不包含相关信息的项目。这个缓存数据可以通过一个简单的 Python 脚本轻松创建 —— files/create_clean_vo_data.py,该脚本读取角色变量并创建数据的本地缓存。数据格式被选择为 YAML,以便我们可以将其添加到库中并跟踪更改 —— 使用 JSON 会很困难,因为缺少行。

我们选择了后一种方法(见 4215026e18c),原因如下:

  1. 维护一个良好文档的脚本比复杂的 JSON 查询要容易得多。
  2. 阅读一个良好文档的脚本比复杂的 JSON 查询要容易得多。
  3. 如果该角色作为 playbook 的依赖项(这肯定是因为 VOMS 客户端在各处使用),那么数据需要是可用的。

然而,缺点是库中的数据可能会迅速与 Lavoisier 上的实际数据不同步。这可能发生在个人手动编辑缓存时,或者维护者在必要时没有运行脚本。克服此问题的唯一方法是维护一个强大的测试套件。

更新 VO 数据

要使用 files/create_clean_vo_data.py 更新 VO 数据,您需要一个身份验证令牌来与 EGI 操作门户 API 进行交互。

令牌可以通过在 EGI 签到 中进行身份验证时,访问 操作门户 API 文档页面,按照页面上的说明生成,然后在运行 files/create_clean_vo_data.py 之前将令牌导出到环境中。

可以使用 curl 调用测试令牌是否正常工作:

# 导出操作门户 API 令牌
$ export OPS_PORTAL_API_TOKEN='...'
# 使用 curl 测试 API 调用
$ curl -X GET "https://operations-portal.egi.eu/api/vo-voms/json" \
    -H "Accept: application/json" \
    -H "X-API-Key: $OPS_PORTAL_API_TOKEN"

一旦确认 curl 调用正常工作,就可以使用提供的脚本:

# 导出操作门户 API 令牌
$ export OPS_PORTAL_API_TOKEN='...'
# 更新 VO 数据
$ ./files/create_clean_vo_data.py

测试

该角色使用 molecule 进行以下场景的测试:

测试覆盖单元测试和集成测试,但不包括功能测试,因为使用 VOMS 客户端需要个人证书。包括的特定测试有:

  • 二进制可执行文件是否存在
  • 配置目录是否存在
  • 选定 VO 的配置文件内容

需求

请参见 requirements.txt

角色变量

保存在 defaults/main.yml 中的角色变量包括:

  • prerequisites - 所需的操作系统基础包
  • voms_dirvomses_dir - 在目标主机上包含 voms 信息的目录位置
  • lavoisier - 提取必要数据以填充配置文件所需的 lavoisier 框架端点。

无需更改默认变量。

依赖

依赖关系在元数据中没有明确定义,但该角色依赖于 UMD 角色:

- { role: EGI-Foundation.umd, release: 4 }

示例 Playbook

- hosts: servers
  roles:
    - { role: EGI-Foundation.umd, release: 4 }
    - { role: EGI-Foundation.voms-client }

许可证

Apache-2.0

作者信息

请参见 AUTHORS.md

关于项目

VOMS client role for the hpcgridcloud

安装
ansible-galaxy install EGI-Foundation.voms-client
许可证
apache-2.0
下载
224
拥有者
Advanced Computing for Research