Roadworker v0.5.6.beta2をリリースしました。
Calculated Health Checks/Latency Checksのサポート
Calculated Health ChecksとLatency Checksをサポートしました。
Calculated Health Checksはこんな感じ。
rrset "zzz.info.winebarrel.jp", "A" do set_identifier "Secondary" failover "SECONDARY" health_check :calculated => ["07c03a45-5b69-4044-9ec3-016cd8e5f74b", "bba4d1ea-27c2-4d0c-a249-c857a3e46d88"], :health_threshold => 1, :inverted => false ttl 456 resource_records( "127.0.0.3", "127.0.0.4" ) end
Latency Checksはこんな感じです。
rrset "zzz.info.winebarrel.jp", "A" do set_identifier "Primary" failover "PRIMARY" health_check "http://example.com:80/path", :search_string => "ANY_RESPONSE_STRING", :request_interval => 30, :failure_threshold => 3, :measure_latency => true ttl 456 resource_records( "127.0.0.1", "127.0.0.2" ) end
また、APIの変更に伴って、ヘルスチェック周りで意図しない変更が検出されるのは諸々直しました。
それから、ふる〜いI/Fとの互換性を保つため、以下のような書き方を許可していたのですが、やめました。
health_check "http://192.168.0.1:80/path", "example.com"
Health Check GCをデフォルトで無効に
Health Check GCという使われていないHealth Checkを自動的に削除する機能があり、デフォルトで有効になっていたのですが、無効にしました。
--health-check-gc
オプションを渡すと、有効になります。Calculated Health Checksで参照されているHealth Checkは削除対象にはなりません。*1
テンプレートのサポート
以下のように、テンプレートを使えるようにしました。
template "default_rrset" do rrset context.name + "." + context.hosted_zone_name, "A" do ttl context.ttl resource_records( "127.0.0.1" ) end end hosted_zone "winebarrel.jp." do context.ttl = 100 include_template "default_rrset", :name => "www" include_template "default_rrset", :name => "www2" end
テンプレートに渡す変数はcontext
という特殊変数で受け渡せます。
また、include_template
の第二引数にHashを渡すことで、テンプレート内のcontextにHashの値をセットすることができます。
context変数のクラスはHashie::Mashなので、普通のハッシュのように値をセットすることもできます。
context[:ttl] = 100
あと、include_templateはどのブロックでも使えるので
template "default_hz" do hosted_zone context.hz_name do rrset "www." + context.hosted_zone_name, "A" do ttl context.ttl resource_records( "127.0.0.1" ) end end end include_template "default_hz", hz_name: "winebarrel.jp." include_template "default_hz", hz_name: "winebarrel2.jp."
とかもできます。
その他
rrsetからHealth Checkを名前/IDで参照する機能は、今のところ実装してないんですが、そういうユースケースはあるんですかね…