本記事は Container Linux Config Transpiler(ct) の導入についての備忘録です。
前書き
Container Linux では Ignition というプロビジョニングユーティリティを使用して初期設定を行います。
Ignition は初回起動時のみに適用されるJSON形式のファイルとなります。
ただ Ignition ファイルの作成は人に優しくない苦行になってしまうため、
- 人に優しいYAML形式である Container Linux Config ファイルを書く
- Container Linux Config Transpiler(ct) を使用して Ignition ファイル(jsonファイル)に変換する
という手順がセオリーになります。
今回は ct
のインストール方法と簡単な使い方について説明していきます。
-
導入環境
システム バージョン Windows10 Pro x64 1709 opesSUSE (WSL) Leap 42.3
ct
インストール
バイナリが配布されているため、これをダウンロードしてパスを通せばいいだけです。
GitHubのREADMEにそのものズバリな手順も書かれていますが、備忘録ということで自分がやった手順も残しておきます。
以下、WSLの openSUSE 上で作業しています。
-
CoreOSのアプリ用公開鍵のインポート
bashcurl -s https://coreos.com/dist/pubkeys/app-signing-pubkey.gpg | gpg --import
-
ct
のバイナリファイルをダウンロードbashcurl -LO https://github.com/coreos/container-linux-config-transpiler/releases/download/v0.9.0/ct- v0.9.0-x86_64-unknown-linux-gnu
-
署名確認
bash$ curl -LO https://github.com/coreos/container-linux-config-transpiler/releases/download/v0.9.0/ct-v0.9.0-x86_64-unknown-linux-gnu.asc $ gpg --verify ct-v0.9.0-x86_64-unknown-linux-gnu.asc gpg: assuming signed data in 'ct-v0.9.0-x86_64-unknown-linux-gnu' gpg: Signature made Sat 19 May 2018 08:42:52 AM DST gpg: using RSA key 9CEB8FE6B4F1E9E752F61C82CDDE268EBB729EC7 gpg: Good signature from "CoreOS Application Signing Key <security@coreos.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 18AD 5014 C99E F7E3 BA5F 6CE9 50BD D3E0 FC8A 365E Subkey fingerprint: 9CEB 8FE6 B4F1 E9E7 52F6 1C82 CDDE 268E BB72 9EC7
-
パス通し
bashchmod 755 ct-v0.9.0-x86_64-unknown-linux-gnu sudo mv ct-v0.9.0-x86_64-unknown-linux-gnu /usr/local/bin/ cd /usr/local/bin sudo ln -s ct-v0.9.0-x86_64-unknown-linux-gnu ct
これで ct
コマンドが使えるようになります。
使い方
Container Linux Config を読み込ませるとJSON形式に変換して標準出力してくれます。
$ ct < clconf.yml
{"ignition":{"config":{},"security":{"tls":{}},"timeouts":{},"version":"2.2.0"},"networkd":{},"passwd":{"users":[{"homeDir":"/home/hoge","name":"hoge","sshAuthorizedKeys":["ssh-rsa xxx..."],"shell":"/bin/bash"}]},"storage":{},"systemd":{}}
よって Ignition ファイルを作成するにはリダイレクトすればOKです。
ct < clconf.yml > ignition.ign
また、設定に誤りがあると次のようなエラー出力がなされます。
$ ct < wrong_clconf.yml > ignition.ign
error: yaml: line 7: did not find expected '-' indicator
Failed to parse config
以上で Container Linux Config Transpiler の導入は終わりです。お疲れ様でした。
今回は説明しなかった Container Linux Config ファイルの書き方についてはまた別記事で書いてみる予定です。
(公式ドキュメントにある Examples の焼き写しになりますが……)