From: Ismaƫl Bouya Date: Wed, 10 Aug 2016 23:13:22 +0000 (+0200) Subject: Add etckeeper X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FPuppet.git;a=commitdiff_plain;h=cbb2c25bf2f71c7840bd599739e8d2569b159c8a Add etckeeper --- diff --git a/manifests/install_ovh.pp b/manifests/install_ovh.pp index d1e109f..581e289 100644 --- a/manifests/install_ovh.pp +++ b/manifests/install_ovh.pp @@ -1,13 +1,50 @@ node default { include stdlib - class { 'ovh_cleanup': } - class { 'base_packages': } - class { 'locales': } - class { 'cron_puppet': } + stage { 'base_configuration': + before => Stage['main'] + } + stage { 'base_installation': + before => Stage['base_configuration'] + } + stage { 'preparation': + before => Stage['base_installation'] + } + + class { 'etckeeper': + stage => 'preparation' + } + class { 'ovh_cleanup': + stage => 'preparation' + } + etckeeper::run { 'post_preparation_stage': + reason => "Post puppet preparation stage", + stages => [Stage['preparation']] + } + + class { 'base_packages': + stage => "base_installation" + } + etckeeper::run { 'post_base_installation_stage': + reason => "Post puppet base installation stage", + stages => [Stage['base_installation']] + } + + class { 'locales': + stage => "base_configuration" + } + class { 'cron_puppet': + stage => "base_configuration" + } class { 'base_configuration': + stage => "base_configuration", hostname => 'new.immae.eu' } + etckeeper::run { 'post_base_configuration_stage': + reason => "Post puppet base configuration stage", + stages => [Stage['base_configuration']] + } + class { 'aur': } reboot { 'after_run': diff --git a/modules/etckeeper/files/additional_gitignore b/modules/etckeeper/files/additional_gitignore new file mode 100644 index 0000000..5c6a485 --- /dev/null +++ b/modules/etckeeper/files/additional_gitignore @@ -0,0 +1,11 @@ +/ca-certificates/extracted/* +/puppetlabs/* +/pacman.d/gnupg/* +!/pacman.d/gnupg/gpg.conf +/ssl/certs/* +/postfix/aliases.db +/udev/hwdb.bin +passwd- +group- +shadow- +gshadow- diff --git a/modules/etckeeper/manifests/init.pp b/modules/etckeeper/manifests/init.pp new file mode 100644 index 0000000..d7039a2 --- /dev/null +++ b/modules/etckeeper/manifests/init.pp @@ -0,0 +1,31 @@ +class etckeeper { + ensure_packages('etckeeper') + + exec { 'etckeeper-gitignore': + environment => ['VCS=git', 'LOWLEVEL_PACKAGE_MANAGER=pacman'], + path => '/usr/bin', + command => 'mkdir -p /tmp/etckeeper/.git && cd /tmp/etckeeper && /etc/etckeeper/update-ignore.d/01update-ignore && cp /tmp/etckeeper/.gitignore /etc/.gitignore_etckeeper && rm -r /tmp/etckeeper/', + cwd => '/tmp', + creates => '/etc/.gitignore_etckeeper' + } + + file { 'etckeeper-additional_gitignore': + source => 'puppet:///modules/etckeeper/additional_gitignore', + path => '/etc/.gitignore_additional' + } + + exec { 'etckeeper-concat_files': + path => '/usr/bin', + command => 'cat /etc/.gitignore_etckeeper /etc/.gitignore_additional > /etc/.gitignore', + refreshonly => true, + subscribe => [Exec['etckeeper-gitignore'], File['etckeeper-additional_gitignore']] + } + + exec { 'etckeeper-init': + command => 'etckeeper init', + path => '/usr/bin', + cwd => '/etc', + creates => '/etc/.git' + } + +} diff --git a/modules/etckeeper/manifests/run.pp b/modules/etckeeper/manifests/run.pp new file mode 100644 index 0000000..ddbb4e1 --- /dev/null +++ b/modules/etckeeper/manifests/run.pp @@ -0,0 +1,7 @@ +define etckeeper::run ($stages = [Stage['main']], $refreshonly = true, $reason = 'puppet run') { + exec { "etckeeper::run::${name}": + refreshonly => $refreshonly, + command => "/usr/bin/etckeeper commit '${reason}' || true", + subscribe => $stages + } +}