Commit af35b8956f01e6411cb5a8604aa0ba2f4836fd30

Authored by Sergio Oliveira
1 parent 133f0c6d

Adding vagrant and initial provisioning to colab

.gitignore
... ... @@ -6,3 +6,4 @@ local_settings.py
6 6 *.swp
7 7 *.sqlite3
8 8 .DS_Store
  9 +.vagrant
... ...
Vagrantfile 0 → 100644
... ... @@ -0,0 +1,84 @@
  1 +# -*- mode: ruby -*-
  2 +# vi: set ft=ruby :
  3 +
  4 +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
  5 +VAGRANTFILE_API_VERSION = "2"
  6 +
  7 +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  8 + # All Vagrant configuration is done here. The most common configuration
  9 + # options are documented and commented below. For a complete reference,
  10 + # please see the online documentation at vagrantup.com.
  11 +
  12 + # Every Vagrant virtual environment requires a box to build off of.
  13 + config.vm.box = "precise64"
  14 +
  15 + # The url from where the 'config.vm.box' box will be fetched if it
  16 + # doesn't already exist on the user's system.
  17 + config.vm.box_url = "http://files.vagrantup.com/precise64.box"
  18 +
  19 + # Create a forwarded port mapping which allows access to a specific port
  20 + # within the machine from a port on the host machine. In the example below,
  21 + # accessing "localhost:8080" will access port 80 on the guest machine.
  22 + config.vm.network :forwarded_port, guest: 80, host: 8080
  23 + config.vm.network :forwarded_port, guest: 8000, host: 8000
  24 +
  25 + # Create a private network, which allows host-only access to the machine
  26 + # using a specific IP.
  27 + # config.vm.network :private_network, ip: "192.168.33.10"
  28 +
  29 + # Create a public network, which generally matched to bridged network.
  30 + # Bridged networks make the machine appear as another physical device on
  31 + # your network.
  32 + # config.vm.network :public_network
  33 +
  34 + # If true, then any SSH connections made will enable agent forwarding.
  35 + # Default value: false
  36 + # config.ssh.forward_agent = true
  37 +
  38 + # Share an additional folder to the guest VM. The first argument is
  39 + # the path on the host to the actual folder. The second argument is
  40 + # the path on the guest to mount the folder. And the optional third
  41 + # argument is a set of non-required options.
  42 + # config.vm.synced_folder "../data", "/vagrant_data"
  43 +
  44 + # Provider-specific configuration so you can fine-tune various
  45 + # backing providers for Vagrant. These expose provider-specific options.
  46 + # Example for VirtualBox:
  47 + #
  48 + # config.vm.provider :virtualbox do |vb|
  49 + # # Don't boot with headless mode
  50 + # vb.gui = true
  51 + #
  52 + # # Use VBoxManage to customize the VM. For example to change memory:
  53 + # vb.customize ["modifyvm", :id, "--memory", "1024"]
  54 + # end
  55 + #
  56 + # View the documentation for the provider you're using for more
  57 + # information on available options.
  58 +
  59 + config.vm.provision :shell, :path => "puppet/bootstrap.sh"
  60 +
  61 + # Enable provisioning with Puppet stand alone. Puppet manifests
  62 + # are contained in a directory path relative to this Vagrantfile.
  63 + # You will need to create the manifests directory and a manifest in
  64 + # the file base.pp in the manifests_path directory.
  65 + #
  66 + # An example Puppet manifest to provision the message of the day:
  67 + #
  68 + # # group { "puppet":
  69 + # # ensure => "present",
  70 + # # }
  71 + # #
  72 + # # File { owner => 0, group => 0, mode => 0644 }
  73 + # #
  74 + # # file { '/etc/motd':
  75 + # # content => "Welcome to your Vagrant-built virtual machine!
  76 + # # Managed by Puppet.\n"
  77 + # # }
  78 + #
  79 + config.vm.provision :puppet do |puppet|
  80 + puppet.module_path = "puppet/modules"
  81 + puppet.manifests_path = "puppet/manifests"
  82 + puppet.manifest_file = "init.pp"
  83 + end
  84 +end
