Thank you so much! I created a github gist with my solution so the next person can find it.
https://gist.github.com/kkeane/38020a052a73067c3812
Kevin Keane
The NetTech
http://www.4nettech.com
Our values: Privacy, Liberty, Justice
See https://www.4nettech.com/corp/the-nettech-values.html
-----Original message-----
From: Noah Kantrowitz < >
Sent: Monday 25th May 2015 16:27
To:
Subject: [chef] Re: Using time stamps in a template?No, I would have two template resources, one acting as an idempotence check for the sans-serial data and the other is the full content with serial. A better approach is to try to keep the serial in its own file and use an include. A rough example of the first (not actually going to test this):
template '/etc/bind/myzone.partial' do
source 'whatever.erb'
variables serial: 0
notifies :run, 'ruby_block[dns trick]', :immediately
end
ruby_block 'dns trick' do
block do
path = '/etc/bind/myzone.serial'
IO.write(path, IO.read(path).to_i + 1)
end
end
template '/etc/bind/myzone' do
source 'whatever.erb'
variables lazy { {serial: IO.read('/etc/bind/myzone.serial') } }
end
This shows two templates, when the serial=0 one updates it bumps the serial file, which the second will use to generate the real zone config. The second approach might be possible with $INCLUDE in BIND but I'm not familiar enough with its usage to show an example.
--Noah
On May 25, 2015, at 4:10 PM, Kevin Keane Subscription < > wrote:
> Interesting thought. Basically, you are suggesting that the template generate an intermediate file, and then in a separate step, I'd use something like sed or awk to insert the actual time stamp.
>
> Thank you! I knew somebody had a solution for my problem!
>
> Kevin Keane
>
> The NetTech
>
> http://www.4nettech.com
>
> Our values: Privacy, Liberty, Justice
>
> See https://www.4nettech.com/corp/the-nettech-values.html
>
>
>
> -----Original message-----
> From: Noah Kantrowitz < >
> Sent: Monday 25th May 2015 12:20
> To:
> Subject: [chef] Re: Using time stamps in a template?
>
> You would have to implement the idempotence check yourself separate from the file contents. You could do something like make a template with the serial always set to 0, and use a notification that when that template changes trigger a ruby_block to bump the serial number on disk and write out the real template.
>
> --Noah
>
> On May 25, 2015, at 8:26 AM, Kevin Keane Subscription < > wrote:
>
> > I am looking for a way to put a time stamp into a template, *without* causing the file to be regenerated on each chef run. I want the time stamp to be updated only if something else has changed in the template, as well.
> >
> > The use case is for generating a DNS zone file and updating the serial number only when there was a change.
> >
> > Is there a common solution for this problem in Chef?
> >
> >
> >
> > Kevin Keane
> >
> > The NetTech
> >
> > 760-721-8339
> >
> > http://www.4nettech.com
> >
> > Our values: Privacy, Liberty, Justice
> >
> > See https://www.4nettech.com/corp/the-nettech-values.html
> >
> >
> >
>
Archive powered by MHonArc 2.6.16.