部署和配置ostree提交
deploy-ostree的Python项目详细描述
部署ostree:部署并提供ostree提交
deploy ostree
是部署和配置ostree的工具
没有来自简单配置文件的用户输入。它将:
- 设置遥控器
- 拉动提交
- 创建stateroot
- 签出并展开树
- 运行其他配置程序以使部署的系统有用
它最初的预期用例是自动测试;因此,它不应该
被视为最终用户安装程序的替代品。部署ostree
可以
作为一个安装常规系统的工具,但它也可以使用快捷方式
对于一次性测试环境来说,这是很好的,但可能不是
在长寿命系统中保持良好状态。
要求
从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:将kernel
root
boot参数设置为给定值。
默认情况下,使用当前引导的root
参数。 - --fstab=fstab:将给定的文件复制到部署中作为
/etc/fstab
。如果
忽略此参数,则使用系统fstab(/etc/fstab
)。
关于selinux的说明
/
。就像对于/
一样,目录必须存在并且
初始化为libostree与ostree admin init fs<;sysroot path>;
一起使用
root
boot参数设置为给定值。
默认情况下,使用当前引导的root
参数。/etc/fstab
。如果
忽略此参数,则使用系统fstab(/etc/fstab
)。虽然不推荐,但使用主机系统和 使用已部署系统的selinux可能需要在部署之前禁用selinux 为了避免主机的selinux策略与中的selinux标签之间的冲突 部署的树。要暂时禁用selinux,请执行以下操作:
# setenforce 0
配置格式
配置文件必须是有效的json或toml文件。这个
配置的语法由其文件扩展名决定:如果它是.toml
(不区分大小写),它被解析为一个toml文件。否则,它被认为是
JSON文件。虽然格式的语法明显不同,但是
deploy ostree使用的
可以使用通用的json-to-toml转换器将文件转换为toml(以及
反之亦然)。
两种格式使用相同的顶级配置键:
- url或path(必需):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系统可以演示,所以我们现在就来了。
版本历史记录
有关版本及其更改的列表,请参见更改日志。