I tend to create fairly ubiquitous defines, which allow for a lot of functionality. For that, it would be nice if you could tell puppet “if value X is present in array Y, do this”. I made it a feature request for puppet (#3871), which was luckily accepted and will be implemented in the next version of puppet. However, for the time being I needed this fixed. So I spend some time creating an ugly solution for this in older versions of puppet. Hope it helps someone!
# Setup additional services for this vhost, if any are required. # Start with a general check to prevent a lot of work when it's # not needed. if $allow != "" { # FIXME Ideally we want something that simply does # for i in allow do include $http::allow_$i # but that doesn't work (yet?). # W00t! That's going to be added in 2.6! #3871 if inline_template("<%= allow.include?('php5') %>") == "true" { include allow_php5 } if inline_template("<%= allow.include?('rewrite') %>") == "true" { include allow_rewrite } if inline_template("<%= allow.include?('ruby') %>") == "true" { include allow_ruby } if inline_template("<%= allow.include?('python') %>") == "true" { include allow_python } }
Tags: array, inline_template, puppet, puppet-tips-and-tricks, tips, tricks