aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--modules/base_configuration/manifests/init.pp9
-rw-r--r--modules/pacman/manifests/config.pp77
-rw-r--r--modules/pacman/manifests/init.pp55
-rw-r--r--modules/pacman/manifests/install.pp13
-rw-r--r--modules/pacman/manifests/params.pp41
-rw-r--r--modules/pacman/manifests/repo.pp21
-rw-r--r--modules/pacman/templates/pacman.conf.customrepo.erb6
-rw-r--r--modules/pacman/templates/pacman.conf.main.erb103
-rw-r--r--modules/pacman/templates/pacman.conf.repo.erb15
10 files changed, 343 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
index b4b4ba5..3a8bbe0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -19,3 +19,6 @@
19[submodule "modules/puppetlabs_concat"] 19[submodule "modules/puppetlabs_concat"]
20 path = modules/concat 20 path = modules/concat
21 url = https://github.com/puppetlabs/puppetlabs-concat.git 21 url = https://github.com/puppetlabs/puppetlabs-concat.git
22[submodule "modules/pacman"]
23 path = modules/pacman
24 url = https://github.com/aboe76/puppet-pacman.git
diff --git a/modules/base_configuration/manifests/init.pp b/modules/base_configuration/manifests/init.pp
index 4c6ca1e..dca17b3 100644
--- a/modules/base_configuration/manifests/init.pp
+++ b/modules/base_configuration/manifests/init.pp
@@ -49,4 +49,13 @@ class base_configuration (
49 'Subsystem' => 'sftp /usr/lib/openssh/sftp-server', 49 'Subsystem' => 'sftp /usr/lib/openssh/sftp-server',
50 } 50 }
51 } 51 }
52
53 class { 'pacman':
54 color => true,
55 }
56
57 pacman::repo { 'multilib':
58 order => 15,
59 include => '/etc/pacman.d/mirrorlist'
60 }
52} 61}
diff --git a/modules/pacman/manifests/config.pp b/modules/pacman/manifests/config.pp
new file mode 100644
index 0000000..9bd22be
--- /dev/null
+++ b/modules/pacman/manifests/config.pp
@@ -0,0 +1,77 @@
1# Class: pacman::config
2#
3# This module manages pacman config file
4#
5# Parameters:
6# $config = '/etc/pacman.conf'
7#
8# Actions:
9# with the use of concat it will build a pacman config file
10# which is extendable with the class pacman::repo
11#
12# Requires: see Modulefile
13#
14# Sample Usage:
15#
16class pacman::config (
17 $config = $pacman::config,
18 # pacman config options
19 $rootdir = $pacman::rootdir,
20 $dbpath = $pacman::dbpath,
21 $cachedir = $pacman::cachedir,
22 $logfile = $pacman::logfile,
23 $gpgdir = $pacman::gpgdir,
24 $holdpkg = $pacman::holdpkg,
25 $xfercommand = $pacman::xfercommand,
26 $cleanmethod = $pacman::cleanmethod,
27 $usedelta = $pacman::usedelta,
28 $architecture = $pacman::architecture,
29 # pacman package options
30 $ignorepkg = $pacman::ignorepkg,
31 $noupgrade = $pacman::noupgrade,
32 $noextract = $pacman::noextract,
33 # pacman misc options
34 $usesyslog = $pacman::usesyslog,
35 $color = $pacman::color,
36 $totaldownload = $pacman::totaldownload,
37 $checkspace = $pacman::checkspace,
38 $verbosepkglist = $pacman::verbosepkglist,
39 # pacman sec options
40 $mainsiglevel = $pacman::mainsiglevel,
41 $localfilesiglevel = $pacman::localfilesiglevel,
42 $remotefilesiglevel = $pacman::remotefilesiglevel,) inherits pacman {
43 concat { $config:
44 ensure_newline => true,
45 owner => 0,
46 group => 0,
47 mode => '0644',
48 }
49
50 concat::fragment { 'main':
51 target => $config,
52 content => template('pacman/pacman.conf.main.erb'),
53 order => 00
54 }
55
56 pacman::repo { 'core':
57 include => '/etc/pacman.d/mirrorlist',
58 order => 10,
59 }
60
61 pacman::repo { 'extra':
62 include => '/etc/pacman.d/mirrorlist',
63 order => 11,
64 }
65
66 pacman::repo { 'community':
67 include => '/etc/pacman.d/mirrorlist',
68 order => 12,
69 }
70
71 concat::fragment { 'custom':
72 target => $config,
73 content => template('pacman/pacman.conf.customrepo.erb'),
74 order => 15
75 }
76
77}
diff --git a/modules/pacman/manifests/init.pp b/modules/pacman/manifests/init.pp
new file mode 100644
index 0000000..731f371
--- /dev/null
+++ b/modules/pacman/manifests/init.pp
@@ -0,0 +1,55 @@
1# Class: pacman
2#
3# This module manages pacman
4#
5# Parameters:
6# $config = '/etc/pacman.conf'
7# $config_template = 'pacman/pacman.conf.archlinux.erb'
8# $package_name = ['pacman']
9#
10# Actions:
11#
12# Requires: see Modulefile
13#
14# Sample Usage:
15#
16class pacman (
17 $config = $pacman::params::config,
18 $package_ensure = $pacman::params::package_ensure,
19 $package_name = $pacman::params::package_name,
20 # pacman config options
21 $rootdir = $pacman::params::rootdir,
22 $dbpath = $pacman::params::dbpath,
23 $cachedir = $pacman::params::cachedir,
24 $logfile = $pacman::params::logfile,
25 $gpgdir = $pacman::params::gpgdir,
26 $holdpkg = $pacman::params::holdpkg,
27 $xfercommand = $pacman::params::xfercommand,
28 $cleanmethod = $pacman::params::cleanmethod,
29 $usedelta = $pacman::params::usedelta,
30 $architecture = $pacman::params::architecture,
31 # pacman package options
32 $ignorepkg = $pacman::params::ignorepkg,
33 $noupgrade = $pacman::params::noupgrade,
34 $noextract = $pacman::params::noextract,
35 # pacman misc options
36 $usesyslog = $pacman::params::usesyslog,
37 $color = $pacman::params::color,
38 $totaldownload = $pacman::params::totaldownload,
39 $checkspace = $pacman::params::checkspace,
40 $verbosepkglist = $pacman::params::verbosepkglist,
41 # pacman sec options
42 $mainsiglevel = $pacman::params::mainsiglevel,
43 $localfilesiglevel = $pacman::params::localfilesiglevel,
44 $remotefilesiglevel = $pacman::params::remotefilesiglevel,) inherits
45pacman::params {
46 include '::pacman::install'
47 include '::pacman::config'
48
49 anchor { 'pacman::begin': }
50
51 anchor { 'pacman::end': }
52
53 Anchor['pacman::begin'] -> Class['::pacman::install'] -> Class['::pacman::config'
54 ] -> Anchor['pacman::end']
55}
diff --git a/modules/pacman/manifests/install.pp b/modules/pacman/manifests/install.pp
new file mode 100644
index 0000000..02b3128
--- /dev/null
+++ b/modules/pacman/manifests/install.pp
@@ -0,0 +1,13 @@
1# Class: pacman::install
2#
3# This class ensures pacman is installed
4#
5class pacman::install (
6 $package_ensure = $pacman::package_ensure,
7 $package_name = $pacman::package_name,) inherits pacman {
8 package { 'pacman':
9 ensure => $package_ensure,
10 name => $package_name,
11 }
12
13}
diff --git a/modules/pacman/manifests/params.pp b/modules/pacman/manifests/params.pp
new file mode 100644
index 0000000..b8b9e1c
--- /dev/null
+++ b/modules/pacman/manifests/params.pp
@@ -0,0 +1,41 @@
1# Class: pacman::params
2#
3class pacman::params {
4 case $::osfamily {
5 'Archlinux' : {
6 $package_ensure = 'present'
7 $package_name = 'pacman'
8 $config = '/etc/pacman.conf'
9 # pacman config options
10 $rootdir = '/'
11 $dbpath = '/var/lib/pacman'
12 $cachedir = '/var/cache/pacman/pkg'
13 $logfile = '/var/log/pacman.log'
14 $gpgdir = '/etc/pacman.d/gnupg/'
15 $holdpkg = 'pacman glibc'
16 $xfercommand = '/usr/bin/curl -C - -f %u > %o'
17 $cleanmethod = 'KeepInstalled'
18 $usedelta = '0.7'
19 $architecture = 'auto'
20 # pacman package options
21 $ignorepkg = undef
22 $noupgrade = undef
23 $noextract = undef
24 # pacman misc options
25 $usesyslog = false
26 $color = false
27 $totaldownload = false
28 $checkspace = true
29 $verbosepkglist = false
30 # pacman sec options
31 $mainsiglevel = 'Required DatabaseOptional'
32 $localfilesiglevel = 'Optional'
33 $remotefilesiglevel = 'Required'
34 }
35
36 default : {
37 fail("The ${module_name} module is not supported
38 on an ${::osfamily} based system.")
39 }
40 }
41}
diff --git a/modules/pacman/manifests/repo.pp b/modules/pacman/manifests/repo.pp
new file mode 100644
index 0000000..02dc4ec
--- /dev/null
+++ b/modules/pacman/manifests/repo.pp
@@ -0,0 +1,21 @@
1# This resource manages an individual repo's that applies to the file defined in
2# $target. See README.md for more details.
3# always order from 100 and increase.
4define pacman::repo (
5 $server = undef,
6 $include = undef,
7 $description = undef,
8 $siglevel = undef,
9 $order = '100',
10 # Needed for testing primarily, support for multiple files is not really
11 # working.
12 $target = $pacman::config::config) {
13 # Create a rule fragment
14 $fragname = "repo_${name}"
15
16 concat::fragment { $fragname:
17 target => $target,
18 content => template('pacman/pacman.conf.repo.erb'),
19 order => $order,
20 }
21}
diff --git a/modules/pacman/templates/pacman.conf.customrepo.erb b/modules/pacman/templates/pacman.conf.customrepo.erb
new file mode 100644
index 0000000..91e66fe
--- /dev/null
+++ b/modules/pacman/templates/pacman.conf.customrepo.erb
@@ -0,0 +1,6 @@
1
2# An example of a custom package repository. See the pacman manpage for
3# tips on creating your own repositories.
4#[custom]
5#SigLevel = Optional TrustAll
6#Server = file:///home/custompkgs
diff --git a/modules/pacman/templates/pacman.conf.main.erb b/modules/pacman/templates/pacman.conf.main.erb
new file mode 100644
index 0000000..2c2df5b
--- /dev/null
+++ b/modules/pacman/templates/pacman.conf.main.erb
@@ -0,0 +1,103 @@
1#
2# /etc/pacman.conf
3#
4# See the pacman.conf(5) manpage for option and repository directives
5
6#
7# GENERAL OPTIONS
8#
9[options]
10# The following paths are commented out with their default values listed.
11# If you wish to use different paths, uncomment and update the paths.
12#RootDir = /
13RootDir = <%= @rootdir %>
14
15#DBPath = /var/lib/pacman/
16DBPath = <%= @dbpath %>
17
18#CacheDir = /var/cache/pacman/pkg/
19CacheDir = <%= @cachedir %>
20
21#LogFile = /var/log/pacman.log
22LogFile = <%= @logfile %>
23
24#GPGDir = /etc/pacman.d/gnupg/
25GPGDir = <%= @gpgdir %>
26
27#HoldPkg = pacman glibc
28HoldPkg = <%= @holdpkg %>
29
30#XferCommand = /usr/bin/curl -C - -f %u > %o
31#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
32XferCommand = <%= @xfercommand %>
33
34#CleanMethod = KeepInstalled
35CleanMethod = <%= @cleanmethod %>
36
37#UseDelta = 0.7
38UseDelta = <%= @usedelta %>
39
40#Architecture = auto
41Architecture = <%= @architecture %>
42
43# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
44IgnorePkg = <%= @ignorepkg %>
45IgnoreGroup = <%= @ignoregroup %>
46
47NoUpgrade = <%= @noupgrade %>
48NoExtract = <%= @noextract %>
49
50# Misc options
51#UseSyslog
52<% if @usesyslog -%>
53UseSyslog
54<% end -%>
55#color
56<% if @color -%>
57Color
58<% end -%>
59#TotalDownload
60<% if @totaldownload -%>
61TotalDownload
62<% end -%>
63#CheckSpace
64<% if @checkspace -%>
65CheckSpace
66<% end -%>
67#VerbosePkgLists
68<% if @verbosepkglist -%>
69VerbosePkgLists
70<% end -%>
71
72# By default, pacman accepts packages signed by keys that its local keyring
73# trusts (see pacman-key and its man page), as well as unsigned packages.
74SigLevel = <%= @mainsiglevel %>
75LocalFileSigLevel = <%= @localfilesiglevel %>
76RemoteFileSigLevel = <%= @remotefilesiglevel %>
77
78# NOTE: You must run `pacman-key --init` before first using pacman; the local
79# keyring can then be populated with the keys of all official Arch Linux
80# packagers with `pacman-key --populate archlinux`.
81
82#
83# REPOSITORIES
84# - can be defined here or included from another file
85# - pacman will search repositories in the order defined here
86# - local/custom mirrors can be added here or in separate files
87# - repositories listed first will take precedence when packages
88# have identical names, regardless of version number
89# - URLs will have $repo replaced by the name of the current repo
90# - URLs will have $arch replaced by the name of the architecture
91#
92# Repository entries are of the format:
93# [repo-name]
94# Server = ServerName
95# Include = IncludePath
96#
97# The header [repo-name] is crucial - it must be present and
98# uncommented to enable the repo.
99#
100
101# The testing repositories are disabled by default. To enable, uncomment the
102# repo name header and Include lines. You can add preferred servers immediately
103# after the header, and they will be used before the default mirrors.
diff --git a/modules/pacman/templates/pacman.conf.repo.erb b/modules/pacman/templates/pacman.conf.repo.erb
new file mode 100644
index 0000000..8038c47
--- /dev/null
+++ b/modules/pacman/templates/pacman.conf.repo.erb
@@ -0,0 +1,15 @@
1
2[<%= @name %>]
3<% if @description -%>
4# Description: <%= @description %>
5<% end -%>
6# Order: <%= @order %>
7<%if @siglevel -%>
8SigLevel = <%= @siglevel %>
9<% end -%>
10<%if @server -%>
11Server = <%= @server %>
12<% end -%>
13<%if @include -%>
14Include = <%= @include%>
15<% end -%>