服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Fedora - Fedora CoreOS 入门

Fedora CoreOS 入门

2020-12-14 00:53Linux中国Clément Verna Fedora

Fedora CoreOS(FCOS)是由 CoreOS Container Linux 和 Fedora Atomic Host 合并而来。它是一个专注于运行容器化应用程序的精简的独体操作系统。安全性是首要重点,FCOS 提供了自动更新,并带有 SELinux 强化。

Fedora CoreOS 入门

现在被称为 DevOps 时代,操作系统的关注度似乎比工具要低一些。然而,这并不意味着操作系统没有创新。(编辑注:基于 Linux 内核的众多发行版所提供的多样化产品就是一个很好的例子)。Fedora CoreOS 就对这个 DevOps 时代的操作系统应该是什么样有着独特的理念。

Fedora CoreOS 的理念

 

Fedora CoreOS(FCOS)是由 CoreOS Container Linux 和 Fedora Atomic Host 合并而来。它是一个专注于运行容器化应用程序的精简的独体操作系统。安全性是首要重点,FCOS 提供了自动更新,并带有 SELinux 强化。

为了使自动更新能够很好地工作,它们需要非常健壮,目标是运行 FCOS 的服务器在更新后不会崩溃。这是通过使用不同的发布流(stable、testing 和 next)来实现的。每个流每 2 周发布一次,更新内容会从一个流推广到另一个流(next -> testing -> stable)。这样落地在 stable 流中的更新就有机会经过长时间的测试。

入门

 

对于这个例子,让我们使用 stable 流和一个 QEMU 基础镜像,我们可以作为一个虚拟机运行。你可以使用 coreos-installer 来下载该镜像。

在你的(Workstation)终端上,更新镜像的链接后,运行以下命令(编辑注:在 Silverblue 上,基于容器的 coreos 工具是最简单的方法,可以尝试一下。说明可以在 https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-setup/ 中找到,特别是 “Setup with Podman or Docker” 一节。):

$ sudo dnf install coreos-installer

$ coreos-installer download --image-url https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/32.20200907.3.0/x86_64/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz

$ xz -d fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz

$ ls

fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2

创建一个配置

要定制一个 FCOS 系统,你需要提供一个配置文件,Ignition 将使用这个文件来配置系统。你可以用这个文件来配置诸如创建用户、添加受信任的 SSH 密钥、启用 systemd 服务等等。

以下配置创建了一个 core 用户,并在 authorized_keys 文件中添加了一个 SSH 密钥。它还创建了一个 systemd 服务,使用 podman 来运行一个简单的 “hello world” 容器:

version: "1.0.0"

variant: fcos

passwd:

users:

- name: core

ssh_authorized_keys:

- ssh-ed25519 my_public_ssh_key_hash fcos_key

systemd:

units:

-

contents: |

[Unit]

Description=Run a hello world web service

After=network-online.target

Wants=network-online.target

[Service]

ExecStart=/bin/podman run --pull=always --name=hello --net=host -p 8080:8080 quay.io/cverna/hello

ExecStop=/bin/podman rm -f hello

[Install]

WantedBy=multi-user.target

enabled: true

name: hello.service

在配置中加入你的 SSH 密钥后,将其保存为 config.yaml。接下来使用 Fedora CoreOS Config Transpiler(fcct)工具将这个 YAML 配置转换成有效的 Ignition 配置(JSON 格式)。

直接从 Fedora 的资源库中安装 fcct,或者从 GitHub 中获取二进制文件:

$ sudo dnf install fcct

$ fcct -output config.ign config.yaml

安装并运行 Fedora CoreOS

要运行镜像,你可以使用 libvirt 堆栈。要在 Fedora 系统上使用 dnf 软件包管理器安装它:

$ sudo dnf install @virtualization

现在让我们创建并运行一个 Fedora CoreOS 虚拟机:

$ chcon --verbose unconfined_u:object_r:svirt_home_t:s0 config.ign

$ virt-install --name=fcos \

--vcpus=2 \

--ram=2048 \

--import \

--network=bridge=virbr0 \

--graphics=none \

--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${PWD}/config.ign" \

--disk=size=20,backing_store=${PWD}/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2

安装成功后,会显示一些信息并提供登录提示符:

Fedora CoreOS 32.20200907.3.0

Kernel 5.8.10-200.fc32.x86_64 on an x86_64 (ttyS0)

SSH host key: SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rQ27U (ED25519)

SSH host key: SHA256:W3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE (ECDSA)

SSH host key: SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0 (RSA)

ens2: 192.168.122.237 fe80::5054:ff:fef7:1a73

Ignition: user provided config was applied

Ignition: wrote ssh authorized keys file for user: core

Ignition 配置文件没有为 core 用户提供任何密码,因此无法通过控制台直接登录。(不过,也可以通过 Ignition 配置为用户配置密码。)

使用 Ctrl + ] 组合键退出虚拟机的控制台。然后检查 hello.service 是否在运行:

$ curl http://192.168.122.237:8080

Hello from Fedora CoreOS!

使用预先配置的 SSH 密钥,你还可以访问虚拟机并检查其上运行的服务:

$ ssh core@192.168.122.237

$ systemctl status hello

hello.service - Run a hello world web service

Loaded: loaded (/etc/systemd/system/hello.service; enabled; vendor preset: enabled)

Active: active (running) since Wed 2020-10-28 10:10:26 UTC; 42s ago

zincati、rpm-ostree 和自动更新

