init.pp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #
  2. class apt(
  3. $always_apt_update = false,
  4. $apt_update_frequency = 'reluctantly',
  5. $purge_sources_list = false,
  6. $purge_sources_list_d = false,
  7. $purge_preferences = false,
  8. $purge_preferences_d = false,
  9. $update_timeout = undef,
  10. $update_tries = undef,
  11. $sources = undef,
  12. ) inherits ::apt::params {
  13. include apt::update
  14. $frequency_options = ['always','daily','weekly','reluctantly']
  15. validate_re($apt_update_frequency, $frequency_options)
  16. validate_bool($purge_sources_list, $purge_sources_list_d,
  17. $purge_preferences, $purge_preferences_d)
  18. $sources_list_content = $purge_sources_list ? {
  19. false => undef,
  20. true => "# Repos managed by puppet.\n",
  21. }
  22. if $always_apt_update == true {
  23. Exec <| title=='apt_update' |> {
  24. refreshonly => false,
  25. }
  26. }
  27. file { '/etc/apt/apt.conf.d/15update-stamp':
  28. ensure => 'file',
  29. content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
  30. group => 'root',
  31. mode => '0644',
  32. owner => 'root',
  33. }
  34. $root = $apt::params::root
  35. $apt_conf_d = $apt::params::apt_conf_d
  36. $sources_list_d = $apt::params::sources_list_d
  37. $preferences_d = $apt::params::preferences_d
  38. $provider = $apt::params::provider
  39. file { 'sources.list':
  40. ensure => present,
  41. path => "${root}/sources.list",
  42. owner => root,
  43. group => root,
  44. mode => '0644',
  45. content => $sources_list_content,
  46. notify => Exec['apt_update'],
  47. }
  48. file { 'sources.list.d':
  49. ensure => directory,
  50. path => $sources_list_d,
  51. owner => root,
  52. group => root,
  53. purge => $purge_sources_list_d,
  54. recurse => $purge_sources_list_d,
  55. notify => Exec['apt_update'],
  56. }
  57. if $purge_preferences {
  58. file { 'apt-preferences':
  59. ensure => absent,
  60. path => "${root}/preferences",
  61. }
  62. }
  63. file { 'preferences.d':
  64. ensure => directory,
  65. path => $preferences_d,
  66. owner => root,
  67. group => root,
  68. purge => $purge_preferences_d,
  69. recurse => $purge_preferences_d,
  70. }
  71. # Need anchor to provide containment for dependencies.
  72. anchor { 'apt::update':
  73. require => Class['apt::update'],
  74. }
  75. # manage sources if present
  76. if $sources != undef {
  77. validate_hash($sources)
  78. create_resources('apt::source', $sources)
  79. }
  80. }