Manage config files with Puppet and version control software

697 views
Skip to first unread message

dusan.d...@clavistechnology.com

unread,
May 24, 2013, 4:12:22 AM5/24/13
to puppet...@googlegroups.com
Hi,

I want to manage some configuration files (let's say my.cnf) using Puppet. I want to keep that file in some version control repository and developers will have access to it. Once they change it, Puppet should pull it, put it in place on server and restart service.

Is there any general guide what is the best practice how to achieve this ?

Thanks...

Brian Lalor

unread,
May 24, 2013, 6:10:58 AM5/24/13
to puppet...@googlegroups.com
On May 24, 2013, at 4:12 AM, dusan.d...@clavistechnology.com wrote:

I want to manage some configuration files (let's say my.cnf) using Puppet. I want to keep that file in some version control repository and developers will have access to it. Once they change it, Puppet should pull it, put it in place on server and restart service. 

Is there any general guide what is the best practice how to achieve this ?

I'm not sure that's really a best practice, but it does come in handy from time to time.  There's a module for that: vcsrepo.

--
Brian Lalor
bla...@bravo5.org


Dusan Dordevic

unread,
May 24, 2013, 6:14:14 AM5/24/13
to puppet...@googlegroups.com
Hi,

Yes, I know about vcsrepo module and that part is not a problem. It is fairly easy to set it up and pull release from repository.

My problem is following, if I want to manage /etc/mysql/my.cnf and other config files, that means I would need to make repository in / which I am not really happy with. Mercurial that we are using do not support relocating files, so I cannot check out my.cnf from somewhere else and place it to /etc/mysql/. Only thing that comes to mi mind is to check out repo somewhere else and then create a copy of file.

Is there any better method ?

Best regards,
Dušan


--
You received this message because you are subscribed to a topic in the Google Groups "Puppet Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/puppet-users/e3YJSINkNPc/unsubscribe?hl=en.
To unsubscribe from this group and all its topics, send an email to puppet-users...@googlegroups.com.
To post to this group, send email to puppet...@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Brian Lalor

unread,
May 24, 2013, 6:20:30 AM5/24/13
to puppet...@googlegroups.com
On May 24, 2013, at 6:14 AM, Dusan Dordevic <dusan.d...@clavistechnology.com> wrote:

My problem is following, if I want to manage /etc/mysql/my.cnf and other config files, that means I would need to make repository in / which I am not really happy with. Mercurial that we are using do not support relocating files, so I cannot check out my.cnf from somewhere else and place it to /etc/mysql/. Only thing that comes to mi mind is to check out repo somewhere else and then create a copy of file.

This is the approach that I'm taking.  It works very well; have vcsrepo manage the repository, then use a file resource to ensure that a target file is kept in sync with the one checked out from the remote repo.  Make the file resource require the vcsrepo resource.  Then you can notify MySQL to restart when its config file changes.

--
Brian Lalor
bla...@bravo5.org


Dusan Dordevic

unread,
May 24, 2013, 6:30:11 AM5/24/13
to puppet...@googlegroups.com
Thanks for feedback once more. I will try it as well then...

Best regards,
Dušan


Kodiak Firesmith

unread,
May 24, 2013, 7:54:37 AM5/24/13
to puppet...@googlegroups.com
Hello,
We are doing something similar to manage our entire Puppet hierarchy with Subversion.  Essentially we make changes 'go live' in Puppet by using post-hooks that copy the modified files into the normal puppet areas upon committing. 

We use svnserve with GSSAPI auth and sub-repository level ACLs to delegate access to host & service owners or groups. 

We cobbled this together during the Puppet 2.6 era and have used it since - I'm not sure if new functionality has been integrated with Puppet or Puppet Enterprise to do version control since then.

Now that we have everything set up just right we love it for the most part.
Reply all
Reply to author
Forward
0 new messages