自动化构建 Fedora 原子主机

原子主机来自 原子计划 是一个轻量级、基于容器的操作系统,基于不可变基础架构的原则构建,使用 LDK(Linux、Docker、Kubernetes)堆栈。 Atomic Hosts 由标准 RPM 包构建而成,这些包组成文件系统树,使用 rpm-ostree.

Atomic Host 预装了某些软件包。 它不允许随机安装包,引入和维护 唯一容器 工作流程。 但是 Atomic Host 允许将 RPM 包添加到 OSTree 以构建一个启动到它自己的 OSTree 的 Atomic Host。 本指南描述了自动化构建 Atomic Host 的方法。 在本文结束时,您将能够从 QCOW2 映像创建 VM,该映像将使用 OSTree。 该虚拟机也可用于测试目的(请随意 打开一个问题 在这种情况下)!

Atomic Host 和 OSTree 的主要好处之一是能够 一次配置,多次部署 使用自定义 OSTree 图像。

下面的过程和剧本使您能够创建自己的 Atomic Host OSTree 映像。 这是创建自己的第一步 分布 的原子主机安装在您的云服务器上。 请注意,它将在您的本地服务器上安装一堆要求,并大量使用系统资源。 因此,您可能希望在开发机器而不是您的个人笔记本电脑上运行它。

入门

要开始,您需要满足这些要求。

$ sudo dnf install ansible python2-dnf

接下来,您需要克隆 Build-Atomic-Host git repo 在您的工作机器上。

$ git clone https://github.com/trishnaguha/build-atomic-host.git
$ cd build-atomic-host

从 QCOW2 映像创建 VM

以下命令从 QCOW2 映像创建 VM,其中用户名是

原子用户

和密码是

原子

. 这里,

原子节点

是实例名称。

$ sudo sh create-vm.sh atomic-node /path/to/fedora-atomic25.qcow2
# For example: /var/lib/libvirt/images/Fedora-Atomic-25-20170131.0.x86_64.qcow2

安装需求并启动 HTTP 服务器

该树是通过网络服务器提供的。 以下 Ansible playbook 安装需求、创建目录结构、初始化 OSTree 存储库并在 TCP 端口 35000 上启动 HTTP 服务器。

$ ansible-playbook setup.yml --ask-sudo-pass

采用

ip地址

检查 HTTP 服务器的 IP 地址。

这是使用上述命令检查正在运行的 HTTP 服务器的 IP 地址时的样子。
根据输出,正在运行的 HTTP 服务器的 IP 地址是

192.168.121.1

.

为 OSTree 命名并添加 IP 地址

替换给出的变量 变量/atomic.yml 使用 OSTree 名称和 HTTP 服务器 IP 地址。 例如:

# Variables for Atomic host
atomicname: my-atomic
httpserver: 192.168.121.1

这里,

我的原子

是 OSTree 名称和

192.168.121.1

是我们在上面发现的 HTTP 服务器 IP 地址。

运行多合一剧本

以下 playbook 组成 OSTree,执行 SSH 设置并在创建的树上重新设置基准。

$ ansible-playbook main.yml --ask-sudo-pass

检查IP并重启

以下命令返回正在运行的 Atomic 实例的 IP 地址。

$ sudo virsh domifaddr atomic-node

现在,通过 SSH 登录到 Atomic Host 并重新启动它,以便它重新启动到创建的 OSTree:

$ ssh atomic-user@<atomic-hostIP>
$ sudo systemctl reboot

重启后等待几分钟,以免在 SSH-ing 时主机“拒绝连接”。

验证:SSH 到原子主机

$ ssh [email protected]
[atomic-user@atomic-node ~]$ sudo rpm-ostree status
State: idle
Deployments:
● my-atomic:fedora-atomic/25/x86_64/docker-host
       Version: 25.1 (2017-02-07 05:34:46)
        Commit: 15b70198b8ec7fd54271f9672578544ff03d1f61df8d7f0fa262ff7519438eb6
        OSName: fedora-atomic

  fedora-atomic:fedora-atomic/25/x86_64/docker-host
       Version: 25.51 (2017-01-30 20:09:59)
        Commit: f294635a1dc62d9ae52151a5fa897085cac8eaa601c52e9a4bc376e9ecee11dd
        OSName: fedora-atomic

现在你有了更新的 OSTree。

在以后的文章中,我们将看到使用 OSTree 和自定义包(添加/删除包)自动构建原子主机。 你可以看看 文件 参考编写 OSTree 的过程。

特别感谢

为以下人员大声疾呼: