设置SSH访问并在引导时启动容器

确保您已完成中描述的步骤 初始设置页面 在开始本教程之前。

在本教程中,我们将设置SSH访问并在引导时启动容器。Fedora CoreOS专注于在容器中运行应用程序/服务,因此我们建议尝试运行容器,避免直接修改主机。运行容器和保持原始主机层使自动更新更加可靠,并允许与负责操作系统的Fedora CoreOS团队和负责应用程序的最终用户操作员/系统管理员分离问题。

像往常一样,我们将设置控制台自动登录、主机名、系统寻呼机配置,并提高内核日志记录级别,但我们还将:

  • 为添加SSH密钥 core 用户。

  • 添加一个system d服务( failure.service )在引导时失败。

  • 添加一个将使用容器来调用托管服务的system d服务。

写入Butane配置并转换为Ignition

与我们在第二个供应场景中所做的类似,我们将在名为的文件中编写以下Butane配置 containers.bu

variant: fcos
version: 1.4.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAA...
systemd:
  units:
    - name: serial-getty@ttyS0.service
      dropins:
      - name: autologin-core.conf
        contents: |
          [Service]
          # Override Execstart in main unit
          ExecStart=
          # Add new Execstart with `-` prefix to ignore failure
          ExecStart=-/usr/sbin/agetty --autologin core --noclear %I $TERM
          TTYVTDisallocate=no
    - name: failure.service
      enabled: true
      contents: |
        [Service]
        Type=oneshot
        ExecStart=/usr/bin/false
        RemainAfterExit=yes

        [Install]
        WantedBy=multi-user.target
    - name: etcd-member.service
      enabled: true
      contents: |
        [Unit]
        Description=Run a single node etcd
        After=network-online.target
        Wants=network-online.target

        [Service]
        ExecStartPre=mkdir -p /var/lib/etcd
        ExecStartPre=-/bin/podman kill etcd
        ExecStartPre=-/bin/podman rm etcd
        ExecStartPre=-/bin/podman pull quay.io/coreos/etcd
        ExecStart=/bin/podman run --name etcd --net=host \
                    --volume /var/lib/etcd:/etcd-data:z  \
                    quay.io/coreos/etcd:latest /usr/local/bin/etcd              \
                    --data-dir /etcd-data --name node1                  \
                    --initial-advertise-peer-urls http://127.0.0.1:2380 \
                    --listen-peer-urls http://127.0.0.1:2380            \
                    --advertise-client-urls http://127.0.0.1:2379       \
                    --listen-client-urls http://127.0.0.1:2379          \
                    --initial-cluster node1=http://127.0.0.1:2380
        ExecStop=/bin/podman stop etcd

        [Install]
        WantedBy=multi-user.target
storage:
  files:
    - path: /etc/hostname
      mode: 0644
      contents:
        inline: |
          tutorial
    - path: /etc/profile.d/systemd-pager.sh
      mode: 0644
      contents:
        inline: |
          # Tell systemd to not use a pager when printing information
          export SYSTEMD_PAGER=cat
    - path: /etc/sysctl.d/20-silence-audit.conf
      mode: 0644
      contents:
        inline: |
          # Raise console message logging level from DEBUG (7) to WARNING (4)
          # to hide audit messages from the interactive console
          kernel.printk=4
您还可以选择将YAML文件中的SSH pubkey替换为您自己的公钥,这样您就可以登录到引导的实例。如果您选择不执行此操作,您仍将自动登录到串口控制台。

运行Butane将其转换为Ignition配置:

butane --pretty --strict containers.bu --output containers.ign

现在,让我们对其进行配置:

# Setup the correct SELinux label to allow access to the config
chcon --verbose --type svirt_home_t containers.ign

# Start a Fedora CoreOS virtual machine
virt-install --name=fcos --vcpus=2 --ram=2048 --os-variant=fedora-coreos-stable \
    --import --network=bridge=virbr0 --graphics=none \
    --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${PWD}/containers.ign" \
    --disk=size=20,backing_store=${PWD}/fedora-coreos.qcow2

在串行控制台上,您将看到:

[确定]已达到目标登录提示。

Fedora CoreOS 32.20200715.3.0 X86_64(TtyS0)上的内核5.7.8-200.fc32.x86_64

SSH主机密钥:SHA256:rLJvpsONtyYXW4QCTdHD3Vvn56ERq1AbakWxwRImH2g(Ecdsa) SSH主机密钥:SHA256:/UUqh9nMlFf+2wFSjTMtyLemF6qVEuMHbAh1Td8nJeE(ED25519) SSH主机密钥:SHA256:ZoKsIc9NZVRLe8ao9uPvc1vsbHa6StdSVMvF6rGWhAI(Rsa) En2:192.168.122.142 fe80::5054:ff:ec1:a01f Ignition:应用了用户提供的配置 IGNING:为用户:core写入ssh授权密钥文件 教程登录:CORE(自动登录)

故障单元数:1 failure.service [core@教程~]$

