云网牛站
所在位置:首页 > Linux云服务器 > Fedora CoreOS基础操作,包括安装并运行Fedora CoreOS

Fedora CoreOS基础操作,包括安装并运行Fedora CoreOS

2020-11-28 09:53:07作者:于和锐稿源:云网牛站

如果不知从何处入手Fedora CoreOS,那就看看本文,内容有:Fedora CoreOS的理念、入门、创建配置、安装并运行Fedora CoreOS、zincati,rpm-ostree和自动更新、删除虚拟机。

Fedora CoreOS基础操作,包括安装并运行Fedora CoreOS

 

Fedora CoreOS的理念

Fedora CoreOS(FCOS)来自CoreOS Container Linux和Fedora Atomic Host的合并,它是一款最小化的整体操作系统,专注于运行容器化的应用程序,安全性是一流的,FCOS提供自动更新并带有SELinux强化功能。

为了使自动更新正常工作,它们必须非常强大,目标是运行FCOS的服务器在更新后不会中断,这是通过使用不同的发布流来实现的,每个流每2周发布一次,并将内容从一个流提升为另一流,这样一来,稳定流中的更新落地就有机会在很长一段时间内得到测试。

参考:Fedora CoreOS版本详细介绍:用于安全和大规模运行容器化工作负载

 

入门

在本示例中,我们使用稳定流和可以作为虚拟机运行的QEMU基本映像,您可以使用coreos-installer下载该映像,地址在https://github.com/coreos/coreos-installer/releases。

在更新到映像的链接后,从工作站终端运行以下命令,另外在Silverblue上,基于容器的coreos工具是最简单的尝试方法,可以在https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-setup/上找到说明,尤其是使用Podman或Docker进行设置,即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密钥、启用系统服务等功能。

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

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获取二进制文件,地址在https://github.com/coreos/fcct/releases:

$ sudo dnf install fcct

$ fcct -output config.ign config.yaml

 

安装并运行Fedora CoreOS

要运行该映像,可以使用libvirt堆栈,使用dnf软件包管理器将其安装在Fedora系统上:

$ 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配置文件未为核心用户提供任何密码,因此无法直接通过控制台登录,但是,可以通过Ignition配置为用户配置密码。

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

$ curl http://192.168.122.237:8080

Hello from Fedora CoreOS!

使用预配置的SSH密钥,您还可以访问VM并检查在VM上运行的服务:

$ 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。

检查VM当前正在运行哪个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状态现在显示Fedora CoreOS的两个版本,一个出现在QEMU映像中,一个是从更新中获得的最新版本,通过提供这两个版本,可以使用rpm-ostree rollback命令回滚到以前的版本。

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

$ curl http://192.168.122.237:8080

Hello from Fedora CoreOS!

 

删除虚拟机

为了随后进行清理,以下命令将删除VM和关联的存储:

$ virsh destroy fcos

$ virsh undefine --remove-all-storage fcos

 

结论

Fedora CoreOS提供了一个坚实而安全的操作系统,专门用于在容器中运行应用程序,它在DevOps环境中表现出色,该环境鼓励使用声明性配置文件来配置主机,支持自动更新和回滚到OS的先前版本的功能使服务运行更令人放心,更有保障。

 

相关主题

在KVM/OpenStack上安装/运行Fedora CoreOS(FCOS)

精选文章
热门文章