- From: Noah Kantrowitz <
>
- To:
- Subject: [chef] Re: Using time stamps in a template?
- Date: Mon, 25 May 2015 16:26:19 -0700
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
>
>
>
>
>
>
>
Attachment:
signature.asc
Description: Message signed with OpenPGP using GPGMail
Archive powered by MHonArc 2.6.16.