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, + } +}