Defined Type: apt::source

Defined in:
manifests/source.pp

Overview

Parameters:

  • comment (Any) (defaults to: $name)
  • ensure (Any) (defaults to: present)
  • location (Any) (defaults to: '')
  • release (Any) (defaults to: 'UNDEF')
  • repos (Any) (defaults to: 'main')
  • include_src (Any) (defaults to: true)
  • include_deb (Any) (defaults to: true)
  • required_packages (Any) (defaults to: false)
  • key (Any) (defaults to: undef)
  • key_server (Any) (defaults to: 'keyserver.ubuntu.com')
  • key_content (Any) (defaults to: undef)
  • key_source (Any) (defaults to: undef)
  • pin (Any) (defaults to: false)
  • architecture (Any) (defaults to: undef)
  • trusted_source (Any) (defaults to: false)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'manifests/source.pp', line 4

define apt::source(
  $comment           = $name,
  $ensure            = present,
  $location          = '',
  $release           = 'UNDEF',
  $repos             = 'main',
  $include_src       = true,
  $include_deb       = true,
  $required_packages = false,
  $key               = undef,
  $key_server        = 'keyserver.ubuntu.com',
  $key_content       = undef,
  $key_source        = undef,
  $pin               = false,
  $architecture      = undef,
  $trusted_source    = false,
) {

  include apt::params
  include apt::update

  validate_string($architecture)
  validate_bool($trusted_source)

  $sources_list_d = $apt::params::sources_list_d
  $provider       = $apt::params::provider

  if $release == 'UNDEF' {
    if $::lsbdistcodename == undef {
      fail('lsbdistcodename fact not available: release parameter required')
    } else {
      $release_real = $::lsbdistcodename
    }
  } else {
    $release_real = $release
  }

  file { "${name}.list":
    ensure  => $ensure,
    path    => "${sources_list_d}/${name}.list",
    owner   => root,
    group   => root,
    mode    => '0644',
    content => template('apt/_header.erb', 'apt/source.list.erb'),
    notify  => Exec['apt_update'],
  }


  if ($pin != false) {
    # Get the host portion out of the url so we can pin to origin
    $url_split = split($location, '/')
    $host      = $url_split[2]

    apt::pin { $name:
      ensure   => $ensure,
      priority => $pin,
      before   => File["${name}.list"],
      origin   => $host,
    }
  }

  if ($required_packages != false) and ($ensure == 'present') {
    exec { "Required packages: '${required_packages}' for ${name}":
      command     => "${provider} -y install ${required_packages}",
      logoutput   => 'on_failure',
      refreshonly => true,
      tries       => 3,
      try_sleep   => 1,
      subscribe   => File["${name}.list"],
      before      => Exec['apt_update'],
    }
  }

  # We do not want to remove keys when the source is absent.
  if $key and ($ensure == 'present') {
    apt::key { "Add key: ${key} from Apt::Source ${title}":
      ensure      => present,
      key         => $key,
      key_server  => $key_server,
      key_content => $key_content,
      key_source  => $key_source,
      before      => File["${name}.list"],
    }
  }

  # Need anchor to provide containment for dependencies.
  anchor { "apt::source::${name}":
    require => Class['apt::update'],
  }
}