Created
August 25, 2017 13:51
-
-
Save mbadley/715b1cbe931975f6eb58dc431da2be45 to your computer and use it in GitHub Desktop.
puppet getting started master, client & a module
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #puppet master | |
| apt-get update && sudo apt-get -y install ntp | |
| wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb | |
| dpkg -i puppetlabs-release-pc1-xenial.deb | |
| apt update | |
| apt upgrade | |
| apt install puppetmaster-passenger | |
| systemctl stop apache2 | |
| puppet resource package puppetmaster ensure=latest | |
| #/etc/puppet/puppet.conf | |
| [main] | |
| server=malc.mbadley-home.com | |
| dns_alt_names=puppet,malc.mbadley-home.com | |
| logdir=/var/log/puppet | |
| vardir=/var/lib/puppet | |
| ssldir=/var/lib/puppet/ssl | |
| rundir=/var/run/puppet | |
| factpath=$vardir/lib/facter | |
| prerun_command=/etc/puppet/etckeeper-commit-pre | |
| postrun_command=/etc/puppet/etckeeper-commit-post | |
| [master] | |
| # These are needed when the puppetmaster is run by passenger | |
| # and can safely be removed if webrick is used. | |
| ssl_client_header = SSL_CLIENT_S_DN | |
| ssl_client_verify_header = SSL_CLIENT_VERIFY | |
| systemctl start puppetmaster | |
| netstat -anpl | grep 8140 | |
| #puppet client | |
| apt install puppet | |
| #/etc/hosts | |
| 192.168.0.20 puppet | |
| #/etc/puppet/puppet.conf | |
| [main] | |
| server=puppet | |
| dns_alt_names=puppet,malc.mbadley-home.com | |
| logdir=/var/log/puppet | |
| vardir=/var/lib/puppet | |
| ssldir=/var/lib/puppet/ssl | |
| rundir=/var/run/puppet | |
| factpath=$vardir/lib/facter | |
| prerun_command=/etc/puppet/etckeeper-commit-pre | |
| postrun_command=/etc/puppet/etckeeper-commit-post | |
| [master] | |
| # These are needed when the puppetmaster is run by passenger | |
| # and can safely be removed if webrick is used. | |
| ssl_client_header = SSL_CLIENT_S_DN | |
| ssl_client_verify_header = SSL_CLIENT_VERIFY | |
| systemctl restart puppet | |
| puppet agent --enable | |
| puppet agent -t | |
| #puppet master | |
| puppet cert list | |
| puppet cert sign | |
| #sample module on puppet master | |
| mkdir /etc/puppet/modules/accounts | |
| cd /etc/puppet/modules/accounts | |
| mkdir {examples,files,manifests,templates} | |
| #/etc/puppet/modules/accounts/manifests/init.pp | |
| class accounts { | |
| include groups | |
| include ssh | |
| $rootgroup = $osfamily ? { | |
| 'Debian' => 'sudo', | |
| 'RedHat' => 'wheel', | |
| default => warning('This distribution is not supported by the Accounts module'), | |
| } | |
| user { 'username': | |
| ensure => present, | |
| home => '/home/username', | |
| shell => '/bin/bash', | |
| managehome => true, | |
| gid => 'username', | |
| groups => "$rootgroup", | |
| password => '$1$Olmk/xeo$omWw2PyDs16f9wjwLVWWp0', | |
| } | |
| } | |
| #/etc/puppet/modules/accounts/examples/init.pp | |
| include accounts | |
| #/etc/puppet/modules/accounts/manifests/groups.pp | |
| class accounts::groups { | |
| group { 'username':class accounts::ssh { | |
| $sshname = $osfamily ? { | |
| 'Debian' => 'ssh', | |
| 'RedHat' => 'sshd', | |
| default => warning('This distribution is not supported by the Accounts module'), | |
| } | |
| file { '/etc/ssh/sshd_config': | |
| ensure => present, | |
| source => 'puppet:///modules/accounts/sshd_config', | |
| notify => Service["$sshname"], | |
| } | |
| service { "$sshname": | |
| hasrestart => true, | |
| } | |
| } | |
| ensure => present, | |
| } | |
| } | |
| #/etc/puppet/modules/accounts/manifests/ssh.pp | |
| class accounts::ssh { | |
| $sshname = $osfamily ? { | |
| 'Debian' => 'ssh', | |
| 'RedHat' => 'sshd', | |
| default => warning('This distribution is not supported by the Accounts module'), | |
| } | |
| file { '/etc/ssh/sshd_config': | |
| ensure => present, | |
| source => 'puppet:///modules/accounts/sshd_config', | |
| notify => Service["$sshname"], | |
| } | |
| service { "$sshname": | |
| hasrestart => true, | |
| } | |
| } | |
| #/etc/puppet/modules/accounts/files/sshd_config | |
| # Package generated configuration file | |
| # See the sshd_config(5) manpage for details | |
| # What ports, IPs and protocols we listen for | |
| Port 22 | |
| # Use these options to restrict which interfaces/protocols sshd will bind to | |
| #ListenAddress :: | |
| #ListenAddress 0.0.0.0 | |
| Protocol 2 | |
| # HostKeys for protocol version 2 | |
| HostKey /etc/ssh/ssh_host_rsa_key | |
| HostKey /etc/ssh/ssh_host_dsa_key | |
| HostKey /etc/ssh/ssh_host_ecdsa_key | |
| HostKey /etc/ssh/ssh_host_ed25519_key | |
| #Privilege Separation is turned on for security | |
| UsePrivilegeSeparation yes | |
| # Lifetime and size of ephemeral version 1 server key | |
| KeyRegenerationInterval 3600 | |
| ServerKeyBits 1024 | |
| # Logging | |
| SyslogFacility AUTH | |
| LogLevel INFO | |
| # Authentication: | |
| LoginGraceTime 120 | |
| PermitRootLogin without-password | |
| StrictModes yes | |
| RSAAuthentication yes | |
| PubkeyAuthentication yes | |
| #AuthorizedKeysFile %h/.ssh/authorized_keys | |
| # Don't read the user's ~/.rhosts and ~/.shosts files | |
| IgnoreRhosts yes | |
| # For this to work you will also need host keys in /etc/ssh_known_hosts | |
| RhostsRSAAuthentication no | |
| # similar for protocol version 2 | |
| HostbasedAuthentication no | |
| # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication | |
| #IgnoreUserKnownHosts yes | |
| # To enable empty passwords, change to yes (NOT RECOMMENDED) | |
| PermitEmptyPasswords no | |
| # Change to yes to enable challenge-response passwords (beware issues with | |
| # some PAM modules and threads) | |
| ChallengeResponseAuthentication no | |
| # Change to no to disable tunnelled clear text passwords | |
| #PasswordAuthentication yes | |
| # Kerberos options | |
| #KerberosAuthentication no | |
| #KerberosGetAFSToken no | |
| #KerberosOrLocalPasswd yes | |
| #KerberosTicketCleanup yes | |
| # GSSAPI options | |
| #GSSAPIAuthentication no | |
| #GSSAPICleanupCredentials yes | |
| X11Forwarding yes | |
| X11DisplayOffset 10 | |
| PrintMotd no | |
| PrintLastLog yes | |
| TCPKeepAlive yes | |
| #UseLogin no | |
| #MaxStartups 10:30:60 | |
| #Banner /etc/issue.net | |
| # Allow client to pass locale environment variables | |
| AcceptEnv LANG LC_* | |
| Subsystem sftp /usr/lib/openssh/sftp-server | |
| # Set this to 'yes' to enable PAM authentication, account processing, | |
| # and session processing. If this is enabled, PAM authentication will | |
| # be allowed through the ChallengeResponseAuthentication and | |
| # PasswordAuthentication. Depending on your PAM configuration, | |
| # PAM authentication via ChallengeResponseAuthentication may bypass | |
| # the setting of "PermitRootLogin without-password". | |
| # If you just want the PAM account and session checks to run without | |
| # PAM authentication, then enable this but set PasswordAuthentication | |
| # and ChallengeResponseAuthentication to 'no'. | |
| UsePAM yes | |
| cd /etc/puppet/modules/accounts/manifests | |
| puppet parser validate init.pp | |
| puppet parser validate groups.pp | |
| puppet parser validate ssh.pp | |
| cd /etc/puppet/modules/accounts/examples | |
| puppet apply --noop init.pp | |
| puppet apply init.pp | |
| #puppet client | |
| puppet test -noops | |
| puppet -t | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment