原子主机来自 原子计划 是一个轻量级、基于容器的操作系统,基于不可变基础架构的原则构建,使用 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 映像。 这是创建自己的第一步 分布 的原子主机安装在您的云服务器上。 请注意,它将在您的本地服务器上安装一堆要求,并大量使用系统资源。 因此,您可能希望在开发机器而不是您的个人笔记本电脑上运行它。
入门
要开始,您需要满足这些要求。
- Fedora 原子 QCOW2 图像
- Ansible 在您的本地系统上(请注意,我安装在我的 Fedora 工作站)
$ 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 的过程。
特别感谢
为以下人员大声疾呼:
- 杰拉德·布拉德 谁指导了我的项目。
- 乔纳森·勒本 谁展示了在 DevConf.CZ 2017 年在布尔诺。 他的幻灯片在这里: jlebon-devconf-幻灯片.