当前位置: 首页 > 科技观察

FedoraCoreOS入门

时间:2023-03-13 21:22:29 科技观察

现在被称为DevOps时代,操作系统似乎比工具更受关注。然而,这并不意味着操作系统没有创新。(编者注:许多基于Linux内核的发行版提供的各种产品就是一个很好的例子)。FedoraCoreOS对于这个DevOps时代的操作系统应该是什么样子有着独特的想法。FedoraCoreOS的理念FedoraCoreOS(FCOS)是CoreOSContainerLinux和FedoraAtomicHost的合并。它是一个精简的单一操作系统,专注于运行容器化应用程序。安全是重中之重,FCOS通过SELinux加固提供自动更新。为了使自动更新运行良好,它们需要非常健壮,目标是运行FCOS的服务器在更新后不会崩溃。这是通过使用不同的发布流(稳定版、测试版和下一个)来实现的。每个流每2周发布一次,更新从一个流推出到另一个流(下一步->测试->稳定)。这样,登陆稳定流的更新才有机会接受长期的考验。入门对于这个例子,让我们使用稳定的流和一个我们可以作为虚拟机运行的QEMU基础镜像。您可以使用coreos-installer下载此映像。在您的(工作站)终端上,更新图像链接后,运行以下命令(编者注:在Silverblue上,基于容器的coreos工具是最简单的尝试方法。说明可在https://docs.Fedoraproject.org/en-US/fedora-coreos/tutorial-setup/,尤其是“使用Podman或Docker进行设置”部分。):$sudodnfinstallcoreos-installer$coreos-installerdownload--image-urlhttps://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-dfedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz$lsfedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2创建配置以自定义FCOS系统,您需要提供Ignition将用于配置系统的配置文件。您可以使用此文件来配置诸如创建用户、添加受信任的SSH密钥、启用systemd服务等内容。以下配置创建核心用户并将SSH密钥添加到authorized_keys文件。它还创建了一个systemd服务,该服务使用podman来运行一个简单的“helloworld”容器:版本:“1.0.0”变体:fcospasswd:用户:-名称:核心ssh_authorized_keys:-ssh-ed25519my_public_ssh_key_hashfcos_keysystemd:单位:-内容:|[Unit]Description=RunahelloworldwebserviceAfter=network-online.targetWants=network-online.target[Service]ExecStart=/bin/podmanrun--pull=always--name=hello--net=host-p8080:8080quay.io/cverna/helloExecStop=/bin/podmanrm-fhello[Install]WantedBy=multi-user.targetenabled:truename:hello.service添加你的SSH到配置键后,将其保存为config.yaml。接下来使用FedoraCoreOSConfigTranspiler(fcct)工具将此YAML配置转换为有效的Ignition配置(JSON格式)。直接从Fedora的存储库安装fcct,或从GitHub获取二进制文件:$sudodnfinstallfcct$fcct-outputconfig.ignconfig.yaml安装并运行FedoraCoreOS要运行映像,您可以使用libvirt堆栈。使用dnf包管理器在Fedora系统上安装它:$sudodnfinstall@virtualization现在让我们创建并运行FedoraCoreOS虚拟机:$chcon--verboseunconfined_u:object_r:svirt_home_t:s0config.ign$virt-install--name=fcos\--vcpus=2\--ram=2048\--import\--network=bridge=virbr0\--graphics=none\--qemu-commandline="-fw_cfgname=opt/com.coreos/config,file=${PWD}/config.ign"\--disk=size=20,backing_store=${PWD}/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2安装成功后,Someinformationisdisplayedandaloginpromptisgiven:FedoraCoreOS32.20200907.3.0Kernel5.8.10-200.fc32.x86_64onanx??86_64(ttyS0)SSHhostkey:SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rHA2key:1host:1keyW3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE(ECDSA)SSH主机密钥:SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0(RSA)ens2:192.168.122.237fe80::5054:ff:fef7:1a73Ignition:已应用用户提供的配置Ignition:为以下内容编写了ssh授权密钥文件user:coreIgnition配置文件没有为核心用户提供任何密码,因此无法通过控制台直接登录。(不过,也可以通过Ignition配置为用户配置密码。)使用Ctrl+]组合键退出虚拟机的控制台。然后检查hello.service是否正在运行:$curlhttp://192.168.122.237:8080HellofromFedoraCoreOS!使用预先配置的SSH密钥,您还可以访问虚拟机并检查其上运行的服务:$sshcore@192.168.122.237$systemctlstatushellohello.service-运行一个helloworldweb服务Loaded:loaded(/etc/systemd/system/hello.service;已启用;供应商预设:已启用)活动:自2020年10月-28日星期三10:10:26UTC起处于活动状态(运行);42sagozincati、rpm-ostree和自动更新zincati服务使用自动更新驱动程序rpm-ostreed。查看当前在虚拟机上运行的FedoraCoreOS的版本,并检查zincati是否发现更新:$sshcore@192.168.122.237$rpm-ostreestatusState:idleDeployments:ostree://fedora:fedora/x86_64/coreos/stableVersion:32.20200907.3.0(2020-09-23T08:16:31Z)Commit:b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0$systemctlstatuszincati●zincati.service-ZincatiUpdateAgentLoaded:loaded(/usr/lib/systemd/system/zincati.service;enabled;供应商预设:已启用)活动:自2020年10月28日星期三13:36:23UTC起活动(运行);7秒前……10月28日13:36:24cosa-devshzincati[1013]:[信息]初始化完成,启用自动更新逻辑10月28日13:36:25cosa-devshzincati[1013]:[信息]目标版本'32.20201004.3.0'选中,继续执行它...zincatireboot...重启后,我们将远程登录一次,检查FedoraCoreOS的新版本:$sshcore@192.168.122.237$rpm-ostreestatusState:idleDeployments:ostree://fedora:fedora/x86_64/coreos/stableVersion:32.20201004.3.0(2020-10-19T17:12:33Z)Commit:64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30GPGSignature:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion:32.20200907.3.0(2020-09-23T08:16:31Z)Commit:b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0rpm-ostreestatus现在显示了两个版本的FedoraCoreOS,一个是QEMU镜像中的版本,一个是更新后的最新版本有了这两个版本,就可以使用rpmThe-ostreerollbackcommandrollsbacktothepreviousversion.Finally,youcanmakesurethehelloserviceisstillrunningandservingcontent:$curlhttp://192.168.122.237:8080HellofromFedoraCoreOS!See:FedoraCoreOSUpdatesformoreinfo.DeletingaVMTocleanupafterthefact,deletetheVMandassociatedstoragewiththefollowingcommand:$virshdestroyfcos$virshundefine--remove-all-storagefcosConclusionFedoraCoreOSprovidesasolidandsecureenvironmentforrunningapplicationsincontainersoperatingsystem.ItexcelsinDevOpsenvironmentswhereitisrecommendedthathostsbeprovisionedusingdeclarativeconfigurationfiles.Theabilitytoautomaticallyupdateandrollbacktopreviousversionsoftheoperatingsystemcanbringasenseofpeaceofmindwhiletheserviceisrunning.LearnmoreaboutFedoraCoreOSbyfollowingthetutorialsintheprojectdocumentation.