... ...
puppet/bootstrap.sh 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +#!/bin/bash
  2 +
  3 +PUPPET_VERSION=`dpkg -l | grep puppet-common | awk '{ print $3 }'`
  4 +
  5 +if [ "$PUPPET_VERSION" != '3.2.3-1puppetlabs1' ] ; then
  6 + wget -O /tmp/puppet_apt.deb http://apt.puppetlabs.com/puppetlabs-release-precise.deb &> /dev/null
  7 + dpkg -i /tmp/puppet_apt.deb
  8 + DEBIAN_FRONTEND=noninteractive apt-get update -y
  9 + DEBIAN_FRONTEND=noninteractive apt-get install puppet -y
  10 +fi
  11 +
  12 +cp /vagrant/puppet/hiera.yaml /etc/puppet/hiera.yaml -f
... ...
puppet/hiera.yaml 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +---
  2 +:backends: yaml
  3 +:yaml:
  4 + :datadir: /vagrant/puppet/hieradata
  5 +:hierarchy: common
  6 +:logger: console
... ...
puppet/hieradata/common.yaml 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +---
  2 +locale::locales: pt_BR pt_BR.UTF-8 en_US en_US.UTF-8
  3 +
  4 +timezone::timezone: America/Sao_Paulo
  5 +
  6 +postfix::admin_email: test@test.test
... ...
puppet/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +
  2 +include colab
... ...
puppet/modules/colab/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +
  2 +class colab {
  3 + include ps1
  4 + include vim
  5 + include ntp
  6 + include locale
  7 + include timezone
  8 + include postfix
  9 +}
... ...
puppet/modules/locale/README.md 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +puppet-locale
  2 +=============
0 3 \ No newline at end of file
... ...
puppet/modules/locale/TODO 0 → 100644
... ... @@ -0,0 +1 @@
  1 +Add unless to check if necessary exec install_locales
0 2 \ No newline at end of file
... ...
puppet/modules/locale/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,56 @@
  1 +class locale (
  2 + $locales = 'en_US.UTF-8 pt_BR',
  3 + $lang = 'en_US.UTF-8',
  4 + $language = 'en_US'
  5 +) {
  6 +
  7 + Exec {
  8 + path => ['/usr/bin', '/usr/sbin', '/bin']
  9 + }
  10 +
  11 + file { '/var/cache/locale':
  12 + ensure => directory,
  13 + mode => '0755',
  14 + owner => 'root',
  15 + }
  16 +
  17 + file { '/var/cache/locale/installed':
  18 + ensure => present,
  19 + mode => '0644',
  20 + owner => 'root',
  21 + content => "${locales}-${lang}-${language}",
  22 + require => File['/var/cache/locale'],
  23 + }
  24 +
  25 + exec { 'install_locales':
  26 + command => "locale-gen ${locales}",
  27 + refreshonly => true,
  28 + subscribe => File['/var/cache/locale/installed'],
  29 + notify => Exec['reload_locales']
  30 + }
  31 +
  32 + if $lang {
  33 + exec { 'update_default_lang':
  34 + command => "update-locale LANG='${lang}'",
  35 + notify => Exec['reload_locales'],
  36 + refreshonly => true,
  37 + subscribe => File['/var/cache/locale/installed'],
  38 + }
  39 + }
  40 +
  41 + if $language {
  42 + exec { 'update_default_language':
  43 + command => "update-locale LANGUAGE='${language}'",
  44 + notify => Exec['reload_locales'],
  45 + refreshonly => true,
  46 + subscribe => File['/var/cache/locale/installed'],
  47 + }
  48 + }
  49 +
  50 + exec { 'reload_locales':
  51 + command => "dpkg-reconfigure locales",
  52 + refreshonly => true
  53 + }
  54 +
  55 +}
  56 +
