I'm new to Puppet and learning the program and language so this question 
might seem novice. I'm confused why I can assign an escape character to a 
variable but not inside any collection types (arrays or hashes). I was 
doing the simply motd puppet module and I created this:

$red = "^[[0;31m"
$green = "^[[0;32m"
$white = "^[[0;33m"
$bold = "^[[1m"
$unbold = "^[[22m"
...

Those "^[" characters are actual escape characters (a.k.a. echo -e 
\033[0;31m...). When I define my motd variable (which has the contents of 
/etc/motd) I can do this:

$motd = @("END")
You are connecting to: *$**{bold}*${facts[hostname]}.${facts[networking][
'domain']}



*${unbold}......END*

This works when I apply my manifest. Well, I thought having all those 
variables is stupid so I wanted to put them in a hash and just reference 
them by key:

color = {
  'red' => "^[[0;31m",
  'green' => "^[[0;32m",
  'white' => "^[[0;33m",
  'bold' => "^[[1m",
  'unbold' => "^[[22m",
}
...
$motd = @("END")
You are connecting to: *$**{color['bold']}*${facts[hostname]}.${facts[
networking]['domain']}${color['unbold']}


*......END*

However this produces an error

$puppet apply --environment sandbox ./manifests/
Error: Illegal attempt to assign to 'a Name'. Not an assignable reference 
at /etc/puppetlabs/code/environments/sandbox/modules/motd/manifests/init.pp:
53:2 on node fenix.harmonywave.com

I get the same issue if I try using an array as well. I'm fine using a 
variable for each color, I'm just curious why they can't be assigned to 
collection types.

Thanks,
Joshua

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/12bb88f5-07be-4ae8-9bfb-c4b044d26dd5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to