init.pp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # Class: apt
  2. #
  3. # This module manages the initial configuration of apt.
  4. #
  5. # Parameters:
  6. # The parameters listed here are not required in general and were
  7. # added for use cases related to development environments.
  8. # disable_keys - disables the requirement for all packages to be signed
  9. # always_apt_update - rather apt should be updated on every run (intended
  10. # for development environments where package updates are frequent)
  11. # purge_sources_list - Accepts true or false. Defaults to false If set to
  12. # true, Puppet will purge all unmanaged entries from sources.list
  13. # purge_sources_list_d - Accepts true or false. Defaults to false. If set
  14. # to true, Puppet will purge all unmanaged entries from sources.list.d
  15. #
  16. # Actions:
  17. #
  18. # Requires:
  19. # puppetlabs/stdlib
  20. # Sample Usage:
  21. # class { 'apt': }
  22. class apt(
  23. $always_apt_update = false,
  24. $disable_keys = undef,
  25. $proxy_host = false,
  26. $proxy_port = '8080',
  27. $purge_sources_list = false,
  28. $purge_sources_list_d = false,
  29. $purge_preferences_d = false
  30. ) {
  31. include apt::params
  32. include apt::update
  33. validate_bool($purge_sources_list, $purge_sources_list_d, $purge_preferences_d)
  34. $sources_list_content = $purge_sources_list ? {
  35. false => undef,
  36. true => "# Repos managed by puppet.\n",
  37. }
  38. if $always_apt_update == true {
  39. Exec <| title=='apt_update' |> {
  40. refreshonly => false,
  41. }
  42. }
  43. $root = $apt::params::root
  44. $apt_conf_d = $apt::params::apt_conf_d
  45. $sources_list_d = $apt::params::sources_list_d
  46. $preferences_d = $apt::params::preferences_d
  47. $provider = $apt::params::provider
  48. file { 'sources.list':
  49. ensure => present,
  50. path => "${root}/sources.list",
  51. owner => root,
  52. group => root,
  53. mode => '0644',
  54. content => $sources_list_content,
  55. notify => Exec['apt_update'],
  56. }
  57. file { 'sources.list.d':
  58. ensure => directory,
  59. path => $sources_list_d,
  60. owner => root,
  61. group => root,
  62. purge => $purge_sources_list_d,
  63. recurse => $purge_sources_list_d,
  64. notify => Exec['apt_update'],
  65. }
  66. file { 'preferences.d':
  67. ensure => directory,
  68. path => $preferences_d,
  69. owner => root,
  70. group => root,
  71. purge => $purge_preferences_d,
  72. recurse => $purge_preferences_d,
  73. }
  74. case $disable_keys {
  75. true: {
  76. file { '99unauth':
  77. ensure => present,
  78. content => "APT::Get::AllowUnauthenticated 1;\n",
  79. path => "${apt_conf_d}/99unauth",
  80. }
  81. }
  82. false: {
  83. file { '99unauth':
  84. ensure => absent,
  85. path => "${apt_conf_d}/99unauth",
  86. }
  87. }
  88. undef: { } # do nothing
  89. default: { fail('Valid values for disable_keys are true or false') }
  90. }
  91. $proxy_set = $proxy_host ? {
  92. false => absent,
  93. default => present
  94. }
  95. file { 'configure-apt-proxy':
  96. path => "${apt_conf_d}/proxy",
  97. content => "Acquire::http::Proxy \"http://${proxy_host}:${proxy_port}\";",
  98. notify => Exec['apt_update'],
  99. ensure => $proxy_set,
  100. }
  101. # Need anchor to provide containment for dependencies.
  102. anchor { 'apt::update':
  103. require => Class['apt::update'],
  104. }
  105. }