... ...
puppet/modules/locale/test/init.pp 0 → 100644
... ... @@ -0,0 +1 @@
  1 +include locale
0 2 \ No newline at end of file
... ...
puppet/modules/ntp/.gitignore 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +*.gem
  2 +*.rbc
  3 +.bundle
  4 +.config
  5 +coverage
  6 +InstalledFiles
  7 +lib/bundler/man
  8 +pkg
  9 +rdoc
  10 +spec/reports
  11 +test/tmp
  12 +test/version_tmp
  13 +tmp
  14 +
  15 +# YARD artifacts
  16 +.yardoc
  17 +_yardoc
  18 +doc/
... ...
puppet/modules/ntp/README.md 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +Puppet ntp
  2 +==========
  3 +Start a cronjob to run every hour ntpdate
  4 +
  5 +Usage
  6 +==========
  7 +
  8 +```puppet
  9 +include ntp # Use default server (pool.ntp.org) or your hiera config (puppet 3+)
  10 +```
  11 +or
  12 +```puppet
  13 +class { 'ntp':
  14 + server => 'your ntp server'
  15 +}
  16 +```
0 17 \ No newline at end of file
... ...
puppet/modules/ntp/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +
  2 +class ntp (
  3 + $server='pool.ntp.org',
  4 +){
  5 + package { 'ntpdate':
  6 + ensure => installed,
  7 + }
  8 +
  9 + cron { 'ntpdate':
  10 + command => "/usr/sbin/ntpdate $server > /dev/null",
  11 + user => 'root',
  12 + minute => '0',
  13 + require => Package['ntpdate'],
  14 + }
  15 +}
... ...
puppet/modules/ntp/tests/init.pp 0 → 100644
... ... @@ -0,0 +1 @@
  1 +include ntp
... ...
puppet/modules/postfix/README.md 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +puppet-postfix
  2 +==============
0 3 \ No newline at end of file
... ...
puppet/modules/postfix/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,41 @@
  1 +
  2 +class postfix (
  3 + $admin_email,
  4 + $server_name=$fqdn,
  5 + $mailbox_limit=0 # Zero means no limit
  6 +) {
  7 +
  8 + $postfix_preseed = '/var/cache/debconf/postfix.preseed'
  9 + $preseed_cmd = "debconf-set-selections $postfix_preseed"
  10 +
  11 + file { $postfix_preseed:
  12 + ensure => present,
  13 + content => template('postfix/postfix.preseed.erb'),
  14 + }
  15 +
  16 + exec { $preseed_cmd:
  17 + path => '/usr/bin/',
  18 + refreshonly => true,
  19 + subscribe => File[$postfix_preseed],
  20 + }
  21 +
  22 + package { 'postfix':
  23 + ensure => installed,
  24 + require => File[$postfix_preseed],
  25 + responsefile => $postfix_preseed,
  26 + }
  27 +
  28 + package { 'mailutils':
  29 + ensure => installed,
  30 + }
  31 +
  32 + service {'postfix':
  33 + ensure => running,
  34 + enable => true,
  35 + hasstatus => false,
  36 + stop => 'invoke-rc.d postfix stop',
  37 + start => 'invoke-rc.d postfix start',
  38 + restart => 'invoke-rc.d postfix restart',
  39 + require => Package['postfix']
  40 + }
  41 +}
... ...
puppet/modules/postfix/templates/postfix.preseed.erb 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +postfix postfix/root_address string <%= @admin_email %>
  2 +postfix postfix/rfc1035_violation boolean false
  3 +postfix postfix/mydomain_warning boolean
  4 +postfix postfix/mynetworks string
  5 +postfix postfix/mailname string <%= @server_name %>
  6 +postfix postfix/tlsmgr_upgrade_warning boolean
  7 +postfix postfix/recipient_delim string
  8 +postfix postfix/main_mailer_type select Internet Site
  9 +postfix postfix/destinations string localhost, <%= @fqdn %>, <%= @hostname %>
  10 +postfix postfix/retry_upgrade_warning boolean
  11 +postfix postfix/kernel_version_warning boolean
  12 +postfix postfix/sqlite_warning boolean
  13 +postfix postfix/mailbox_limit string <%= @mailbox_limit %>
  14 +postfix postfix/relayhost string
  15 +postfix postfix/procmail boolean false
  16 +postfix postfix/protocols select all
  17 +postfix postfix/chattr boolean false