如果您想通过SSH连接,请通过按断开与串口控制台的连接 CTRL + ] 然后使用报告的IP地址 ens2 从串口控制台使用 core 通过SSH的用户:

邮箱:ssh core@192.168.122.142 无法确定主机‘192.168.122.142(192.168.122.142)’的真实性。 ECDSA密钥指纹为SHA256:rLJvpsONtyYXW4QCTdHD3Vvn56ERq1AbakWxwRImH2g. 是否确实要继续连接(是/否/[指纹])?是 警告:将‘192.168.122.142’(ECDSA)永久添加到已知主机列表中。 Fedora CoreOS 32.20200715.3.0 追踪器: https://github.com/coreos/fedora-coreos-tracker 讨论: https://discussion.fedoraproject.org/c/server/coreos/

上次登录时间:Firi Aug 7 2020 10:10:45

故障单元数:1 failure.service [core@教程~]$

这个 Failed Units 消息来自于 控制台登录助手消息 帮手。这个特殊的帮手向我们展示了 systemd 具有处于故障状态的服务。在这种情况下,我们制作了 failure.service 使用 ExecStart=/usr/bin/false ,所以我们特意创建了一个总是失败的服务,以说明帮助消息。

现在我们已经启动,并且没有任何真正的故障,我们可以检查我们关心的服务( etcd-member.service ):

[core@教程~]$systemctl状态—​完整etcd-ember.service Etcd-ember.服务-运行单个节点etcd 已加载:已加载(/etc/systemd/system/etcd-ember.service;已启用;供应商预设:已启用) 活跃:活跃(运行)自UTC 2020-08-07 10:10:45;4分30秒前 进程:1926 ExecStartPre=/usr/bin/mkdir-p/var/lib/etcd(code=已退出,状态=0/成功) 进程:1928 ExecStartPre=/bin/podman kill etcd(代码=已退出,状态=125) 进程:2034 ExecStartPre=/bin/podman rm etcd(代码=已退出,状态=1/故障) 进程:2063 ExecStartPre=/bin/podman Pull quay.io/CoreOS/etcd(code=已退出,状态=0/成功) 主PID:2155(Podman) 任务数:11(限额:2288) 内存:134.2M Cgroup:/Syst.Slice/etcd-ember.service ├─2155/Bin/Podman Run…​ └─2203/USR/BIN/COMON…​

08.07 10:10:47教程播客[2155]:2020-08-07 10:10:47.035534我|raft:b71f75320dc06a6c成为第二学期的候选人 Aug 07 10:10:47 Tutorial Podman[2155]:2020-08-07 10:10:47.035966 i|RAFT:b71f75320dc06a6c在第二学期收到来自b71f75320dc06a6c的消息语音响应 8月07日10:10:47教程Podman[2155]:2020-08-07 10:10:47.036297我|RAFT:b71f75320dc06a6c成为第二届领头羊 08月07 10:10:47教程播客[2155]:2020-08-07 10:10:47.036774 i|raft:raft.节点:b71f75320dc06a6c第二届当选领导人b71f75320dc06a6c Aug 07 10:10:47教程Podman[2155]:2020-08-07 10:10:47.037468 i|etcdserver:将初始集群版本设置为3.3 Aug 07 10:10:47教程Podman[2155]:2020-08-07 10:10:47.050863 N|etcdserver/Membership:将初始集群版本设置为3.3 Aug 07 10:10:47教程播客[2155]:2020-08-07 10:10:47.050955 i|etcdserver/api:已启用版本3.3的功能

Aug 07 10:10:47 Tutorial Podman[2155]:2020-08-07 10:10:47.051115 I|Emed:Ready to Service Client Request. 8月10日10:10:47教程Podman[2155]:2020-08-07 10:10:47.052367 N|嵌入:在127.0.0.1:2379上服务不安全的客户端请求,强烈建议您这样做!

我们还可以检查由system d服务运行的容器的状态:

[core@教程~]$sudo podman PS-a 容器ID映像命令已创建状态端口名称 618991ee6db1 quay.io/coreOS/etcd:最新/usr/local/bin/et…​5分钟前上升5分钟前等

我们可以在etcd中设置键/值对。现在,让我们设置密钥 fedora 到了价值 fun

[core@教程~]$curl-L-X PUT http://127.0.0.1:2379/v2/keys/fedora -d value="fun" {“action”:“set”,“node”:{“key”:“/fedora”,“Value”:“Fun”,“ModifiedIndex”:4,“createdIndex”:4}} [core@教程~]$curl-L http://127.0.0.1:2379/v2/keys/ 2>/dev/null | jq . { “action”:“Get”, “节点”:{ “dir”:True, “节点”:[ { “key”:“/fedora”, “Value”:“好玩”, “ModifiedIndex”:4, “CreatedIndex”:4 } ] } }

看起来一切都很正常!

清理

现在,让我们为下一个测试取下实例。通过按断开与串行控制台的连接 CTRL + ] 或来自SSH,然后销毁机器:

病毒摧毁fcos 未定义病毒—​删除所有存储fcos

您现在可以继续进行 下一教程