diff --git a/hieradata/britter.puppetlabs.vm.yaml b/hieradata/britter.puppetlabs.vm.yaml
new file mode 100644
index 0000000..19e9813
--- /dev/null
+++ b/hieradata/britter.puppetlabs.vm.yaml
@@ -0,0 +1 @@
+message: Is it Friday yet?
diff --git a/hieradata/dave.puppetlabs.vm.yaml b/hieradata/dave.puppetlabs.vm.yaml
new file mode 100644
index 0000000..85cddc6
--- /dev/null
+++ b/hieradata/dave.puppetlabs.vm.yaml
@@ -0,0 +1,2 @@
+---
+message: this is a test messsage.
diff --git a/hieradata/eddie.puppetlabs.vm.yaml b/hieradata/eddie.puppetlabs.vm.yaml
new file mode 100644
index 0000000..06d8cea
--- /dev/null
+++ b/hieradata/eddie.puppetlabs.vm.yaml
@@ -0,0 +1 @@
+message: You can be my hero baby
diff --git a/manifests/site.pp b/manifests/site.pp
index e43f36b..8908b2d 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -1,5 +1,7 @@
## site.pp ##
+# Eddie commit
+
# This file (/etc/puppetlabs/puppet/manifests/site.pp) is the main entry point
# used when an agent connects to a master and asks for an updated configuration.
#
@@ -16,6 +18,7 @@
# they run. The Puppet Enterprise console needs this to display file contents
# and differences.
+
# Disable filebucket by default for all File resources:
File { backup => false }
@@ -28,6 +31,7 @@
value => 'title-hash',
}
+
# DEFAULT NODE
# Node definitions in this file are merged with node data from the console. See
# http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
@@ -38,9 +42,46 @@
# will be included in every node's catalog, *in addition* to any classes
# specified in the console for that node.
+# Puppet is very cool!
+
node default {
+ #class { 'nginx':
+ # root => '/var/www/html',
+ #}
# This is where you can declare classes for all nodes.
# Example:
# class { 'my_class': }
- include role::classroom
+ # include role::classroom
+
+ # include ::users
+
+ #file { '/etc/motd':
+ # ensure => file,
+ # content => 'I learned Puppet! Its the best ',
+ #}
+
+ exec { "cowsay 'Welcome to ${::fqdn}!' > /etc/motd":
+ creates => '/etc/motd',
+ path => '/usr/local/bin',
+ }
+
+ class { 'nginx':
+ # root => '/var/www/html',
+ }
+ #include ::users
+ #include role::classroom
+ #include ::skeleton
+ include users::admins
+ #notify { "Hello, my name name is ${::hostname}": }
+ #file { '/etc/motd':
+ # ensure => file,
+ # owner => 'root',
+ # group => 'root',
+ # mode => '0644',
+ # content => "Today I learned what it means to be a puppet.\n",
+ #}
+ if $facts['is_virtual'] == 'true' {
+ $vmname = capitalize($::virtual)
+ notify { "This is a ${vmname} virtual machine.": }
+ }
}
diff --git a/site/aliases/manifests/init.pp b/site/aliases/manifests/init.pp
index 4332d76..c5ac4b3 100644
--- a/site/aliases/manifests/init.pp
+++ b/site/aliases/manifests/init.pp
@@ -1,5 +1,5 @@
class aliases (
- $admin = 'root',
+ $admin = 'admin',
) {
# uses $admin to build the aliases file
file { '/etc/aliases':
diff --git a/site/aliases/templates/aliases.epp b/site/aliases/templates/aliases.epp
index 1069e99..a184837 100644
--- a/site/aliases/templates/aliases.epp
+++ b/site/aliases/templates/aliases.epp
@@ -93,4 +93,10 @@ support: postmaster
decode: root
# Person who should get root's mail
+
+<% if $admin and $admin != root { -%>
+root: <%= $admin %>
+
+<% } else { -%>
#root: marc
+<% } -%>
diff --git a/site/memcached/examples/init.pp b/site/memcached/examples/init.pp
new file mode 100644
index 0000000..22eecc3
--- /dev/null
+++ b/site/memcached/examples/init.pp
@@ -0,0 +1 @@
+include memcached
diff --git a/site/memcached/files/memcached b/site/memcached/files/memcached
new file mode 100644
index 0000000..8ade2f5
--- /dev/null
+++ b/site/memcached/files/memcached
@@ -0,0 +1,5 @@
+PORT="11211"
+USER="memcached"
+MAXCONN="96"
+CACHESIZE="32"
+OPTIONS=""
diff --git a/site/memcached/manifests/init.pp b/site/memcached/manifests/init.pp
new file mode 100644
index 0000000..55d108f
--- /dev/null
+++ b/site/memcached/manifests/init.pp
@@ -0,0 +1,19 @@
+class memcached{
+ package { 'memcached':
+ ensure => present,
+ }
+ file { '/etc/sysconfig/memcached':
+ ensure => file,
+ owner => 'root',
+ group => 'root',
+ mode => '0664',
+ source => 'puppet:///modules/memcached/memcached',
+ require => Package['memcached'],
+ notify => Service['memcached'],
+ }
+ service { 'memcached':
+ ensure => running,
+ enable => true,
+ subscribe => File['/etc/sysconfig/memcached'],
+ }
+}
diff --git a/site/nginx/examples/init.pp b/site/nginx/examples/init.pp
new file mode 100644
index 0000000..9829721
--- /dev/null
+++ b/site/nginx/examples/init.pp
@@ -0,0 +1,5 @@
+if $facts['os']['family'] == 'Windows' {
+ Package {
+ provider => chocolatey,
+ }
+}
\ No newline at end of file
diff --git a/site/nginx/files/index.html b/site/nginx/files/index.html
index 960c47e..cdaca9a 100644
--- a/site/nginx/files/index.html
+++ b/site/nginx/files/index.html
@@ -1,8 +1,8 @@
- Hello from Puppet!
+ Master of Puppets!
- Hello World, Puppet is Fun!
+ Hello World, Master of Puppets is pulling the STRINGS!
diff --git a/site/nginx/manifests/init.pp b/site/nginx/manifests/init.pp
new file mode 100644
index 0000000..bce4d69
--- /dev/null
+++ b/site/nginx/manifests/init.pp
@@ -0,0 +1,57 @@
+class nginx(
+ String $package = $::nginx::params::package,
+ String $owner = $::nginx::params::owner,
+ String $group = $::nginx::params::group,
+ String $docroot = $::nginx::params::docroot,
+ String $confdir = $::nginx::params::confdir,
+ String $blockdir = $::nginx::params::blockdir,
+ String $logdir = $::nginx::params::logdir,
+ String $user = $::nginx::params::user,
+ Boolean $highperf = $::nginx::params::highperf,
+) {
+ File {
+ owner => $owner,
+ group => $group,
+ mode => '0664',
+ }
+
+ package { $package:
+ ensure => present,
+ }
+
+ file { [ $docroot, "${confdir}/conf.d" ]:
+ ensure => directory,
+ }
+
+ file { "${docroot}/index.html":
+ ensure => file,
+ source => 'puppet:///modules/nginx/index.html',
+ }
+
+ file { "${confdir}/nginx.conf":
+ ensure => file,
+ content => epp('nginx/nginx.conf.epp',
+ {
+ user => $user,
+ confdir => $confdir,
+ logdir => $logdir,
+ }
+ ),
+ notify => Service['nginx'],
+ }
+
+ file { "${confdir}/conf.d/default.conf":
+ ensure => file,
+ content => epp('nginx/default.conf.epp',
+ {
+ docroot => $docroot,
+ }
+ ),
+ notify => Service['nginx'],
+ }
+
+ service { 'nginx':
+ ensure => running,
+ enable => true,
+ }
+}
diff --git a/site/nginx/manifests/params.pp b/site/nginx/manifests/params.pp
new file mode 100644
index 0000000..623ed3e
--- /dev/null
+++ b/site/nginx/manifests/params.pp
@@ -0,0 +1,35 @@
+#dd
+class nginx::params {
+ case $facts['os']['family'] {
+ 'redhat','debian' : {
+ $package = 'nginx'
+ $owner = 'root'
+ $group = 'root'
+ $docroot = '/var/www'
+ $confdir = '/etc/nginx'
+ $blockdir = '/etc/nginx/conf.d'
+ $logdir = '/var/log/nginx'
+ }
+ 'windows' : {
+ $package = 'nginx-service'
+ $owner = 'Administrator'
+ $group = 'Administrators'
+ $docroot = 'C:/ProgramData/nginx/html'
+ $confdir = 'C:/ProgramData/nginx'
+ $blockdir = 'C:/ProgramData/nginx/conf.d'
+ $logdir = 'C:/ProgramData/nginx/logs'
+ }
+ default : {
+ fail("Module ${module_name} is not supported on ${facts['os']['family']}")
+ }
+ }
+
+ # Default to high-performance mode
+ $highperf = true
+
+ $user = $facts['os']['family'] ? {
+ 'redhat' => 'nginx',
+ 'debian' => 'www-data',
+ 'windows' => 'nobody',
+ }
+}
diff --git a/site/nginx/templates/default.conf.epp b/site/nginx/templates/default.conf.epp
new file mode 100644
index 0000000..8d774ec
--- /dev/null
+++ b/site/nginx/templates/default.conf.epp
@@ -0,0 +1,8 @@
+server {
+ listen 80;
+
+ root <%= $docroot %>;
+ index index.html index.htm;
+
+ server_name _;
+}
diff --git a/site/nginx/templates/nginx.conf.epp b/site/nginx/templates/nginx.conf.epp
new file mode 100644
index 0000000..324b577
--- /dev/null
+++ b/site/nginx/templates/nginx.conf.epp
@@ -0,0 +1,33 @@
+# For more information on configuration, see:
+# * Official English Documentation: http://nginx.org/en/docs/
+# * Official Russian Documentation: http://nginx.org/ru/docs/
+
+user <%= $user %>;
+worker_processes 1;
+
+error_log <%= $logdir %>/error.log;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include <%= $confdir %>/mime.types;
+ default_type application/octet-stream;
+
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ access_log <%= $logdir %>/access.log main;
+
+ sendfile on;
+ #tcp_nopush on;
+ #keepalive_timeout 0;
+ keepalive_timeout 65;
+
+ #gzip on;
+ # Load config files from the conf.d directory
+ # The default server is in conf.d/default.conf
+ include <%= $confdir %>/conf.d/*.conf;
+}
diff --git a/site/nginx/templates/templates/nginx.conf.epp b/site/nginx/templates/templates/nginx.conf.epp
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/site/nginx/templates/templates/nginx.conf.epp
@@ -0,0 +1 @@
+
diff --git a/site/profile/manifests/base.pp b/site/profile/manifests/base.pp
index 8b471e5..0c62242 100644
--- a/site/profile/manifests/base.pp
+++ b/site/profile/manifests/base.pp
@@ -1,3 +1,4 @@
class profile::base {
- notify { "Hello, my name is ${::hostname}": }
+ $message = lookup('message')
+ notify { $message: }
}
diff --git a/site/skeleton/examples/init.pp b/site/skeleton/examples/init.pp
new file mode 100644
index 0000000..91f03e3
--- /dev/null
+++ b/site/skeleton/examples/init.pp
@@ -0,0 +1 @@
+include skeleton
\ No newline at end of file
diff --git a/site/skeleton/files/.bashrc b/site/skeleton/files/.bashrc
new file mode 100644
index 0000000..f593a5e
--- /dev/null
+++ b/site/skeleton/files/.bashrc
@@ -0,0 +1,10 @@
+# .bashrc
+# Source global definitions
+if [ -f /etc/bashrc ]; then
+ . /etc/bashrc
+fi
+# Uncomment the following line if you don't like systemctl's auto-paging feature:
+# export SYSTEMD_PAGER=
+# User specific aliases and functions
+export PATH=$PATH:/usr/local/bin # Add this line
+cowsay 'Hi there!'
diff --git a/site/skeleton/files/bashrc b/site/skeleton/files/bashrc
new file mode 100644
index 0000000..093c0ad
--- /dev/null
+++ b/site/skeleton/files/bashrc
@@ -0,0 +1,15 @@
+# .bashrc
+
+# Source global definitions
+if [ -f /etc/bashrc ]; then
+ . /etc/bashrc
+fi
+
+# Uncomment the following line if you don't like systemctl's auto-paging feature:
+# export SYSTEMD_PAGER=
+
+# User specific aliases and functions
+
+export PATH=$PATH:/usr/local/bin
+
+cowsay 'Puppet is cool!'
diff --git a/site/skeleton/manifests/init.pp b/site/skeleton/manifests/init.pp
new file mode 100644
index 0000000..185f5db
--- /dev/null
+++ b/site/skeleton/manifests/init.pp
@@ -0,0 +1,15 @@
+class skeleton {
+ # create a directory
+ file { '/etc/skel':
+ ensure => 'directory',
+ }
+
+ # a fuller example, including permissions and ownership
+ file { '/etc/skel/.bashrc':
+ ensure => 'file',
+ owner => 'root',
+ group => 'root',
+ mode => '0664',
+ source => 'puppet:///modules/skeleton/.bashrc'
+ }
+}
\ No newline at end of file
diff --git a/site/users/examples/admins.pp b/site/users/examples/admins.pp
new file mode 100644
index 0000000..0124bf7
--- /dev/null
+++ b/site/users/examples/admins.pp
@@ -0,0 +1 @@
+include users::admins
diff --git a/site/users/examples/init.pp b/site/users/examples/init.pp
new file mode 100644
index 0000000..1aa7d3a
--- /dev/null
+++ b/site/users/examples/init.pp
@@ -0,0 +1,2 @@
+# Instantiate users
+
diff --git a/site/users/manifest/init.pp b/site/users/manifest/init.pp
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/site/users/manifest/init.pp
@@ -0,0 +1 @@
+test
diff --git a/site/users/manifests/admins.pp b/site/users/manifests/admins.pp
new file mode 100644
index 0000000..8176378
--- /dev/null
+++ b/site/users/manifests/admins.pp
@@ -0,0 +1,12 @@
+class users::admins {
+ users::managed_user { 'joe': }
+ users::managed_user { 'alice':
+ group => 'staff',
+ }
+ users::managed_user { 'aaron':
+ group => 'staff',
+ }
+ group { 'staff':
+ ensure => present,
+ }
+}
diff --git a/site/users/manifests/examples/admins.pp b/site/users/manifests/examples/admins.pp
new file mode 100644
index 0000000..0124bf7
--- /dev/null
+++ b/site/users/manifests/examples/admins.pp
@@ -0,0 +1 @@
+include users::admins
diff --git a/site/users/manifests/examples/init.pp b/site/users/manifests/examples/init.pp
new file mode 100644
index 0000000..72bcbd3
--- /dev/null
+++ b/site/users/manifests/examples/init.pp
@@ -0,0 +1 @@
+include ::users
diff --git a/site/users/manifests/init.pp b/site/users/manifests/init.pp
new file mode 100644
index 0000000..3e6732d
--- /dev/null
+++ b/site/users/manifests/init.pp
@@ -0,0 +1,5 @@
+class users {
+ user { 'fundamentals':
+ ensure => present, # Ensure the user exists
+ }
+}
diff --git a/site/users/manifests/managed_user.pp b/site/users/manifests/managed_user.pp
new file mode 100644
index 0000000..0d03e67
--- /dev/null
+++ b/site/users/manifests/managed_user.pp
@@ -0,0 +1,14 @@
+define users::managed_user (
+
+ $group = $title,
+) {
+ user { $title:
+ ensure => present,
+ }
+
+ file { "/home/${title}":
+ ensure => directory,
+ owner => $title,
+ group => $group,
+ }
+}
diff --git a/site/users/manifests/managed_users.pp b/site/users/manifests/managed_users.pp
new file mode 100644
index 0000000..1084425
--- /dev/null
+++ b/site/users/manifests/managed_users.pp
@@ -0,0 +1,12 @@
+define users::managed_user ( $group = $title,
+){
+user { $title:
+ ensure => present,
+}
+
+ file { "/home/${title}":
+ ensure => directory,
+ owner => $title,
+ group => $group,
+ }
+}