現在被稱為 DevOps 時代,操作系統的關注度似乎比工具要低一些。然而,這并不意味著操作系統沒有創新。(編輯注:基于 Linux 內核的眾多發行版所提供的多樣化產品就是一個很好的例子)。Fedora CoreOS就對這個 DevOps 時代的操作系統應該是什么樣有著獨特的理念。
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” 一節。):
$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 服務等等。
以下配置創建了一個core
用戶,并在authorized_keys
文件中添加了一個 SSH 密鑰。它還創建了一個 systemd 服務,使用podman來運行一個簡單的 “hello world” 容器:
version:"1.0.0"variant:fcospasswd:users:-name:coressh_authorized_keys:-ssh-ed25519my_public_ssh_key_hashfcos_keysystemd:units:-contents:|[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
。接下來使用 Fedora CoreOS Config Transpiler(fcct
)工具將這個 YAML 配置轉換成有效的 Ignition 配置(JSON 格式)。
直接從 Fedora 的資源庫中安裝fcct
,或者從GitHub中獲取二進制文件:
$sudodnfinstallfcct$fcct-outputconfig.ignconfig.yaml
要運行鏡像,你可以使用 libvirt 堆棧。要在 Fedora 系統上使用dnf
軟件包管理器安裝它:
$sudodnfinstall@virtualization
現在讓我們創建并運行一個 Fedora CoreOS 虛擬機:
$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
安裝成功后,會顯示一些信息并提供登錄提示符:
FedoraCoreOS32.20200907.3.0Kernel5.8.10-200.fc32.x86_64onanx86_64(ttyS0)SSHhostkey:SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rQ27U(ED25519)SSHhostkey:SHA256:W3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE(ECDSA)SSHhostkey:SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0(RSA)ens2:192.168.122.237fe80::5054:ff:fef7:1a73Ignition:userprovidedconfigwasappliedIgnition:wrotesshauthorizedkeysfileforuser:core
Ignition 配置文件沒有為core
用戶提供任何密碼,因此無法通過控制臺直接登錄。(不過,也可以通過 Ignition 配置為用戶配置密碼。)
使用Ctrl + ]
組合鍵退出虛擬機的控制臺。然后檢查hello.service
是否在運行:
$curlhttp://192.168.122.237:8080HellofromFedoraCoreOS!
使用預先配置的 SSH 密鑰,你還可以訪問虛擬機并檢查其上運行的服務:
$sshcore@192.168.122.237$systemctlstatushello●hello.service-RunahelloworldwebserviceLoaded:loaded(/etc/systemd/system/hello.service;enabled;vendorpreset:enabled)Active:active(running)sinceWed2020-10-2810:10:26UTC;42sago
zincati 服務使用自動更新驅動 rpm-ostreed。
檢查虛擬機上當前運行的 Fedora CoreOS 版本,并檢查 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;vendorpreset:enabled)Active:active(running)sinceWed2020-10-2813:36:23UTC;7sago…Oct2813:36:24cosa-devshzincati[1013]:[INFO]initializationcomplete,auto-updateslogicenabledOct2813:36:25cosa-devshzincati[1013]:[INFO]targetrelease'32.20201004.3.0'selected,proceedingtostageit...zincatireboot...
重啟后,我們再遠程登錄一次,檢查新版的 Fedora CoreOS:
$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:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
rpm-ostree status
現在顯示了兩個版本的 Fedora CoreOS,一個是 QEMU 鏡像中的版本,一個是更新后的最新版本。有了這兩個版本,就可以使用rpm-ostree rollback
命令回滾到之前的版本。
最后,你可以確保 hello 服務仍在運行并提供內容:
$curlhttp://192.168.122.237:8080HellofromFedoraCoreOS!
要進行事后清理,使用以下命令刪除虛擬機和相關存儲:
$virshdestroyfcos$virshundefine--remove-all-storagefcos
Fedora CoreOS 為在容器中運行應用程序提供了一個堅實而安全的操作系統。它在推薦主機使用聲明式配置文件進行配置的 DevOps 環境中表現出色。自動更新和回滾到以前版本的操作系統的能力,可以在服務的運行過程中帶來安心的感覺。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注本站行業資訊頻道,感謝您對本站的支持。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
#標題創作挑戰#從2009年開始,安徽衛視引進了《天使之爭》、《愛在路上》、《一個承諾》、《丘比特的陷阱》、《鉆石之戰》、《愛的漣漪》、《愛的被告》、《旋轉的愛》、《真愛無價》等經典泰劇。,在國內引起了追劇熱潮,培養了大批忠實的泰劇粉絲。近年來,泰國腐劇發展迅速,但傳統泰劇在中國的影響力卻大不如前。不過最近有一部泰劇,是《虎玫瑰先生》?!痘⒚倒逑壬分约t,不是憑借精良的制作和精彩的劇情,而是先...
96669是什么銀行?96669是安徽省安慶農商銀行的服務熱線。該銀行全稱為安慶農村商業銀行股份有限公司,是安慶市第一家地方性股份制農村商業銀行,成立于2009年11月23日。安慶農商銀行的注冊地址為安徽省安慶市集賢南路40號。96669是哪家銀行電話安慶農商銀行經營業務主要包括吸收公眾存款、發放短期、中期和長期貸款;辦理國內結算;辦理票據承兌與貼現;從事銀行卡業務、代理發行、代理兌付,承銷政府債...
代扣代繳和代收代繳的區別在哪?1、應納稅款來源不同:代扣代繳義務人是直接從持有納稅人的收入中直接扣除納稅人的應納稅款。而代收代繳義務人在與納稅人的經濟往來中收取納稅人的應納稅款并代為繳納;2、繳費行為不同:代扣代繳是指代稅機關從繳納納稅義務單位和個人的收益中扣留并向稅務機關解繳的行為,稅收法規、行政法規明文規定,承擔扣繳義務單位和個人在繳納款項時。代收代繳是稅務法律、行政法規明確規定有扣繳義務的單...