跳转到主要内容

帮助生成CVMFS的子集

项目描述

SubCVMFS-builder

schema

目的

SubCVMFS-builder旨在帮助科学界构建包含执行感兴趣应用程序所需的最小要求的CVMFS子集,并将其部署在远程计算基础设施上。此工具主要用于没有外网连接的超计算机。

安装

  • 开始之前,您需要在机器上安装singularityCVMFSCVMFS-shrinkwrap
git clone https://gitlab.cern.ch/alboyer/subcvmfs-builder.git
cd subcvmfs-builder
pip install . --user

用法

  • 获取帮助
subcvmfs --help
  • 跟踪:在singularity容器中运行应用程序并返回与CVMFS相关的依赖项列表。

    subcvmfs trace <config> \
      	--apps-dir <required_input_directory>
      	--path-list <output_file>
      	--container <optional_input_string>
      	--number-core <optional_input_int>
    

    跟踪通常用于在不知道要包含在CVMFS子集中的应用程序的依赖项时使用。.

    • apps-dir应是一个应用程序目录,结构如下:<apps_dir>/<command>/command.sh
    • container提供运行应用程序的特定环境(通常是在远程计算基础设施中现有的环境)。
    • path-list应包含命令的结果,即与要跟踪的应用程序相关的CVMFS依赖项列表。
    • number-core可以用于并行运行多个应用程序。
  • 构建:使用cvmfs-shrinkwrap工具使用依赖项列表构建CVMFS子集。

    subcvmfs build <config> \
      	--path-list <Trace_output> <another_input_list>
      	--subset-path <output_subset_path>
    

    构建是构建CVMFS子集的必要步骤.

    • path-list应是一个文件或文件列表,包含要包含在子集中的CVMFS依赖项。它可以从跟踪中获得或从头开始构建。
    • subset-path 应该是生成的子集的路径。
  • 测试:使用依赖项的子集而不是 CVMFS 执行应用程序。

    subcvmfs test <config> \
      	--apps-dir <required_input_directory>
      	--subset-path <required_input_path>
      	--container <optional_input_str>
      	--number-core <optional_input_int>
    

    测试通常在部署 CVMFS 子集之前使用。可能需要确保子集对一组应用程序有效.

    • apps-dir应是一个应用程序目录,结构如下:<apps_dir>/<command>/command.sh
    • subset-path 应该是 CVMFS 子集的路径。
    • container提供运行应用程序的特定环境(通常是在远程计算基础设施中现有的环境)。
    • number-core可以用于并行运行多个应用程序。
  • 部署:将 CVMFS 的子集部署到远程计算基础设施中(如果需要,在容器内)。

    subcvmfs deploy <config> \
      	--subset-path <required_input_subset_path>
      	--remote-location <required_input_str>
      	--container <optional_input_path>
      	--bootstrap <optional_input_path>
      	--post-command <optional_input_path>
      	--bundle-path <optional_output_path>
    

    部署需要用户能够访问远程计算基础设施.

    • subset-path 应该是 CVMFS 子集的路径。
    • remote-location 将托管 CVMFS 子集的远程计算基础设施。
    • bundle-path 如果想将 CVMFS 子集与容器合并(如果 CVMFS 子集定期更新则不建议),则应该使用。
    • container 提供一个特定环境来运行应用程序。如果提供,它将与 CVMFS 子集合并。如果存在 bundle-path,则是必需的。
    • bootstrap 容器的类型。如果提供 bundle-path,则是必需的。
    • post-command 应该代表在启动容器之前要运行的命令。如果存在 bundle-path,则是必需的。

配置

  • 可能的最小配置
{
	"cvmfs_extensions":
	{
		"<repository_name>":
		{
			"url": "<repository_url>",
			"public_key": "<repository_pubkey>",
		},
	}
}

在这种情况下,应通过 CLI 传递参数。

  • 一个具体的例子
{
	"cvmfs_extensions":
	{
		"lhcb.cern.ch":
		{
			"url": "http://cvmfs-stratum-one.cern.ch/cvmfs/lhcb.cern.ch",
			"public_key": "/cvmfs/cvmfs-config.cern.ch/etc/cvmfs/keys/<key.pub>",
		},
		"lhcb-condb.cern.ch":
		{
			"url": "http://cvmfs-stratum-one.cern.ch/cvmfs/lhcb-condb.cern.ch",
			"public_key": "/cvmfs/cvmfs-config.cern.ch/etc/cvmfs/keys/<key.pub>",
		}
	},
	"steps":
	{
		"trace":
		{
			"apps_dir": "inputs_trace",
			"path_list": "namelist1.txt"
		},
		"build":
		{
			"path_list": ["namelist1.txt", "namelist2.txt"],
		},
		"test":
		{
			"apps_dir": "inputs_test",
		},
		"commons":
		{
			"subset_path": "/path/to/subcvmfs"
		}
	},
	"tools":
	{
		"parrot":
		{
			"http_proxy": "DIRECT"
		},
		"singularity":
		{
			"name": "/cvmfs/cernvm-prod/cvm4"
		}
	}
}

参数完全由配置提供,除非需要重载,否则无需单独将它们提供给 CLI。这里有一些细节

  • /tools/singularity/name 用作命令中的 container 选项。
  • /steps/commons 汇集了所有步骤中通用的参数。

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

subcvmfs-builder-1.0.1.tar.gz (99.5 kB 查看哈希值)

上传时间 源代码

构建分发

subcvmfs_builder-1.0.1-py3-none-any.whl (16.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面