针对发行版的模板系统/生成器
项目描述
面向发行版的模板系统
本项目试图缓解的问题是在多种操作系统(目前仅限于Linux发行版)中“便携”脚本的问题。在编写一个“通用”脚本时,需要考虑操作系统之间的小或大的差异(如包安装工具、实用程序版本、二进制、库等预期的目录)。
因此,distgen 项目就像是一个操作系统差异的数据库,同时提供了一套便利的工具集,允许您为特定发行版实例化有效的脚本。该概念是拥有一个模板文件(主要是原始jinja2模板)以及满足特定模板需求的“声明性”规范文件(YAML文件)。
您可以在http://distgen.readthedocs.io找到distgen文档。
下载/安装
distgen的稳定版本作为RPM在Fedora和EPEL仓库以及pypi中可用。
$ sudo dnf install distgen
$ pip install distgen
开发(git快照)RPM在Fedora Copr中自动构建。
您也可以直接从git
运行开发版本,只需使用此git根目录中可用的dg
shell包装器即可。
Dockerfile示例
典型的例子是需要为所有支持的Fedora/RHEL版本实例化面向FOO包的Dockerfile。
要使用distgen实现这一目标,您需要编写类似docker.tpl
的模板和FOO.yaml
规范文件。如果系统默认的docker.tpl
模板足够好,则只需编写正确的规范文件即可。
-
创建
FOO.yaml
规范$ cat FOO.yaml maintainer: John Doe <jdoe@example.com> parts: pkginstall: data: - type: pkg action: install packages: - vim footer: cmd: ["vim"]
-
运行
dg
工具生成Fedora 22 Dockerfile$ dg --template docker.tpl \ --spec FOO.yaml \ --distro fedora-22-x86_64.yaml \ > Dockerfile $ cat Dockerfile FROM index.docker.io/fedora:22 MAINTAINER John Doe <jdoe@example.com> ENV container="docker" RUN dnf -y --setopt=tsflags=nodocs install vim \ && dnf -y --setopt=tsflags=nodocs clean all --enablerepo='*' CMD ["vim"]
-
再次运行
dg
工具生成RHEL 7 dockerfile$ dg --template docker.tpl \ --spec FOO.yaml \ --distro rhel-7-x86_64.yaml \ > Dockerfile $ cat Dockerfile FROM registry.access.redhat.com/rhel7 MAINTAINER John Doe <jdoe@example.com> ENV container="docker" RUN yum -y --setopt=tsflags=nodocs install vim \ && yum -y --setopt=tsflags=nodocs clean all --enablerepo='*' CMD ["vim"]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分发
distgen-2.0.tar.gz (85.3 kB 查看哈希值)
构建分发
distgen-2.0-py3-none-any.whl (51.6 kB 查看哈希值)
关闭
distgen-2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e6dba27d994541ab83932c8475c21fa9eedede91fb0c20c3338ce6680dd43475 |
|
MD5 | a8eb0342f8d084a1514a554cf6833fdb |
|
BLAKE2b-256 | 4ce2a48bc8beacceecd2f132a40053a6efe1ad33e68f56f6ffd1f9c3b8a18fa8 |