On Wed, Aug 22, 2012 at 1:43 PM, Justin Stoller <[email protected]> wrote:
> On Wed, Aug 22, 2012 at 1:34 PM, Douglas Garstang
> <[email protected]> wrote:
>> On Wed, Aug 22, 2012 at 11:08 AM, Douglas Garstang
>> <[email protected]> wrote:
>>> On Tue, Aug 21, 2012 at 11:51 PM, Douglas Garstang
>>> <[email protected]> wrote:
>>>> On Tue, Aug 21, 2012 at 11:44 PM, Douglas Garstang
>>>> <[email protected]> wrote:
>>>>> On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran
>>>>> <[email protected]> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote:
>>>>>>> I know I did this once before but can't find docs on how to do it again.
>>>>>>>
>>>>>>> I have this in a yaml file:
>>>>>>>
>>>>>>> pvdisks:
>>>>>>> ec2_pvdisks_m1.small:
>>>>>>> disks: /dev/xvdb1
>>>>>>> enabled: yes
>>>>>>>
>>>>>>> Loading it with hiera.
>>>>>>>
>>>>>>> Manifest has:
>>>>>>>
>>>>>>> $testkey = hiera('pvdisks')
>>>>>>> notice ("TESTKEY=$testkey[ec2_pvdisks_m1.small]")
>>>>>>>
>>>>>>> This is printing
>>>>>>> TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small']
>>>>>>
>>>>>> Try inspecting it some other way than printf debugging - notice always
>>>>>> flattens variables by calling .to_s on them, so it is not a very useful
>>>>>> tool. I am assuming that things are indeed fine, but this is confusing
>>>>>> matters.
>>>>>
>>>>> I've since learned that I have to use hiera_array and hiera_hash,
>>>>> which aren't documented anywhere.
>>>>>
>>>>> Now I've got:
>>>>>
>>>>> ec2_config:
>>>>> instance:
>>>>> m1.small:
>>>>> pvdisks:
>>>>> - /dev/xvdb1
>>>>> swapvol_size: 2G
>>>>> logvol_size: 64G
>>>>> m1.medium:
>>>>> pvdisks:
>>>>> - /dev/xvdb1
>>>>> swapvol_size: 2G
>>>>> logvol_size: 64G
>>>>> m1.large:
>>>>> pvdisks:
>>>>> - /dev/xvdb1
>>>>> - /dev/xvdc1
>>>>> swapvol_size: 4G
>>>>> logvol_size: 64G
>>>>>
>>>>> and I've tried to access the data every witch way.
>>>>>
>>>>> This gives me a syntax error...
>>>>> $pvdisks =
>>>>> hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks'])
>>>>>
>>>>> and this:
>>>>> $pvdisks =
>>>>> hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks'])
>>>>>
>>>>> gives me:
>>>>> err: Could not retrieve catalog from remote server: Error 400 on
>>>>> SERVER: ec2_config is not an hash or array when accessing it with
>>>>> instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27
>>>>> on node gfs01.us1.xxx.com
>>>>>
>>>>> Ugh.
>>>>>
>>>>> Doug.
>>>>
>>>> Actually, apparently, no, that's not what these functions are for. :(
>>>>
>>>> Doug.
>>>
>>> :(
>>
>> Apparently this is difficult and/or not supported...
>
> Is this what you're trying to do?
>
> $ec2_config = hiera('ec2_config')
> $pvdisks = $ec2_config['instance'][$::ec2_instance_type]['pvdisks']
>
>
> http://docs.puppetlabs.com/puppet/2.7/reference/lang_datatypes.html#hashes
No luck.
With:
ec2_config:
instance:
m1.small:
pvdisks:
- /dev/xvdb1
swapvol_size: 2G
logvol_size: 64G
m1.medium:
pvdisks:
- /dev/xvdb1
swapvol_size: 2G
logvol_size: 64G
etc...
and in the manifest:
$foo = hiera_hash('ec2_config')
$pvdisks = $foo['instance'][$::ec2_instance_type]['pvdisks'] #
Line 17 from error below.
notice ("PVDISKS = $pvdisks")
puppet bails with:
err: Could not retrieve catalog from remote server: Error 400 on
SERVER: $foo["instance"] is not an hash or array when accessing it
with m1.large at
/truth/sauce/env/prod/modules/role/manifests/base_server.pp:17 on node
gfs01.us1.xxx.co,
Grrrr.
Doug.
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.