読者です 読者をやめる 読者になる 読者になる

uzyexeのノート

ITインフラ運用系のネタを主に書く、つもり・・・

CoreOSのcloud-config.ymlのsyntax check方法

つい先日、CoreOSの cloud-config.yml をスマートにsyntax checkしたくて一日考え込むハメになったので覚え書き程度のネタです。

 

 1. coreos-cloudinit -validate

CoreOS上でcoreos-cloudinit -validateコマンドを叩くことで手軽にsyntax checkできる。例えば、CoreOS上で /foo/bar/ディレクトリ配下にcloud-config.yml があるなら、下記のようにコマンドを実行するとエラーを検知したときには該当エラーを表示してくれます。

coreos-cloudinit -validate="true" -from-file="/foo/bar/cloud-config.yml"

 (うっかり、-validate="true" が抜けちゃうと、-from-file=""に指定したcloud-config.ymlが即適用されちゃうのでコピペミスとかにはご注意ください・・・。)

 

 2. Cloud-Config Validator

https://coreos.com/validate のページにあるCloud-Config Validatorでもsyntax checkできます。

 

 3. https://validate.core-os.net/validate

どうもそれらしきTipsが書かれているドキュメントは見つからなかったのですが、https://coreos.com/validate/ のページにあるフォームの裏では、https://validate.core-os.net/validate というURLでRESTなHTTP APIがあって、これにcloud-config.ymlを渡すとvalidate処理の結果を返してくれるという仕組みで動いてました。(このAPIソースコードは coreos/coreos-cloudinit-validator · GitHub にあります。)

なので、/foo/bar/ディレクトリ配下に cloud-config.yml を用意しているときは、下記のようなcurlコマンドを実行するとsyntax checkの結果を受け取れます。

curl -sk -X PUT https://validate.core-os.net/validate --data-binary @/foo/bar/cloud-config.yml

結果はJSONフォーマットで返してくれます。何も問題がなければ {"result":null} という結果を返します。

GitHubなどにpushしたcloud-config.ymlをCIサービスなどのテストでsyntax checkしたいときには、このようにcurlコマンドで https://validate.core-os.net/validate のHTTP APIを叩く方法が一番便利だと思います。


パブリックなAPIの形で公開してくれていたCoreOSに感謝。