Created
July 2, 2016 00:26
-
-
Save hnakamur/4cd83b0b5ec1d1cee7aa15c9a2fe0850 to your computer and use it in GitHub Desktop.
cofuで独自リソースを定義する例
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define "my_resource" { | |
version = "default_version", | |
foo = "default_foo", | |
bar = "deafult_bar", | |
function(attrs) | |
print("hello my_resource") | |
for k, v in pairs(attrs) do | |
print("k=" .. tostring(k) .. ", v=" .. tostring(v)) | |
end | |
end, | |
} | |
my_resource "resource_name" { | |
version = "2.0", | |
foo = "value1" | |
} |
作者です。
- my_resource の後の文字列は name というキーに設定されます。
- define で定義していない変数を渡しても無視されます。
は意図した動作ですが。
- define で定義する変数の値は nil 以外にする必要があります。
はおかしな仕様に感じますね。ちょっとどう直すか検討します。
現状リソースのアトリビュートの値について、一部型や定義を厳密に扱っていない(考慮していない)実装になっています。
空文字とnilが同じ扱いになったりとか、定義がない場合とnilで定義されている場合とかの違いとか。。。
今後、このあたりを見なおして改修を検討しようと思います。
検証ありがとうございました!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Goでプロビジョニングツールを作った - オープンソースこねこねを読んで、defineのドキュメントとkohkimakimoto/cofu: Minimum configuration management tool written in Go.のソースを見て試行錯誤した結果、上のように書けば独自リソースを定義できるらしいとわかりました。
実行結果
my_resource
の後の文字列はname
というキーに設定されます。define
で定義していない変数を渡しても無視されます。define
で定義する変数の値はnil
以外にする必要があります。