部署和配置ostree提交

deploy-ostree的Python项目详细描述


部署ostree:部署并提供ostree提交

pipeline statuspypipython versions

deploy ostree是部署和配置ostree的工具 没有来自简单配置文件的用户输入。它将:

  • 设置遥控器
  • 拉动提交
  • 创建stateroot
  • 签出并展开树
  • 运行其他配置程序以使部署的系统有用

它最初的预期用例是自动测试;因此,它不应该 被视为最终用户安装程序的替代品。部署ostree可以 作为一个安装常规系统的工具,但它也可以使用快捷方式 对于一次性测试环境来说,这是很好的,但可能不是 在长寿命系统中保持良好状态。

要求

  • 巨蟒3.5或更新版本
  • ostree2018.4或更新版本(旧版本可能有效,但未经测试)

从libostree部署内部运行deploy ostree不需要 附加配置(前提是引导加载程序设置正确)。运行 deploy ostree在不使用libostree的系统上,您需要首先运行 ostree admin init fs/设置libostree系统存储库和目录 结构。此外,您可能需要设置引导加载程序。如何做到这一点 取决于操作系统、体系结构和正在使用的引导加载程序。

安装

您可以使用pip:

$ pip3 install deploy-ostree

用法

# deploy-ostree <config path or HTTP URL>

这需要根权限。如果成功退出deploy ostree ostree部署应该准备好启动。

命令行参数
  • --sysroot=sysroot:安装到指定的目标根目录中, 而不是/。就像对于/一样,目录必须存在并且 初始化为libostree与ostree admin init fs<;sysroot path>;一起使用
  • --karg root=root:将kernelrootboot参数设置为给定值。 默认情况下,使用当前引导的root参数。
  • --fstab=fstab:将给定的文件复制到部署中作为/etc/fstab。如果 忽略此参数,则使用系统fstab(/etc/fstab)。

关于selinux的说明

虽然不推荐,但使用主机系统和 使用已部署系统的selinux可能需要在部署之前禁用selinux 为了避免主机的selinux策略与中的selinux标签之间的冲突 部署的树。要暂时禁用selinux,请执行以下操作:

# setenforce 0

配置格式

配置文件必须是有效的json或toml文件。这个 配置的语法由其文件扩展名决定:如果它是.toml (不区分大小写),它被解析为一个toml文件。否则,它被认为是 JSON文件。虽然格式的语法明显不同,但是 deploy ostree使用的 可以使用通用的json-to-toml转换器将文件转换为toml(以及 反之亦然)。

两种格式使用相同的顶级配置键:

  • urlpath(必需):ostree存储库的路径或url 从中拉出。必须指定其中一个。如果相对路径是 指定时,它将被解释为相对于:
    • 如果配置是本地文件:配置的目录 文件
    • 否则为当前工作目录。
  • ref(必需):ostree commit to deploy.
  • 远程:ostree远程的名称。如果这个遥控器已经存在 替换。默认情况下,使用随机名称。
  • stateroot:要使用的ostree stateroot的名称。默认情况下,随机名称 生成。
  • 内核参数:其他内核参数的列表。根分区是 始终自动确定并包含在内核命令行中。
  • provisioners:要在ostree提交之后运行的provisioners的列表是 已经结帐了。这必须是一个对象数组。每个对象定义一个 基于它包含的密钥的Provisioner。不同种类的补给品是 记录如下。

脚本提供程序

脚本设置程序允许您在 你的配置文件。这些将在之后在部署目录中运行 部署,同时提供/etc和/var。

脚本是用脚本键指定的。脚本文本将被输入到 翻译在stdin上。默认情况下,解释器是/bin/sh,但可以是 使用解释器键覆盖。注意,解释器需要 能够使用来自stdin的脚本而无需进一步的参数。可选的 可以使用说明键设置说明。这一行将显示 在部署过程中描述配置步骤。

脚本的工作目录设置为 部署。因此,部署中的任何路径都应与 当前目录。请注意,脚本不是以任何方式生成的。这意味着 如果你不小心的话,你可以从脚本中搞乱主机系统!

如果需要从部署的系统运行二进制文件,可以手动chroot 进入部署目录。最后,你得根据你的体重 usecase是否要依赖主机系统来获得所需的任何工具,或者 是否要从已部署的系统运行。记住,当 部署跨体系结构,从部署的系统运行二进制文件可能不会 工作,

json示例:

{"script":"echo my-system > ./etc/hostname","interpreter":"/bin/bash","description":"hostname"}

