aboutsummaryrefslogtreecommitdiff
path: root/manifests
diff options
context:
space:
mode:
authordrebs <drebs@riseup.net>2011-03-11 14:53:39 -0300
committerdrebs <drebs@riseup.net>2011-03-11 14:53:39 -0300
commit01b2048dbf02ac726dabde5e846b9d6ac9aff0e6 (patch)
tree28f13f07a483a73ffcbfb25e4aba0c40f3d656bb /manifests
downloadpuppet-bootstrap-01b2048dbf02ac726dabde5e846b9d6ac9aff0e6.tar.gz
puppet-bootstrap-01b2048dbf02ac726dabde5e846b9d6ac9aff0e6.tar.bz2
initial recommit
Diffstat (limited to 'manifests')
-rw-r--r--manifests/bootstrap.pp356
-rw-r--r--manifests/gitosis.pp28
-rw-r--r--manifests/init.pp14
-rw-r--r--manifests/puppetmasterd.pp21
4 files changed, 419 insertions, 0 deletions
diff --git a/manifests/bootstrap.pp b/manifests/bootstrap.pp
new file mode 100644
index 0000000..d8bdbba
--- /dev/null
+++ b/manifests/bootstrap.pp
@@ -0,0 +1,356 @@
+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"),
+ }
+
+}
+
diff --git a/manifests/gitosis.pp b/manifests/gitosis.pp
new file mode 100644
index 0000000..45f63d3
--- /dev/null
+++ b/manifests/gitosis.pp
@@ -0,0 +1,28 @@
+class gitosis {
+ # directory for gitosis user and repositories
+ file { "/var/git":
+ ensure => directory,
+ mode => 0755,
+ owner => gitosis,
+ group => gitosis;
+ }
+
+ # the needed packages
+ package { [ "gitosis", "sudo", "git"]: ensure => installed; }
+
+ # alters the user's home dir
+ user { gitosis:
+ allowdupe => false,
+ comment => "git repository hosting,,,",
+ ensure => present,
+ home => "/var/git",
+ shell => "/bin/sh";
+ }
+
+ # tries to get rid of ugly directory structure
+ file { "/srv/gitosis":
+ ensure => absent,
+ force => true;
+ }
+ file { "/srv": ensure => absent; }
+}
diff --git a/manifests/init.pp b/manifests/init.pp
new file mode 100644
index 0000000..0204b57
--- /dev/null
+++ b/manifests/init.pp
@@ -0,0 +1,14 @@
+import "bootstrap.pp"
+
+$mysql_rootpw = "mysqlpass"
+$puppetmaster_db_password = "puppetpass"
+$first_user = "user"
+$first_user_password = "userpass"
+$first_user_sshkey = "usersshkey"
+$first_user_email = "usermail"
+
+$puppet_bootstrap_dir = "/var/local/puppet-bootstrap"
+
+include gitosis
+include puppetmasterd
+include bootstrap
diff --git a/manifests/puppetmasterd.pp b/manifests/puppetmasterd.pp
new file mode 100644
index 0000000..44681fc
--- /dev/null
+++ b/manifests/puppetmasterd.pp
@@ -0,0 +1,21 @@
+class puppetmasterd {
+ package { "puppetmaster": ensure => installed, }
+
+ # updates the puppet configuration dir with git repositories
+ # every 5 minutes.
+ cron { puppet-conf:
+ command => "git --git-dir=/etc/puppet/.git/ pull /var/git/repositories/puppet.git master && \
+ git --git-dir=/etc/puppet/.git/ --work-tree=/etc/puppet/ checkout -f",
+ user => root,
+ hour => '*',
+ minute => '*/5',
+ ensure => present,
+ }
+
+ # runs the service
+ service { "puppetmasterd":
+ ensure => stopped,
+ depends => Package["puppetmaster"],
+ }
+}
+