[chef] Re: Using time stamps in a template?


Chronological Thread 
  • 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.

§