... ...
puppet/modules/postfix/tests/init.pp 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +
  2 +include postfix
... ...
puppet/modules/ps1/README.md 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +puppet-ps1
  2 +==============
  3 +
  4 +Class to customize PS1
  5 +
  6 +Usage:
  7 + class { 'ps1':
  8 + color => 'yellow'
  9 + }
  10 + or
  11 + include shell to use default color (red)
  12 +
  13 +Allowed Colors:
  14 + 'green'
  15 + 'red'
  16 + 'yellow'
  17 +
  18 +
... ...
puppet/modules/ps1/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +class ps1 (
  2 + $color = 'red'
  3 +) {
  4 + $color_code = $color ? {
  5 + 'red' => '1',
  6 + 'green' => '2',
  7 + 'yellow' => '3',
  8 + default => '1'
  9 + }
  10 +
  11 + $force_color_prompt_cmd = "/bin/sed -i -re '/force_color_prompt=yes/ s/^#//'"
  12 + $force_color_prompt_condition = '/bin/grep "#force_color_prompt"'
  13 +
  14 + $ps1_color_cmd = "/bin/sed -i -re 's/01;3[1-3]m/01;3${color_code}m/'"
  15 + $ps1_color_condition = "/bin/grep '01;3${color_code}m'"
  16 +
  17 + $skel_path = '/etc/skel/.bashrc'
  18 + $root_path = '/root/.bashrc'
  19 +
  20 + # uncomment force_color_prompt in skel
  21 + exec { "$force_color_prompt_cmd $skel_path":
  22 + onlyif => "$force_color_prompt_condition $skel_path"
  23 + }
  24 + # uncomment force_color_prompt in root
  25 + exec { "$force_color_prompt_cmd $root_path":
  26 + onlyif => "$force_color_prompt_condition $root_path"
  27 + }
  28 +
  29 + # change prompt color in skel
  30 + exec { "$ps1_color_cmd $skel_path":
  31 + unless => "$ps1_color_condition $skel_path",
  32 + }
  33 + # change prompt color in root
  34 + exec { "$ps1_color_cmd $root_path":
  35 + unless => "$ps1_color_condition $root_path",
  36 + }
  37 +}
... ...
puppet/modules/ps1/test/init.pp 0 → 100644
... ... @@ -0,0 +1 @@
  1 +include ps1
0 2 \ No newline at end of file
... ...
puppet/modules/timezone/.gitignore 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +pkg/
  2 +*.swp
