If your attribute value is actually a list:
default['zabbix']['agent']['servers_active'] = [ "hostname1", "hostname2" ]
Then in your template, you could just render it's elements separated by a comma:
ServerActive=<%= node.zabbix.agent.servers_active.join(",") %>
If you want to have it both ways - perhaps you have some legacy roles that
still insist on single values and not lists:
just a single value, not passed as a list
default['zabbix']['agent']['servers_active'] = "hostname"
several values passed as a list
default['zabbix']['agent']['servers_active'] = [ "hostname1", "hostname2" ]
Then in your template, to treat whatever is passed as a list:
ServerActive=<%= [node.zabbix.agent.servers_active].join(",") %>
HTH.
On 05/15/2013 01:19 AM, tagrawal@adobe.com wrote:
Hi All,
I have an attribute which I must pass as list and update it in the template
file But it seems the attributes are taken as literal string during chef-run.
Is there a way to pass a list and handle it in templates ?
default['zabbix']['agent']['servers_active'] = "hostname"
default['zabbix']['agent']['servers_active'] = "[ "hostname1", "hostname2" ]"
Template where this list need to
ServerActive=<%= node.zabbix.agent.server_active %>
Desired Output
ServerActive=hostname1,hostname2
thanks for your response in advance!
Tarun