zincati 服务使用自动更新驱动 rpm-ostreed。

检查虚拟机上当前运行的 Fedora CoreOS 版本,并检查 zincati 是否找到了更新:

$ ssh core@192.168.122.237

$ rpm-ostree status

State: idle

Deployments:

ostree://fedora:fedora/x86_64/coreos/stable

Version: 32.20200907.3.0 (2020-09-23T08:16:31Z)

Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57

GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

$ systemctl status zincati

zincati.service - Zincati Update Agent

Loaded: loaded (/usr/lib/systemd/system/zincati.service; enabled; vendor preset: enabled)

Active: active (running) since Wed 2020-10-28 13:36:23 UTC; 7s ago

Oct 28 13:36:24 cosa-devsh zincati[1013]: [INFO ] initialization complete, auto-updates logic enabled

Oct 28 13:36:25 cosa-devsh zincati[1013]: [INFO ] target release '32.20201004.3.0' selected, proceeding to stage it

 

... zincati reboot ...

重启后,我们再远程登录一次,检查新版的 Fedora CoreOS:

$ ssh core@192.168.122.237

$ rpm-ostree status

State: idle

Deployments:

ostree://fedora:fedora/x86_64/coreos/stable

Version: 32.20201004.3.0 (2020-10-19T17:12:33Z)

Commit: 64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30

GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

ostree://fedora:fedora/x86_64/coreos/stable

Version: 32.20200907.3.0 (2020-09-23T08:16:31Z)

Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57

GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

rpm-ostree status 现在显示了两个版本的 Fedora CoreOS,一个是 QEMU 镜像中的版本,一个是更新后的最新版本。有了这两个版本,就可以使用 rpm-ostree rollback 命令回滚到之前的版本。

最后,你可以确保 hello 服务仍在运行并提供内容:

$ curl http://192.168.122.237:8080

Hello from Fedora CoreOS!

更多信息参见:Fedora CoreOS 更新

删除虚拟机

要进行事后清理,使用以下命令删除虚拟机和相关存储:

$ virsh destroy fcos

$ virsh undefine --remove-all-storage fcos

结论

 

Fedora CoreOS 为在容器中运行应用程序提供了一个坚实而安全的操作系统。它在推荐主机使用声明式配置文件进行配置的 DevOps 环境中表现出色。自动更新和回滚到以前版本的操作系统的能力,可以在服务的运行过程中带来安心的感觉。

通过关注项目文档中的教程,了解更多关于 Fedora CoreOS 的信息。

原文地址:https://linux.cn/article-12912-1.html

延伸 · 阅读

精彩推荐
  • Fedorafedora8 linux挂载DVD光盘或ISO镜像为源的方法

    fedora8 linux挂载DVD光盘或ISO镜像为源的方法

    1、先挂载DVD光盘或ISO镜像文件 2、修改/etc/yum.repos.d/fedora.repo 用root权限修改/etc/yum.repos.d/fedora.repo,原文件的第一部分如下: [fedora] name=Fedora $releasever - $b...

    fedora教程网5802019-10-14
  • FedoraUbuntu和Fedora上通过图形化界面或源码安装软件包的方法

    Ubuntu和Fedora上通过图形化界面或源码安装软件包的方法

    这篇文章主要介绍了Ubuntu和Fedora上通过图形化界面或源码安装软件包的方法,Ubuntu和Fedora分别是Debian系和CentOS系Linux系统中自带桌面环境比较优秀的代表,需要...

    开源中文社区5212019-10-17
  • Fedorafedora7下共享上网

    fedora7下共享上网

    家里有2台机器,一台linux,一台xp,为了共享上网,linux作为主机,我安装的是fc7,下载firestarter,安装这个之前安装xmlparser。安装好了后,出来一个界面配...

    fedora教程网4332019-10-12
  • FedoraFC8下备份linux系统

    FC8下备份linux系统

    linux系统可以使用tar来备份。 我在FC8上装好了totem, mplayer, audacious, 并搞定了wifi后,我觉得该备份一下FC8系统。 IBM R31+TP-LINK 310G Windows XP+FC8 备份前在FC8下卸...

    脚本之家4282019-10-12
  • FedoraSamba中文显示乱码解决办法

    Samba中文显示乱码解决办法

    Samba显示中文乱码,添加下面的内容到smb.conf中 client code page = 936 dos charset = cp936 unix charset = cp936...

    脚本之家4112019-10-14
  • FedoraFedora20 32位系统中安装搜狗拼音输入法图文教程

    Fedora20 32位系统中安装搜狗拼音输入法图文教程

    这篇文章主要介绍了Fedora20 32位系统中安装搜狗拼音输入法图文教程,64位系统有一个RPM包可以直接安装,32位系统没有,所以要手动安装,需要的朋友可以参考下...

    Fedora技术网6102019-10-16
  • FedoraFC7中用yum自动搜索安装软件

    FC7中用yum自动搜索安装软件

    有些包在http://rpm.livna.org上,要先安装http://rpm.livna.org/livna-release-7.rpm这个包才能用yum安装 #yum install stardict mplayer gftp zip unrar multiget azureus amsn wine gnochm 不过...

    fedora教程网4832019-10-12
  • Fedora如何在 Fedora Linux 上安装 Brave 浏览器

    如何在 Fedora Linux 上安装 Brave 浏览器

    在本教程中,你将学习如何在 Fedora Linux 上安装 Brave。你还将学习如何更新和删除它。...

    Linux中国4552021-11-29