mirror of
				https://github.com/Adam-Ant/puppet-motd
				synced 2025-11-03 23:07:17 +00:00 
			
		
		
		
	Initial Commit
This commit is contained in:
		
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										12
									
								
								examples/init.pp
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										2
									
								
								examples/install.pp
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										31
									
								
								manifests/init.pp
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										19
									
								
								manifests/install.pp
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										18
									
								
								metadata.json
									
									
									
									
									
										Normal 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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								spec/classes/init_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								spec/classes/init_spec.rb
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										1
									
								
								spec/spec_helper.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					require 'puppetlabs_spec_helper/module_spec_helper'
 | 
				
			||||||
							
								
								
									
										17
									
								
								templates/motd.epp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								templates/motd.epp
									
									
									
									
									
										Normal 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'] %>
 | 
				
			||||||
 | 
					------------------------------------------------------------
 | 
				
			||||||
		Reference in New Issue
	
	Block a user