加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 教程 > 正文

Fedora CoreOS 的理念

发布时间:2021-01-25 14:08:00 所属栏目:教程 来源:互联网
导读:创建一个配置 要定制一个 FCOS 系统,你需要提供一个配置文件, Ignition 将使用这个文件来配置系统。你可以用这个文件来配置诸如创建用户、添加受信任的 SSH 密钥、启用 systemd 服务等等。 以下配置创建了一个 core 用户,并在 authorized_keys 文件中添加

创建一个配置

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

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


  1. version: "1.0.0"
  2. variant: fcos
  3. passwd:
  4. users:
  5. - name: core
  6. ssh_authorized_keys:
  7. - ssh-ed25519 my_public_ssh_key_hash fcos_key
  8. systemd:
  9. units:
  10. -
  11. contents: |
  12. [Unit]
  13. Description=Run a hello world web service
  14. After=network-online.target
  15. Wants=network-online.target
  16. [Service]
  17. ExecStart=/bin/podman run --pull=always --name=hello --net=host -p 8080:8080 quay.io/cverna/hello
  18. ExecStop=/bin/podman rm -f hello
  19. [Install]
  20. WantedBy=multi-user.target
  21. enabled: true
  22. name: hello.service

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

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


  1. $ sudo dnf install fcct
  2. $ fcct -output config.ign config.yaml

安装并运行 Fedora CoreOS

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


  1. $ sudo dnf install @virtualization

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


  1. $ chcon --verbose unconfined_u:object_r:svirt_home_t:s0 config.ign
  2. $ virt-install --name=fcos
  3. --vcpus=2
  4. --ram=2048
  5. --import
  6. --network=bridge=virbr0
  7. --graphics=none
  8. --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${PWD}/config.ign"
  9. --disk=size=20,backing_store=${PWD}/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2

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


  1. Fedora CoreOS 32.20200907.3.0
  2. Kernel 5.8.10-200.fc32.x86_64 on an x86_64 (ttyS0)
  3. SSH host key: SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rQ27U (ED25519)
  4. SSH host key: SHA256:W3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE (ECDSA)
  5. SSH host key: SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0 (RSA)
  6. ens2: 192.168.122.237 fe80::5054:ff:fef7:1a73
  7. Ignition: user provided config was applied
  8. Ignition: wrote ssh authorized keys file for user: core

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

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


  1. $ curl http://192.168.122.237:8080
  2. Hello from Fedora CoreOS!

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


  1. $ ssh core@192.168.122.237
  2. $ systemctl status hello
  3. hello.service - Run a hello world web service
  4. Loaded: loaded (/etc/systemd/system/hello.service; enabled; vendor preset: enabled)
  5. Active: active (running) since Wed 2020-10-28 10:10:26 UTC; 42s ago

zincati、rpm-ostree 和自动更新

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

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


  1. $ ssh core@192.168.122.237
  2. $ rpm-ostree status
  3. State: idle
  4. Deployments:
  5. ostree://fedora:fedora/x86_64/coreos/stable
  6. Version: 32.20200907.3.0 (2020-09-23T08:16:31Z)
  7. Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57
  8. GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  9. $ systemctl status zincati
  10. zincati.service - Zincati Update Agent
  11. Loaded: loaded (/usr/lib/systemd/system/zincati.service; enabled; vendor preset: enabled)
  12. Active: active (running) since Wed 2020-10-28 13:36:23 UTC; 7s ago
  13. Oct 28 13:36:24 cosa-devsh zincati[1013]: [INFO ] initialization complete, auto-updates logic enabled
  14. Oct 28 13:36:25 cosa-devsh zincati[1013]: [INFO ] target release '32.20201004.3.0' selected, proceeding to stage it
  15.  
  16. ... zincati reboot ...

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


  1. $ ssh core@192.168.122.237
  2. $ rpm-ostree status
  3. State: idle
  4. Deployments:
  5. ostree://fedora:fedora/x86_64/coreos/stable
  6. Version: 32.20201004.3.0 (2020-10-19T17:12:33Z)
  7. Commit: 64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30
  8. GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  9. ostree://fedora:fedora/x86_64/coreos/stable
  10. Version: 32.20200907.3.0 (2020-09-23T08:16:31Z)
  11. Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57
  12. GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

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

结论

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

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

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读