TOML示例:

[[provisioners]]script="echo my-system > ./etc/hostname"interpreter="/bin/bash"description="hostname"

内置供应器

这些是deploy ostree中包含的供应器。的名称 必须使用配置对象上的内置键设置Provisioner。任何 还必须在配置程序配置中指定下面记录的选项 对象:< /P>

json示例:

{"builtin":"root-password","password":"password"}

TOML示例:

[[provisioners]]builtin="root-password"password="password"
etc网络接口

为DHCP设置环回接口和一个其他接口 /etc/network/interfaces。这可能只适用于 到基于debian的系统,仅用于dhcp配置。如果你需要不同的 配置,您必须提供自己的供应器或使用 就像网络管理器。

  • 接口:要配置的接口的名称。默认情况下, 网络在terface从/proc/net/route检索。然而,这可能 不同的系统(特别是只有一个在使用 可预测的接口名称)因此它不能保证工作。

根密码

设置根密码。

  • 密码(必需):要设置的根密码。

创建用户

创建用户。这确实试图创建主目录,但是如果您的系统 需要装入的内容不超过stateroot的/var,它可能不需要 工作,

  • 用户名(必需):要创建的用户的用户名。
  • 密码(必需):要创建的用户的密码。
  • shell:用户的shell。如果未指定,则使用默认外壳。

无密码sudo

为用户设置无密码的sudo访问权限。为了让这一切产生效果, sudo必须安装在系统上。

  • 用户(必需):用户名称。

授权钥匙

将ssh授权密钥文件从主机系统复制到部署的 系统。这在流浪者场景中很有用,因为它允许您复制 vagrant在部署的系统中使用的ssh密钥。

  • 路径(必需):要复制到部署系统中的密钥文件的路径。 这是运行deploy ostree的系统上的路径,而不是 已部署系统。
  • 用户(必需):接收密钥的用户的名称。这一定是 已部署系统中的用户。文件被复制到.ssh/authorized_keys 在用户的主目录中。

机器ID

创建包含随机uuid的/etc/machine id文件。如果文件已经 存在,它不会被覆盖。这是让d-bus在系统上工作所必需的 如果丢失,则不会在启动时创建机器ID文件。

  • 路径:文件的备用路径。如果缺少,则使用/etc/machine id。 将创建路径中丢失的所有目录。

示例配置

此配置将下载并部署CentOS Atomic主机, 设置/etc/fstab,并创建一个用户并将其设置为无密码sudo

{"url":"http://mirror.centos.org/centos/7/atomic/x86_64/repo/","ref":"centos-atomic-host/7/x86_64/standard","remote":"centos-atomic","stateroot":"centos-atomic-host","kernel-args":["quiet","splash"],"provisioners":[{"builtin":"create-user","username":"atomic","password":"atomic","shell":"/usr/bin/bash"},{"script":"echo centos-atomic-host > etc/hostname","description":"hostname"},{"builtin":"passwordless-sudo","user":"atomic"}]}
TML: < /P>
url="http://mirror.centos.org/centos/7/atomic/x86_64/repo/"ref="centos-atomic-host/7/x86_64/standard"remote="centos-atomic"stateroot="centos-atomic-host"kernel-args=["quiet", "splash"][[provisioners]]builtin="create-user"username="atomic"password="atomic"shell="/usr/bin/bash"[[provisioners]]script="echo centos-atomic-host > etc/hostname"description="hostname"[[provisioners]]builtin="passwordless-sudo"user="atomic"

请注意,CentOS Atomic主机包括云初始化。 将花费一些时间来成功地进行云设置。这很尴尬,但是 没有太多的ostree系统可以演示,所以我们现在就来了。

版本历史记录

有关版本及其更改的列表,请参见更改日志。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要64位jdk 1.5 for windows   eclipse运算符+对于参数类型java是未定义的。双,爪哇。双人   未下载文件扩展名为的java文件   java不支持带有POST的媒体类型   从动态创建的多个EditText读取文本时发生java错误   java无法为同一xpath单击多个按钮   如何在Java中动态格式化字符串   java Android Clear Middle活动   多线程Java内存模型volatile和x86   git在Java中通过Jgit忽略文件或文件夹   java“决策无法区分输入的备选方案1、2…”   子类的javajpa继承   java需要弄清楚如何操作mutator来弄清楚一个类,教授说,我对如何操作感到困惑   java如何使用JDBC将数据从文件复制到PostgreSQL?