... ...
puppet/modules/timezone/LICENSE 0 → 100644
... ... @@ -0,0 +1,202 @@
  1 + Apache License
  2 + Version 2.0, January 2004
  3 + http://www.apache.org/licenses/
  4 +
  5 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
  6 +
  7 + 1. Definitions.
  8 +
  9 + "License" shall mean the terms and conditions for use, reproduction,
  10 + and distribution as defined by Sections 1 through 9 of this document.
  11 +
  12 + "Licensor" shall mean the copyright owner or entity authorized by
  13 + the copyright owner that is granting the License.
  14 +
  15 + "Legal Entity" shall mean the union of the acting entity and all
  16 + other entities that control, are controlled by, or are under common
  17 + control with that entity. For the purposes of this definition,
  18 + "control" means (i) the power, direct or indirect, to cause the
  19 + direction or management of such entity, whether by contract or
  20 + otherwise, or (ii) ownership of fifty percent (50%) or more of the
  21 + outstanding shares, or (iii) beneficial ownership of such entity.
  22 +
  23 + "You" (or "Your") shall mean an individual or Legal Entity
  24 + exercising permissions granted by this License.
  25 +
  26 + "Source" form shall mean the preferred form for making modifications,
  27 + including but not limited to software source code, documentation
  28 + source, and configuration files.
  29 +
  30 + "Object" form shall mean any form resulting from mechanical
  31 + transformation or translation of a Source form, including but
  32 + not limited to compiled object code, generated documentation,
  33 + and conversions to other media types.
  34 +
  35 + "Work" shall mean the work of authorship, whether in Source or
  36 + Object form, made available under the License, as indicated by a
  37 + copyright notice that is included in or attached to the work
  38 + (an example is provided in the Appendix below).
  39 +
  40 + "Derivative Works" shall mean any work, whether in Source or Object
  41 + form, that is based on (or derived from) the Work and for which the
  42 + editorial revisions, annotations, elaborations, or other modifications
  43 + represent, as a whole, an original work of authorship. For the purposes
  44 + of this License, Derivative Works shall not include works that remain
  45 + separable from, or merely link (or bind by name) to the interfaces of,
  46 + the Work and Derivative Works thereof.
  47 +
  48 + "Contribution" shall mean any work of authorship, including
  49 + the original version of the Work and any modifications or additions
  50 + to that Work or Derivative Works thereof, that is intentionally
  51 + submitted to Licensor for inclusion in the Work by the copyright owner
  52 + or by an individual or Legal Entity authorized to submit on behalf of
  53 + the copyright owner. For the purposes of this definition, "submitted"
  54 + means any form of electronic, verbal, or written communication sent
  55 + to the Licensor or its representatives, including but not limited to
  56 + communication on electronic mailing lists, source code control systems,
  57 + and issue tracking systems that are managed by, or on behalf of, the
  58 + Licensor for the purpose of discussing and improving the Work, but
  59 + excluding communication that is conspicuously marked or otherwise
  60 + designated in writing by the copyright owner as "Not a Contribution."
  61 +
  62 + "Contributor" shall mean Licensor and any individual or Legal Entity
  63 + on behalf of whom a Contribution has been received by Licensor and
  64 + subsequently incorporated within the Work.
  65 +
  66 + 2. Grant of Copyright License. Subject to the terms and conditions of
  67 + this License, each Contributor hereby grants to You a perpetual,
  68 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  69 + copyright license to reproduce, prepare Derivative Works of,
  70 + publicly display, publicly perform, sublicense, and distribute the
  71 + Work and such Derivative Works in Source or Object form.
  72 +
  73 + 3. Grant of Patent License. Subject to the terms and conditions of
  74 + this License, each Contributor hereby grants to You a perpetual,
  75 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  76 + (except as stated in this section) patent license to make, have made,
  77 + use, offer to sell, sell, import, and otherwise transfer the Work,
  78 + where such license applies only to those patent claims licensable
  79 + by such Contributor that are necessarily infringed by their
  80 + Contribution(s) alone or by combination of their Contribution(s)
  81 + with the Work to which such Contribution(s) was submitted. If You
  82 + institute patent litigation against any entity (including a
  83 + cross-claim or counterclaim in a lawsuit) alleging that the Work
  84 + or a Contribution incorporated within the Work constitutes direct
  85 + or contributory patent infringement, then any patent licenses
  86 + granted to You under this License for that Work shall terminate
  87 + as of the date such litigation is filed.
  88 +
  89 + 4. Redistribution. You may reproduce and distribute copies of the
  90 + Work or Derivative Works thereof in any medium, with or without
  91 + modifications, and in Source or Object form, provided that You
  92 + meet the following conditions:
  93 +
  94 + (a) You must give any other recipients of the Work or
  95 + Derivative Works a copy of this License; and
  96 +
  97 + (b) You must cause any modified files to carry prominent notices
  98 + stating that You changed the files; and
  99 +
  100 + (c) You must retain, in the Source form of any Derivative Works
  101 + that You distribute, all copyright, patent, trademark, and
  102 + attribution notices from the Source form of the Work,
  103 + excluding those notices that do not pertain to any part of
  104 + the Derivative Works; and
  105 +
  106 + (d) If the Work includes a "NOTICE" text file as part of its
  107 + distribution, then any Derivative Works that You distribute must
  108 + include a readable copy of the attribution notices contained
  109 + within such NOTICE file, excluding those notices that do not
  110 + pertain to any part of the Derivative Works, in at least one
  111 + of the following places: within a NOTICE text file distributed
  112 + as part of the Derivative Works; within the Source form or
  113 + documentation, if provided along with the Derivative Works; or,
  114 + within a display generated by the Derivative Works, if and
  115 + wherever such third-party notices normally appear. The contents
  116 + of the NOTICE file are for informational purposes only and
  117 + do not modify the License. You may add Your own attribution
  118 + notices within Derivative Works that You distribute, alongside
  119 + or as an addendum to the NOTICE text from the Work, provided
  120 + that such additional attribution notices cannot be construed
  121 + as modifying the License.
  122 +
  123 + You may add Your own copyright statement to Your modifications and
  124 + may provide additional or different license terms and conditions
  125 + for use, reproduction, or distribution of Your modifications, or
  126 + for any such Derivative Works as a whole, provided Your use,
  127 + reproduction, and distribution of the Work otherwise complies with
  128 + the conditions stated in this License.
  129 +
  130 + 5. Submission of Contributions. Unless You explicitly state otherwise,
  131 + any Contribution intentionally submitted for inclusion in the Work
  132 + by You to the Licensor shall be under the terms and conditions of
  133 + this License, without any additional terms or conditions.
  134 + Notwithstanding the above, nothing herein shall supersede or modify
  135 + the terms of any separate license agreement you may have executed
  136 + with Licensor regarding such Contributions.
  137 +
  138 + 6. Trademarks. This License does not grant permission to use the trade
  139 + names, trademarks, service marks, or product names of the Licensor,
  140 + except as required for reasonable and customary use in describing the
  141 + origin of the Work and reproducing the content of the NOTICE file.
  142 +
  143 + 7. Disclaimer of Warranty. Unless required by applicable law or
  144 + agreed to in writing, Licensor provides the Work (and each
  145 + Contributor provides its Contributions) on an "AS IS" BASIS,
  146 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  147 + implied, including, without limitation, any warranties or conditions
  148 + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
  149 + PARTICULAR PURPOSE. You are solely responsible for determining the
  150 + appropriateness of using or redistributing the Work and assume any
  151 + risks associated with Your exercise of permissions under this License.
  152 +
  153 + 8. Limitation of Liability. In no event and under no legal theory,
  154 + whether in tort (including negligence), contract, or otherwise,
  155 + unless required by applicable law (such as deliberate and grossly
  156 + negligent acts) or agreed to in writing, shall any Contributor be
  157 + liable to You for damages, including any direct, indirect, special,
  158 + incidental, or consequential damages of any character arising as a
  159 + result of this License or out of the use or inability to use the
  160 + Work (including but not limited to damages for loss of goodwill,
  161 + work stoppage, computer failure or malfunction, or any and all
  162 + other commercial damages or losses), even if such Contributor
  163 + has been advised of the possibility of such damages.
  164 +
  165 + 9. Accepting Warranty or Additional Liability. While redistributing
  166 + the Work or Derivative Works thereof, You may choose to offer,
  167 + and charge a fee for, acceptance of support, warranty, indemnity,
  168 + or other liability obligations and/or rights consistent with this
  169 + License. However, in accepting such obligations, You may act only
  170 + on Your own behalf and on Your sole responsibility, not on behalf
  171 + of any other Contributor, and only if You agree to indemnify,
  172 + defend, and hold each Contributor harmless for any liability
  173 + incurred by, or claims asserted against, such Contributor by reason
  174 + of your accepting any such warranty or additional liability.
  175 +
  176 + END OF TERMS AND CONDITIONS
  177 +
  178 + APPENDIX: How to apply the Apache License to your work.
  179 +
  180 + To apply the Apache License to your work, attach the following
  181 + boilerplate notice, with the fields enclosed by brackets "[]"
  182 + replaced with your own identifying information. (Don't include
  183 + the brackets!) The text should be enclosed in the appropriate
  184 + comment syntax for the file format. We also recommend that a
  185 + file or class name and description of purpose be included on the
  186 + same "printed page" as the copyright notice for easier
  187 + identification within third-party archives.
  188 +
  189 + Copyright [yyyy] [name of copyright owner]
  190 +
  191 + Licensed under the Apache License, Version 2.0 (the "License");
  192 + you may not use this file except in compliance with the License.
  193 + You may obtain a copy of the License at
  194 +
  195 + http://www.apache.org/licenses/LICENSE-2.0
  196 +
  197 + Unless required by applicable law or agreed to in writing, software
  198 + distributed under the License is distributed on an "AS IS" BASIS,
  199 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  200 + See the License for the specific language governing permissions and
  201 + limitations under the License.
  202 +
