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

Fedora CoreOS的理念

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

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

入门

在本示例中,我们使用稳定流和可以作为虚拟机运行的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的先前版本的功能使服务运行更令人放心,更有保障。

相关主题

linux下怎样运行oyrhon,Fedora CoreOS基础操作,包括安装并运行Fedora CoreOS相关推荐

  1. linux编写一个简单的端口扫描程序,小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2)...

    当前位置:我的异常网» Linux/Unix » 小弟我在linux下写了个简单的多线程端口扫描程序, 小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2) www. ...

  2. linux网卡名字 mac,linux下编程如何获得所有网卡的信息-包括网卡名字,网卡MAC等等......

    linux下编程如何获得所有网卡的信息-包括网卡名字,网卡MAC等等... (2012-06-07 04:35:41) 标签: 的 linux 数据包 杂谈 linux下编程如何获得所有网卡的信息?包 ...

  3. (原创)Linux下一定要4字节地址对齐操作

    Linux下一定要4字节地址对齐操作:"血"的教训,一定不要忘记!!! 当然不仅仅是Linux下,所有的32位机都应该如此!!!

  4. linux下tc、htb、iptables基础知识及openwrt 下qos使用介绍

    htb基础知识:Linux Htb队列规定指南中文版:http://wenku.baidu.com/view/64da046825c52cc58bd6beac.html TC基础知识: Linux 的 ...

  5. Linux下 WRF Domain Wizard 使用教程(PART1:下载+安装)

    从下载--安装--使用 一站式服务~ PART I: 下载+安装 下载WRFDomainWizard 网址: https://www.esrl.noaa.gov/gsd/wrfportal/Domai ...

  6. linux下驱动、cuda、cudnn、tensorflow的安装(转载)

    前言: 安装TensorFlow的GPU版本真的不是一件容易的事,好难,网上的各种安装教程倒是不少,但是基本没有一个能完全照着那种方法就能安装成功的,甚至有些连最基本的一些必需的步骤都没写到,那样子的 ...

  7. linux播放器安装程序,Linux下音乐播放器Audacious 3.10下载与安装

    一款Linux下的音乐播放器Audacious 3.10正式发布下载了,它带来了新的功能和一些重要改进,尽管Audacious 4.0(具有功能齐全的 Qt UI)还没有开发出来,但他们也没有闲着,代 ...

  8. Linux下安全审计audit 系统审计 记录root操作

    Linux下安全审计audit 系统审计 1.审计介绍 Linux 审计系统提供了一种跟踪系统上与安全相关的信息的方法.根据预先配置的规则,Audit 会生成日志条目,以尽可能多地记录有关系统上发生的 ...

  9. linux下安装oracle集群,【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)...

    目录 数据库安装 继oracle集群安装之后,接下来也是最重要的数据库安装,整个数据库安装难度不大,用户以oracle用户身份登录RAC1主节点,对解压后的文件安装.主节点下安装后,其他所有结点自动安 ...

最新文章

  1. 低版本IE浏览器不支持前端代码修改属性remove()的解决办法
  2. NIO源码解析:FileChannel基本使用
  3. sqlserver的触发器练习实例
  4. 为了OFFER系列 | 牛客网美团点评数据分析刷题
  5. SpringMVC异常处理之异常处理代码编写
  6. java super用法_Java基础面试题汇总
  7. 你愿意隐姓埋名一辈子吗?
  8. mysql点击计数器_MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能...
  9. dlog()是什么意思 matlab语言,Matlab
  10. android 相对布局例子代码
  11. Q143:FS,物质导数(Material Derivative)
  12. iOS开发之错误码国际化
  13. 程序员必知的Python陷阱与缺陷列表
  14. 微软发布了个BT软件
  15. 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算
  16. VIL-SLAM论文翻译:Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping
  17. Promsql语法用法
  18. DAY2-Ubuntu主题与终端的美化
  19. SpringBoot2.0日志配置实例
  20. 【文献翻译】自动实施与Windows相关的安全配置指南

热门文章

  1. AI+OCR赋能古彝文数字化—让经典重新跳动
  2. Go与Nginx(lua-resty-string)跨语言加解密
  3. IT线下培训班还值得报吗
  4. 有哪些比较好的wince 播放器 支持硬解的
  5. function 与 => 的区别
  6. html做秒表代码,利用JS实现一个可精确到10ms的秒表的制作(附代码)
  7. 什么是蓝筹股| 一线蓝筹股|二线蓝筹
  8. Eucalyptus使用的技术
  9. 互融云数字资产管理平台综合解决方案
  10. 5G NR Rel16 两步接入/2-step RACH