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':
--- /dev/null
+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'
+ }
+
+}
--- /dev/null
+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
+ }
+}