... ...
puppet/modules/timezone/Modulefile 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +name 'saz-timezone'
  2 +version '1.1.0'
  3 +
  4 +author 'saz'
  5 +license 'Apache License, Version 2.0'
  6 +project_page 'https://github.com/saz/puppet-timezone'
  7 +source 'git://github.com/saz/puppet-timezone'
  8 +summary 'UNKNOWN'
  9 +description 'Manage timezone settings via Puppet'
... ...
puppet/modules/timezone/README.md 0 → 100644
... ... @@ -0,0 +1,26 @@
  1 +# puppet-timezone
  2 +
  3 +Manage timezone settings via Puppet
  4 +
  5 +## Usage
  6 +
  7 +### Set timezone to UTC
  8 +```
  9 + class { 'timezone':
  10 + timezone => 'UTC',
  11 + }
  12 +```
  13 +
  14 +### Set timezone to Europe/Berlin
  15 +```
  16 + class { 'timezone':
  17 + timezone => 'Europe/Berlin',
  18 + }
  19 +```
  20 +
  21 +## Other class parameters
  22 +* ensure: present or absent, default: present
  23 +* autoupgrade: true or false, default: false. Auto-upgrade package, if there is a newer version
  24 +* package: string, default: OS specific. Set package name, if platform is not supported.
  25 +* config_file: string, default: OS specific. Set config_file, if platform is not supported.
  26 +* zoneinfo_dir: string, default: OS specific. Set zoneinfo_dir, if platform is not supported.
