osc.open_ondemand

Open OnDemand Ansible 角色

Molecule 测试

这个 Ansible 角色用于在各种 Linux 发行版上安装和配置 Open OnDemand

内容目录

版本兼容性

该角色的版本将大致与所安装的 Open OnDemand 版本保持一致。此角色的主版本和次版本将与相应的 Open OnDemand 主版本和次版本兼容。此角色中的补丁版本将与其所安装和配置的 Open OnDemand 版本兼容,但提供错误修复或新功能。

例如,此角色的 1.8.0 版本将与 Open OnDemand 的 1.8.x 版本兼容(当前为 1.8.20)。此角色的 1.8.1 版本仍将安装 Open OnDemand 的 1.8.20 版本,但会为 此角色 提供一些错误修复或新功能。

支持的操作系统

  • CentOS
  • Debian
  • Fedora
  • RedHat
  • Rocky Linux
  • Suse
  • Ubuntu 18
  • Ubuntu 20

安装特定版本

ondemand_package 变量控制安装的 rpm/dep 包的版本。默认值 ondemand 将安装来自相关库的最新版本,但不会升级现有安装。您可以使用完整的包名来安装特定版本(例如 ondemand-3.0.3),或者使用 Ansible 的 yumapt 模块所支持的比较运算符。使用 latest 来升级现有安装。

从最新或夜间版本安装

如果您想从我们的 latestnightly 仓库安装软件包,只需更改 rpm_repo_url 配置以下载适当的 RPM。例如 'https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm'请检查 yum 以获取此 RPM 的正确版本。

从最新或夜间版本安装软件包时,您可能需要根据项目的状态排除某些软件包。例如,在开发 2.1 时,最新或夜间的 2.0 RPM 需要排除某些软件包。

使用 ondemand_package_excludes 指定在 yum 安装期间要排除的软件包列表。以下示例在安装 2.0.20 时排除所有 2.1 软件包。

ondemand_package: 'ondemand-2.0.20'
ondemand_package_excludes:
  - '*-2.1'

标签

当您只想运行特定任务时,可以使用以下标签。

  • configure - 将配置 Open OnDemand 及所有应用
  • install - 将安装 Open OnDemand 及所有应用
  • deps - 安装依赖关系(仅在从源构建时有效)
  • build - 从源代码构建(仅在从源构建时有效)

覆盖设置

默认目录 中的配置按应用于哪个文件进行了分类,以便于在从源构建或安装时进行配置或选项设置。

查看这些文件以找到可以覆盖的变量。将所有这些覆盖保存到一个文件中,然后可以通过 [email protected] 调用该文件。

所有默认文件按其适用的内容进行分组。有些文件仅用于文档目的,仅包含注释。它们隐藏以与 Ansible 2.9.X 兼容,并处理 加载空文件的错误

  • .apps.yml - 安装应用的配置(隐藏,因为它是空的)。
  • build.yml - 从源构建 OnDemand 的配置。
  • install.yml - 安装 OnDemand 的配置。
  • nginx_stage.yml - 应用于 /etc/ood/config/nginx_stage.yml 的配置。
  • .ondemand.yml - 应用于 /etc/ood/config/ondemand.d/ondemand.yml 的配置(隐藏,因为它是空的)。
  • ood_portal.yml - 应用于 /etc/ood/config/ood_portal.yml 的配置。

使用此角色管理集群和应用

此角色中有几个变量可以自定义和配置 Open OnDemand。

clusters

该配置将其内容写入 /etc/ood/config/clusters.d/<cluster_key>.yml,对于此字典中的每个集群项,每个字典项都是一个多行字符串。

例如

clusters:
  my_cluster: |
    ---
    v2:
      metadata:
        title: my_cluster
      login:
        host: my_host
      job:
        adapter: slurm
        bin: /usr/local
      batch_connect:
        basic:
          script_wrapper: "module restore\n%s"
  another_cluster: |
    ---
    v2:
      metadata:
        title: Another Cluster

将生成 /etc/ood/config/clusters.d/my_cluster.yml/etc/ood/config/clusters.d/another_cluster.yml,内容完全相同。

my_cluster.yml
v2:
  metadata:
    title: my_cluster
  ...
another_cluster.yml
v2:
  metadata:
    title: Another Cluster

更多详细信息可以在 Open OnDemand 文档集群配置架构 v2 中找到。

ood_install_apps

该配置从自定义库安装应用到应用目录(默认或自定义)。它接受类似于 git 模块 的字典。主键是 repodest 目录下克隆的结果目录名称。

仅需 repo: 是必需的。

