view modules/common/README.md @ 388:750d36241580

Add missing dependency modules Probably required by SSH, but not obviously listed
author IBBoard <dev@ibboard.co.uk>
date Mon, 03 Jan 2022 17:15:14 +0000
parents
children
line wrap: on
line source

# puppet-module-common #

[![Build Status](
https://api.travis-ci.org/ghoneycutt/puppet-module-common.png?branch=master)](https://travis-ci.org/ghoneycutt/puppet-module-common)

common module to be applied to **ALL** nodes

# Compatibility #

Module is generic enough to work on any system, though the individual modules that it could potentially include could be very platform specific.

===

# Common class #
Optionally include classes that are common to all systems, such as `dnsclient`, `ntp`, `puppet::agent`, and `vim`. By default we do not take any action, so you must enable the classes. This should be done in Hiera such as the following example. Ideally you would do this in your least specific level of hiera (often times labeled as 'common' or 'global') and potentially override at other levels.

<pre>
---
common::manage_root_password: true
common::enable_dnsclient: true
common::enable_ntp: true
common::enable_puppet_agent: true
common::enable_vim: true
</pre>

## Parameters for class `common`##

users
-----
Hash of users to ensure with common::mkusers

- *Default*: undef

groups
------
Hash of groups to ensure

- *Default*: undef

manage_root_password
--------------------

- *Default*: false

root_password
-------------

- *Default*: MD5 crypt of `puppet`

create_opt_lsb_provider_name_dir
--------------------------------
Boolean to ensure `/opt/${lsb_provider_name}`

- *Default*: false

lsb_provider_name
-----------------
LSB Provider Name as assigned by LANANA - [http://www.lanana.org/lsbreg/providers/index.html](http://www.lanana.org/lsbreg/providers/index.html)

- *Default*: `UNSET`

enable_dnsclient
----------------
Boolean to include ghoneycutt/dnsclient

- *Default*: false

enable_hosts
------------
Boolean to include ghoneycutt/hosts

- *Default*: false

enable_inittab
--------------
Boolean to include ghoneycutt/inittab

- *Default*: false

enable_mailaliases
------------------
Boolean to include ghoneycutt/mailaliases

- *Default*: false

enable_motd
-----------
Boolean to include ghoneycutt/motd

- *Default*: false

enable_network
--------------
Boolean to include ghoneycutt/network

- *Default*: false

enable_nsswitch
---------------
Boolean to include ghoneycutt/nsswitch

- *Default*: false

enable_ntp
----------
Boolean to include ghoneycutt/ntp

- *Default*: false

enable_pam
----------
Boolean to include ghoneycutt/pam

- *Default*: false

enable_puppet_agent
-------------------
Boolean to include ghoneycutt/puppet::agent

- *Default*: false

enable_rsyslog
--------------
Boolean to include ghoneycutt/rsyslog

- *Default*: false

enable_selinux
--------------
Boolean to include ghoneycutt/selinux

- *Default*: false

enable_ssh
----------
Boolean to include ghoneycutt/ssh

- *Default*: false

enable_utils
------------
Boolean to include ghoneycutt/utils

- *Default*: false

enable_vim
----------
Boolean to include ghoneycutt/vim

- *Default*: false

enable_wget
-----------
Boolean to include ghoneycutt/wget

- *Default*: false

### includes classes based on `osfamily` fact ###

enable_debian
-----------
Boolean to include ghoneycutt/debian

- *Default*: false

enable_redhat
-----------
Boolean to include ghoneycutt/redhat

- *Default*: false

enable_solaris
-----------
Boolean to include ghoneycutt/solaris

- *Default*: false

enable_suse
-----------
Boolean to include ghoneycutt/suse

- *Default*: false

===

# common::mkdir_p define #
Provide `mkdir -p` functionality for a directory.

Used in conjunction with a file resource.

## Example usage: ##
<pre>
common::mkdir_p { '/some/dir/structure': }

file { '/some/dir/structure':
  ensure  => directory,
  require => Common::Mkdir_p['/some/dir/structure'],
}
</pre>

## Parameters for `common::mkdir_p` define ##

None.

===

# common::remove_if_empty define #
Removes a file if it exists and is empty.

## Example usage: ##
<pre>
common::remove_if_empty { '/path/to/potentially_empty_file': }
</pre>

## Parameters for `common::remove_if_empty` define ##

None.

===

# common::mkuser define #
Ensures user/groups

## Usage ##
You can specify hash each for users and groups and use Hiera to manage them.

This example uses the YAML backend, though that is not mandatory.

In Hiera's hierarchy add two levels, `users`, and `groups` such as the following example.

`hiera.yaml`
<pre>
---
:backends:
  - yaml
:hierarchy:
  - fqdn/%{fqdn}
  - users
  - groups
  - %{environment}
  - common
:yaml:
  :datadir:
</pre>

`users.yaml`
<pre>
---
common::users:
  gh:
    uid: "30000"
    comment: "Garrett Honeycutt"
    groups: admin
    ssh_auth_key: ssh-public-key
</pre>

`groups.yaml`
<pre>
---
common::groups:
  admin:
    gid: "32000"
</pre>


## Parameters for `common::mkuser` define ##

uid
---
String - UID of user

- *Required*

gid
---
String - GID of user

- *Default*: `$uid`

name
----
String - username

group
-----
String - group name of user

- *Default*: `$name`

shell
-----
String - user's shell

- *Default*: '/bin/bash'

home
------
String - home directory

- *Default*: `/home/${username}`

ensure
------
Present or Absent

- *Default*: present

managehome
----------
Boolean for manage home attribute of user resource

- *Default*: true

manage_dotssh
-------------
Boolean to optionally create `~/.ssh` directory

- *Default*: true

comment
-------
String - GECOS field for passed

- *Default*: 'created via puppet'

groups
------
Array - additional groups the user should be associated with

- *Default*: undef

password
--------
String - password crypt for user

- *Default*: '!!'

mode
----
String - mode of home directory

- *Default*: 0700

ssh_auth_key
-----------------
String - The ssh key for the user

- *Default*: undef

ssh_auth_key_type
-----------------
String - Anything that the ssh_authorized_key resource can take for the type attribute, such as `ssh-dss` or `ssh-rsa`.

- *Default*: 'ssh-dss'

purge_ssh_keys
-----------------
Boolean - Purge any keys that aren’t managed as ssh_authorized_key resources. As this parameter was introduced with Puppet 3.6,
it will only work with Puppet >= 3.6. On earlier version this parameter will be silently ignored.


- *Default*: false

===

# Functions #

## interface2factname() ##
Takes one argument, the interface name, and returns it formatted for use with facter.

Example: `interface2factname('bond0:0')` would return `ipaddress_bond0_0`.

## strip_file_extension() ##
Takes two arguments, a file name which can include the path, and the extension to be removed. Returns the file name without the extension as a string.

Example: `strip_file_extension('myapp.war','war')` would return `myapp`.