1
0
mirror of https://github.com/Adam-Ant/puppet-motd synced 2024-12-20 08:04:35 +00:00

Initial Commit

This commit is contained in:
Adam Dodman 2018-02-20 20:58:41 +00:00
commit 56b3923c99
9 changed files with 133 additions and 0 deletions

27
README.md Normal file
View File

@ -0,0 +1,27 @@
# motd
#### Table of Contents
1. [Description](#description)
1. [Setup - The basics of getting started with motd](#setup)
* [What motd affects](#what-motd-affects)
1. [Usage - Configuration options and additional functionality](#usage)
## Description
This module configures a standardized motd file for all hosts, including node hostname in ascii art for easy host recognition.
## Setup
Make sure to include the below in the puppet master, to install dependencies:
`include motd::install`
### What motd affects
This module replaces /etc/motd, and nothing else. It requires Facter>=3.
## Usage
Simply include the motd class into your nodes, no configuration is required.
`include ::motd`

12
examples/init.pp Normal file
View File

@ -0,0 +1,12 @@
# The baseline for module testing used by Puppet Inc. is that each manifest
# should have a corresponding test manifest that declares that class or defined
# type.
#
# Tests are then run by using puppet apply --noop (to check for compilation
# errors and view a log of events) or by fully applying the test in a virtual
# environment (to compare the resulting system state to the desired state).
#
# Learn more about module testing here:
# https://docs.puppet.com/guides/tests_smoke.html
#
include ::motd

2
examples/install.pp Normal file
View File

@ -0,0 +1,2 @@
# Put this under the master node to install figlet - needed for this module
include motd::install

31
manifests/init.pp Normal file
View File

@ -0,0 +1,31 @@
# Class: motd
# ===========================
#
# Install a standardized motd across all your nodes.
#
#
# Examples
# --------
#
# @example
# include ::motd
#
# Authors
# -------
#
# Adam Dodman <hello@adam-ant.co.uk>
#
# Copyright
# ---------
#
# Copyright 2018 Adam Dodman, unless otherwise noted.
#
class motd {
$motd_hash = {
'ascii' => generate('/bin/sh', '-c', "/usr/bin/figlet -cw 60 ${$facts['networking']['hostname']}"),
}
file { '/etc/motd':
content => epp('motd/motd.epp', $motd_hash),
}
}

19
manifests/install.pp Normal file
View File

@ -0,0 +1,19 @@
# This manifest is used to install figlet, required by the motd package.
# It should only be required on the puppet master.
class motd::install {
if $facts['os']['family'] == 'Redhat' {
include repoforge
package { 'figlet':
ensure => present,
require => Yumrepo['rpmforge'],
}
}
else {
package { 'figlet':
ensure => present,
}
}
}

18
metadata.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "adamant-motd",
"version": "0.1.0",
"author": "Adam Dodman",
"summary": "Install a standardized MOTD banner",
"license": "GPLv3",
"source": "",
"project_page": "github.com/REPLACEME",
"issues_url": "github.com/REPLACEISSUE",
"dependencies": [
{
"name": "puppetlabs-stdlib",
"version_requirement": ">= 1.0.0"
}
],
"data_provider": null
}

View File

@ -0,0 +1,6 @@
require 'spec_helper'
describe 'motd' do
context 'with default values for all parameters' do
it { should contain_class('motd') }
end
end

1
spec/spec_helper.rb Normal file
View File

@ -0,0 +1 @@
require 'puppetlabs_spec_helper/module_spec_helper'

17
templates/motd.epp Normal file
View File

@ -0,0 +1,17 @@
<%- |
$ascii,
| -%>
------------------------------------------------------------
<%= $ascii %>
------------------------------------------------------------
Welcome to <%= $facts['networking']['fqdn'] %>
OS: <%= $facts['os']['name'] %> <%= $facts['os']['release']['full'] %>
OS Family: <%= $facts['os']['family'] %>
Architecture: <%= $facts['os']['architecture'] %>
Kernel Version: <%= $facts['kernelversion'] %>
IP: <%= $facts['networking']['ip'] %>
RAM: <%= $facts['memory']['system']['total'] %>
------------------------------------------------------------
This system is managed by Puppet version <%= $facts['puppetversion'] %>
------------------------------------------------------------