ood_install_apps 示例
ood_install_apps:
  jupyter:
    repo: https://github.com/OSC/bc_example_jupyter.git
    dest: "{{ ood_sys_app_dir }}"  # 默认值(可选)
    version: master                # 默认值(可选)
  customdir: # 将创建 /var/www/ood/apps/my/dir/customdir
    repo: https://github.com/OSC/bc_example_rstudio
    dest: /var/www/ood/apps/my/dir
    version: v1.0.1

上述示例将

  • 克隆 OSC/bc_example_jupyter/var/www/ood/apps/sys/jupyter
  • 克隆 OSC/bc_example_rstudio/var/www/ood/apps/my/dir/customdir

ood_apps

此功能允许您配置 bc_desktop 应用并为其他应用编写环境文件。

在最简单的情况下,当给定 env 键时,它将输出键值对到 env 文件中。

bc_desktop 的更复杂情况下,它将其内容写入 <cluster>.yml 文件(其中文件名是内容的 cluster 属性)并将 submit 键的内容写入 submit.yml.erb 文件。

以下示例应该说明这两点。

ood_apps 示例
ood_apps:
  bc_desktop:
    title: "xfce desktop"
    cluster: "my_cluster"
    form:
      - desktop
      - hours
    attributes:
      hours:
        value: 1
      desktop: "xfce"
    submit: |
      ---
      script:
        native:
          - "-t"
          - "<%= '%02d:00:00' % hours %>"
  files:
    env:
      ood_shell: /bin/bash

上述示例将创建

/etc/ood/config
└── apps
    ├── bc_desktop
    │   ├── my_cluster.yml
    │   └── submit
    │       └── submit.yml.erb
    └── files
        └── env

env 生成一个 key=value 文件。注意键的大小写。

$ cat /etc/ood/config/apps/files/env
OOD_SHELL=/bin/bash

submit 创建一个 submit 目录,里面有一个 submit.yml.erb 文件,包含您配置的原始字符串数据。请注意,配置是原始数据,而不是像其他配置那样的 YAML。这是为了支持 Ruby ERB 模板格式,它在 Ansible 中作为 YAML 时不易格式化。

$ cat /etc/ood/config/apps/bc_desktop/submit/submit.yml.erb
---
script:
  native:
    - "-t"
    - "<%= '%02d:00:00' % hours %>"

$ cat /etc/ood/config/apps/bc_desktop/submit/my_cluster.yml
title: "remote desktop"
cluster: my_cluster
attributes:
  hours:
    value: 1
  desktop: "xfce"

Open ID 连接

您可以通过两种方式 配置 Apache 以支持 mod_auth_openidc

第一种且最简单的方法是使用 ood_auth_openidc 字典生成一个单独的配置文件用于 OIDC 相关的配置。

第二种是让 ood-portal-generator 直接将 OIDC 配置写入 ood-portal.conf 文件,使用命名变量 oidc_*,例如 oidc_provider_metadata_urloidc_client_id。 您可以查看 OIDC 默认值 以查看可用变量列表。 如果您使用 Ansible 模板生成 ood-portal.conf,则需要将额外标志 oidc_settings_samefile 设置为 true。

ood_auth_openidc 示例

ood_auth_openidc:
  OIDCSessionMaxDuration: 28888
  OIDCClientID: myid
  OIDCProviderMetadataURL: https://localhost/
  OIDCCryptoPassphrase: mycryptopass
  "LDAPTrustedGlobalCert CA_BASE64": /etc/ssl/my/cert/path

default_auth_openidc:
  OIDCRedirectURI: "https://{{ servername }}{{ oidc_uri }}"
  OIDCSessionInactivityTimeout: 28800
  OIDCSessionMaxDuration: 28800
  OIDCRemoteUserClaim: preferred_username
  OIDCPassClaimsAs: environment
  OIDCStripCookies: mod_auth_openidc_session mod_auth_openidc_session_chunks mod_auth_openidc_session_0 mod_auth_openidc_session_1

它将产生一个 auth_openidc.conf 文件,将列出的 key value 与默认值合并。 在 ood_auth_openidc 中定义的值会覆盖任何 default_auth_openidc 值。

有关该模块的更多信息,请参阅 auth_openidc

安装 Dex

要安装用于 OIDC 的 dex,请将标志 install_ondemand_dex 设置为 true,它将安装该软件包。

贡献

如果您遇到问题或有功能请求,或者修复了一些问题,请告诉我们!欢迎提交 pull request!即使您只是有一个问题,也请随时打开一个工单。

关于项目

Installs and configures Open OnDemand on various Linux distributions.

安装
ansible-galaxy install osc.open_ondemand
许可证
mit
下载
2.7k
拥有者
The Ohio Supercomputer Center located in Columbus, Ohio in the USA.