作業ログ源泉垂れ流し

しがないIT技術者の作業ログを垂れ流す

Fedora CoreOSのインストール練習 4 〜ディレクトリ配置〜

今回はFedora CoreOSというよりはIgnitionとButaneの話。
Ignitionで手元のディレクトリに下を丸ごとFedora CoreOS上に配置してみる。

まずは配置するディレクトリ構造を作る。

$ mkdir test
$ mkdir test/dir1
$ mkdir test/dir2
$ echo 'Test file 1' > test/dir1/file1
$ dd if=/dev/urandom of=test/dir1/file2 bs=512 count=1
$ chmod +x test/dir1/file2
$ echo 'Test file 3' > test/dir2/file3
$ chmod 600 test/dir2/file3

test1は普通のテキストファイル、test2は実行権限を付けたバイナリファイル、test3パーミッション600に設定したテキストファイルを作成している。
作ったディレクトリ構造を確認。

$ ls -lR test/
test/:
total 8
drwxr-xr-x 2 user group 4096 Jun 12 17:08 dir1
drwxr-xr-x 2 user group 4096 Jun 12 17:08 dir2

test/dir1:
total 8
-rw-r--r-- 1 user group  12 Jun 12 17:07 file1
-rwxr-xr-x 1 user group 512 Jun 12 17:17 file2

test/dir2:
total 4
-rw------- 1 user group 12 Jun 12 17:08 file3

次に、作ったtestディレクトリの下を配置するためのButan configファイルtree-embed.buを、 Butan configの仕様を参考に作成する。
ここでは、手元のtest配下を/var/home/core/targetに配置するように指定している。

variant: fcos
version: 1.3.0
passwd:
  users:
    - name: core
      password_hash: (ハッシュ)
storage:
  trees:
    - path: /var/home/core/target
      local: test

そして、作ったButan configをIgnition configファイルに変換する。

$ docker run -i --rm -v $PWD:/data quay.io/coreos/butane:release --files-dir /data < tree-embed.bu > tree-embed.ign

生成されたtree-embed.ignの中身を整形したものがこちら。

{
  "ignition": {
    "version": "3.2.0"
  },
  "passwd": {
    "users": [
      {
        "name": "core",
        "passwordHash": "(ハッシュ)"
      }
    ]
  },
  "storage": {
    "files": [
      {
        "path": "/var/home/core/target/dir1/file1",
        "contents": {
          "source": "data:,Test%20file%201%0A"
        },
        "mode": 420
      },
      {
        "path": "/var/home/core/target/dir1/file2",
        "contents": {
          "source": "data:;base64,wTMSSxSVQHkEHeJdfqBKd8e9E0TyQReFqkTeXPydW7oCy83Em8GAOUGDDYeuTpZBZVOIcVkuFowrKeWpmnXIsGOt5g1CmWEDSw9dKbziFs7ASonrNaoVTmcl3k18Y45/oaIOmQx+i9/YZ9rAofZbaeIuqiCTputWB8COCoFZEEP1iRLOgw5AIM5Z2XcZD6b8fp5++jwu0h3VWdKW+xN9NHxQIPzz4J4fIK8Jpw5Lcrkzl0Yu0SAqV0xLgeQWtwNrmvihzxFqjhpqCE1QOb4zPsavfvTOUdbGzd7bW595n0MIBvvqcV0PqgX4OkjihqBwYhWECaakNVy3BVFtTgif4IPpgc2Qm8JMy7rpJwNFCPBleTf8Sys+LsXoXvyimDe2vRo0whKjSkWGO+TfoYl618g5p4gmWERVzC/oq35E2egcbN9Fy8gqssheJQwfVNQQ7viDLRdc7fY/i8zDBm+GGgsgrCMsuqUKerechAnw6UqNKtX10mu5KuQIWfZSGZKzb1bzAHCX4wl/DdWs4LIXnZfPe5F1gnWkC52eSNBFfNvzZqIaLIuZWHpAR4VnVfUNW0BRbgNgSWMkTt+7b0VWHpeMSADdDvEGCiUg9V4E6B60qLxTwFMj2oRdLzdErf5/OkXzzWXI7GafCBOmiWJvz1Lpbne74gJlrHKDd705iYQ="
        },
        "mode": 493
      },
      {
        "path": "/var/home/core/target/dir2/file3",
        "contents": {
          "source": "data:,Test%20file%203%0A"
        },
        "mode": 420
      }
    ]
  }
}

テキストファイルはそのまま、バイナリファイルはbase64エンコードされて埋め込まれている。ファイルの中身がIgnition configに埋め込まれるので、当然ながら配置元ファイルの内容を変更したら、(Butane configを変更していなくても)Ignition configを変換し直す必要がある。
modeの4200644を、4930755を整数値にしたもの。 Butane configの仕様に書かれている通り、実行可能ファイルは0755、それ以外は0644に設定されている。

tree-embed.ignを使ってFedora CoreOSをインストールして確認してみる。

$ ls -lR /var/home/core/target
target/:
total 0
drwxr-xr-x. 2 root root 32 Jun 12 08:33 dir1
drwxr-xr-x. 2 root root 19 Jun 12 08:33 dir2

target/dir1:
total 8
-rw-r--r--. 1 root root  12 Jun 12 08:33 file1
-rwxr-xr-x. 1 root root 512 Jun 12 08:33 file2

target/dir2:
total 4
-rw-r--r--. 1 root root 12 Jun 12 08:33 file3

手元のディレクトリ構造がFedora CoreOSに配置できた!