class bootstrap { # puppet config package { "puppet": ensure => installed, } service { "puppetmaster": ensure => running, require => [ File["$puppet_bootstrap_dir/modules/nodo"], File["$puppet_bootstrap_dir/puppet.conf"], File["$puppet_bootstrap_dir/fileserver.conf"], File["$puppet_bootstrap_dir/auth.conf"], # some sample manifests File["$puppet_bootstrap_dir/manifests/site.pp"], File["$puppet_bootstrap_dir/manifests/modules.pp"], File["$puppet_bootstrap_dir/manifests/nodes.pp"], File["$puppet_bootstrap_dir/manifests/classes/users.pp"], File["$puppet_bootstrap_dir/manifests/classes/websites.pp"], File["$puppet_bootstrap_dir/manifests/nodes/$hostname-server.pp"], File["$puppet_bootstrap_dir/manifests/nodes/$hostname-master.pp"], File["$puppet_bootstrap_dir/manifests/nodes/$hostname-proxy.pp"], File["$puppet_bootstrap_dir/manifests/nodes/$hostname-web.pp"], File["$puppet_bootstrap_dir/manifests/nodes/$hostname-storage.pp"], File["$puppet_bootstrap_dir/manifests/nodes/$hostname-test.pp"], # and some sample files File["$puppet_bootstrap_dir/files/apache/htdocs/images/README.html"], File["$puppet_bootstrap_dir/files/apache/htdocs/index.html"], File["$puppet_bootstrap_dir/files/apache/htdocs/missing.html"], File["$puppet_bootstrap_dir/files/apache/vhosts/git"], File["$puppet_bootstrap_dir/files/apache/vhosts/lists"], File["$puppet_bootstrap_dir/files/apache/vhosts/mail"], File["$puppet_bootstrap_dir/files/apache/vhosts/nagios"], File["$puppet_bootstrap_dir/files/apache/vhosts/wiki"], File["$puppet_bootstrap_dir/files/etc/aliases"], File["$puppet_bootstrap_dir/files/etc/nagios3/htpasswd.users"], File["$puppet_bootstrap_dir/files/etc/nginx/$domain"], File["$puppet_bootstrap_dir/files/etc/nginx/$domain"], File["$puppet_bootstrap_dir/files/etc/keys/ssl"], File["$puppet_bootstrap_dir/files/etc/postfix/tls_policy"], ], } # reference to admin vserver host { "$hostname": ensure => present, ip => "127.0.0.1", host_aliases => [ "$hostname.$domain", "puppet.$domain", "puppet" ], } # puppet submodules script file { "/usr/local/sbin/puppet-add-sarava-submodules": source => "files/puppet-add-sarava-submodules", owner => "root", group => "root", mode => 0755, ensure => present, require => Package["puppet"], } # execute the bootstrap script to download puppet modules exec { "/usr/local/sbin/bootstrap get-modules": creates => "$puppet_bootstrap_dir/modules/nodo", user => root, require => [ File["/usr/local/sbin/bootstrap"], File["$puppet_bootstrap_dir/modules"] ], timeout => 600, } # ensures puppet module nodo exists on system file { "$puppet_bootstrap_dir/modules/nodo": ensure => directory, require => Exec["/usr/local/sbin/bootstrap get-modules"], } # directories file { "$puppet_bootstrap_dir": ensure => directory, owner => "puppet", group => "puppet", mode => 0755, require => Package["puppet"], } file { [ "$puppet_bootstrap_dir/files", "$puppet_bootstrap_dir/manifests", "$puppet_bootstrap_dir/modules", "$puppet_bootstrap_dir/manifests/classes", "$puppet_bootstrap_dir/manifests/nodes", ]: ensure => directory, owner => "puppet", group => "puppet", mode => 0755, require => File["$puppet_bootstrap_dir"], } # files in $puppet_bootstrap_dir file { "$puppet_bootstrap_dir/puppet.conf": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => Package["puppet"], content => template("bootstrap/puppet/puppet.conf.erb"), } file { "$puppet_bootstrap_dir/fileserver.conf": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => Package["puppet"], content => template("bootstrap/puppet/fileserver.conf.erb"), } file { "$puppet_bootstrap_dir/auth.conf": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => Package["puppet"], content => template("bootstrap/puppet/auth.conf.erb"), } # files in $puppet_bootstrap_dir/manifests file { "$puppet_bootstrap_dir/manifests/site.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests"] ], content => template("bootstrap/puppet/site.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/modules.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests"] ], content => template("bootstrap/puppet/modules.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/nodes.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests"] ], content => template("bootstrap/puppet/nodes.pp.erb"), } # files in $puppet_bootstrap_dir/manifests/classes file { "$puppet_bootstrap_dir/manifests/classes/websites.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/classes"] ], content => template("bootstrap/puppet/websites.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/classes/users.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/classes"] ], content => template("bootstrap/puppet/users.pp.erb"), } # files in $puppet_bootstrap_dir/manifests/nodes file { "$puppet_bootstrap_dir/manifests/nodes/$hostname-server.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/nodes"] ], content => template("bootstrap/puppet/server.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/nodes/$hostname-master.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/nodes"] ], content => template("bootstrap/puppet/master.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/nodes/$hostname-proxy.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/nodes"] ], content => template("bootstrap/puppet/proxy.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/nodes/$hostname-web.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/nodes"] ], content => template("bootstrap/puppet/web.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/nodes/$hostname-storage.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/nodes"] ], content => template("bootstrap/puppet/storage.pp.erb"), } file { "$puppet_bootstrap_dir/manifests/nodes/$hostname-test.pp": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/manifests/nodes"] ], content => template("bootstrap/puppet/test.pp.erb"), } # files in $puppet_bootstrap_dir/files file { [ "$puppet_bootstrap_dir/files", "$puppet_bootstrap_dir/files/etc", "$puppet_bootstrap_dir/files/etc/nginx", "$puppet_bootstrap_dir/files/etc/nagios3", "$puppet_bootstrap_dir/files/postfix", "$puppet_bootstrap_dir/files/apache", "$puppet_bootstrap_dir/files/apache/vhosts", "$puppet_bootstrap_dir/files/apache/htdocs", "$puppet_bootstrap_dir/files/apache/htdocs/images", "$puppet_bootstrap_dir/files/keys", "$puppet_bootstrap_dir/files/keys/ssl", "$puppet_bootstrap_dir/files/shorewall", ]: ensure => directory, owner => "puppet", group => "puppet", mode => 0755, } file { "$puppet_bootstrap_dir/files/apache/htdocs/images/README.html": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/htdocs/images"] ], content => template("files/apache/htdocs/images/README.html"), } file { "$puppet_bootstrap_dir/files/apache/htdocs/index.html": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/htdocs"] ], content => template("files/apache/htdocs/index.html.erb"), } file { "$puppet_bootstrap_dir/files/apache/htdocs/missing.html": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/htdocs"] ], content => template("files/apache/htdocs/missing.html.erb"), } file { "$puppet_bootstrap_dir/files/apache/vhosts/git": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/vhosts"] ], content => template("files/apache/vhosts/git.erb"), } file { "$puppet_bootstrap_dir/files/apache/vhosts/lists": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/vhosts"] ], content => template("files/apache/vhosts/lists.erb"), } file { "$puppet_bootstrap_dir/files/apache/vhosts/mail": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/vhosts"] ], content => template("files/apache/vhosts/mail.erb"), } file { "$puppet_bootstrap_dir/files/apache/vhosts/nagios": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/vhosts"] ], content => template("files/apache/vhosts/nagios.erb"), } file { "$puppet_bootstrap_dir/files/apache/vhosts/wiki": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/apache/vhosts"] ], content => template("files/apache/vhosts/wiki.erb"), } file { "$puppet_bootstrap_dir/files/etc/aliases": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/etc"] ], content => template("files/etc/aliases.erb"), } file { "$puppet_bootstrap_dir/files/etc/nagios3/htpasswd.users": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/etc/nagios3.users"] ], content => template("files/etc/nagios3/htpasswd.users.erb"), } file { "$puppet_bootstrap_dir/files/etc/nginx/$domain": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/etc/nginx"] ], content => template("files/etc/nginx/domain.erb"), } file { "$puppet_bootstrap_dir/files/postfix/tls_policy": ensure => present, owner => "puppet", group => "puppet", mode => 0644, require => [ Package["puppet"], File["$puppet_bootstrap_dir/files/postfix"] ], content => template("files/postfix/tls_policy.erb"), } }