... ...
puppet/modules/timezone/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,82 @@
  1 +# Class: timezone
  2 +#
  3 +# This module manages timezone settings
  4 +#
  5 +# Parameters:
  6 +# [*timezone*]
  7 +# The name of the timezone.
  8 +# Default: UTC
  9 +#
  10 +# [*ensure*]
  11 +# Ensure if present or absent.
  12 +# Default: present
  13 +#
  14 +# [*autoupgrade*]
  15 +# Upgrade package automatically, if there is a newer version.
  16 +# Default: false
  17 +#
  18 +# [*package*]
  19 +# Name of the package.
  20 +# Only set this, if your platform is not supported or you know, what you're doing.
  21 +# Default: auto-set, platform specific
  22 +#
  23 +# [*config_file*]
  24 +# Main configuration file.
  25 +# Only set this, if your platform is not supported or you know, what you're doing.
  26 +# Default: auto-set, platform specific
  27 +#
  28 +# [*zoneinfo_dir*]
  29 +# Source directory of zoneinfo files.
  30 +# Only set this, if your platform is not supported or you know, what you're doing.
  31 +# Default: auto-set, platform specific
  32 +#
  33 +# Actions:
  34 +# Installs tzdata and configures timezone
  35 +#
  36 +# Requires:
  37 +# Nothing
  38 +#
  39 +# Sample Usage:
  40 +# class { 'timezone':
  41 +# timezone => 'Europe/Berlin',
  42 +# }
  43 +#
  44 +# [Remember: No empty lines between comments and class definition]
  45 +class timezone (
  46 + $timezone = 'UTC',
  47 + $ensure = 'present',
  48 + $autoupgrade = false,
  49 + $package = $timezone::params::package,
  50 + $config_file = $timezone::params::config_file,
  51 + $zoneinfo_dir = $timezone::params::zoneinfo_dir
  52 +) inherits timezone::params {
  53 +
  54 + case $ensure {
  55 + /(present)/: {
  56 + if $autoupgrade == true {
  57 + $package_ensure = 'latest'
  58 + } else {
  59 + $package_ensure = 'present'
  60 + }
  61 + $config_ensure = 'link'
  62 + }
  63 + /(absent)/: {
  64 + # Leave package installed, as it is a system dependency
  65 + $package_ensure = 'present'
  66 + $config_ensure = 'absent'
  67 + }
  68 + default: {
  69 + fail('ensure parameter must be present or absent')
  70 + }
  71 + }
  72 +
  73 + package { $package:
  74 + ensure => $package_ensure,
  75 + }
  76 +
  77 + file { $config_file:
  78 + ensure => $config_ensure,
  79 + target => "${zoneinfo_dir}${timezone}",
  80 + require => Package[$package],
  81 + }
  82 +}
... ...
puppet/modules/timezone/manifests/params.pp 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +class timezone::params {
  2 + case $::operatingsystem {
  3 + /(Ubuntu|Debian|Gentoo|CentOS|Amazon)/: {
  4 + $package = 'tzdata'
  5 + $zoneinfo_dir = '/usr/share/zoneinfo/'
  6 + $config_file = '/etc/localtime'
  7 + }
  8 + default: {
  9 + fail("Unsupported platform: ${::operatingsystem}")
  10 + }
  11 + }
  12 +}
... ...
puppet/modules/timezone/spec/spec.opts 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +--format
  2 +s
  3 +--colour
  4 +--loadby
  5 +mtime
  6 +--backtrace
... ...
puppet/modules/timezone/spec/spec_helper.rb 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +require 'pathname'
  2 +dir = Pathname.new(__FILE__).parent
  3 +$LOAD_PATH.unshift(dir, dir + 'lib', dir + '../lib')
  4 +
  5 +require 'mocha'
  6 +require 'puppet'
  7 +gem 'rspec', '=1.2.9'
  8 +require 'spec/autorun'
  9 +
  10 +Spec::Runner.configure do |config|
  11 + config.mock_with :mocha
  12 +end
  13 +
  14 +# We need this because the RAL uses 'should' as a method. This
  15 +# allows us the same behaviour but with a different method name.
  16 +class Object
  17 + alias :must :should
  18 +end
... ...
puppet/modules/timezone/tests/init.pp 0 → 100644
... ... @@ -0,0 +1 @@
  1 +include timezone
... ...
puppet/modules/vim/README.md 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +puppet-vim
  2 +==========
0 3 \ No newline at end of file
... ...
puppet/modules/vim/files/vimrc.local 0 → 100644
puppet/modules/vim/manifests/init.pp 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +class vim (
  2 + $vim_file = 'puppet:///modules/vim/vimrc.local'
  3 + ) {
  4 +
  5 + file { 'editor_vim':
  6 + path => '/etc/profile.d/editor.sh',
  7 + ensure => present,
  8 + content => 'export EDITOR="vim"',
  9 + }
  10 +
  11 + file { 'vimrc':
  12 + path => '/etc/vim/vimrc.local',
  13 + ensure => present,
  14 + source => $vim_file
  15 + }
  16 +
  17 +}
0 18 \ No newline at end of file
... ...
puppet/modules/vim/test/init.pp 0 → 100644