include puppet setup scripts
							parent
							
								
									ccf1a5466b
								
							
						
					
					
						commit
						941b3096e7
					
				
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,386 @@ | ||||||
|  | # Agent: sudo puppet agent --test | ||||||
|  | 
 | ||||||
|  | class odoo { | ||||||
|  | 
 | ||||||
|  | 	user { odoo: | ||||||
|  | 		ensure => present, | ||||||
|  | 		shell => '/bin/bash', | ||||||
|  | 		managehome => 'true', | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  |     $sudo_entry="odoo ALL=NOPASSWD: ALL" | ||||||
|  |     sudo::conf { 'sudo_odoo': | ||||||
|  |         priority => 10, | ||||||
|  |         content  => $sudo_entry, | ||||||
|  |     } | ||||||
|  | 	 | ||||||
|  |     ssh_authorized_key { "andreas@odoo": | ||||||
|  |         user => odoo, | ||||||
|  |         type => 'ssh-rsa', | ||||||
|  |         #key  => 'AAAAB3NzaC1yc2EAAAABIwAAAQEAtd8TfqMUhFXsHuWHL0NBPem5V4eLdG4SKe2xTfIMFL7xGGvXjox7BDncUVJ/MSnYS5aWRYEjz1QY80Kj6KIpxqh8imW2EscLKHzMfcOEwzQh+7lcC/nexMrjlPOS2LyAh3KHTqUKbdxq4a6KuGqoydIY6u/pRBDgEAh5y0/YLJwIjTIDmW/lTB6ZlcXIMPTY05QsPG/adL76rN2TowG8qvP45uLoH9EjZ//9nes3lyjegsia2uJ4mVlvA3vEpzRC2Ku2F69ADUV7SVOyzvOvPi6l/RpbXHYJO5XWxyn2NrxZWPGuUCF5+JL3KYElIBTTTTB3gDWzWQAVF/QKXi1eiw==', | ||||||
|  |         key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDBIg6NZV4tTs+J5qUP4/zQAn+Xi3muKqbaSDV8yYm50mH77PcLwbkZVlxdF0/OFCl5f5FCNp4Ag4Px97M35Nv+BweOTCZNMKOHmvtXY1fCRUQnk6ca3NlipImppL0U47SUzt9KkNIsz0FWxLu74LANgxKwrf8Hgim8Nkq8WrlvuoJCqf+542N15cGrf/9eD6yRm7AmdFi7VIYrP4m7TPbXJBGX+cXOo0bKTyaq8mtinbUN5UCi/eJ08wYkm/CGVxL+9cm6HOABw332A8OadAliCZBWqhFT0rBKdoWLxBbTsILALskrddpKLwBLOUIU79YeT0OfNpLCnVi8u67X9inl', | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     ssh_authorized_key { "stefan@odoo": | ||||||
|  |         user => odoo, | ||||||
|  |         type => 'ssh-rsa', | ||||||
|  |         key  => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDlOWE1x6FF4VsHTRSZ31iQsASlRLqMdIhyIY52ENM46uTOTEOENiyeFrQkRKZfIsic3TBg+u7HedzsCRl4U9Cy9boX46bkeFi1qZFB3iHkcIFDrlqQo0OBIlidNkuQ8fiDVVhjSJGzwRRiwIRp5f7vkBuYAhLMqgOXESXUhKl9RZFYaTAW4fEAQ1rqVAKibwiPaNpwh0zj4GeX8Ab2+NBNfKt8MslvEEbNbUCViH6ZS7DR66p+gYWTtP+Rzyd1F92pmoHam7Lqsk4Qc+5G7HHzDJuidsiu5UQiVaPu2KhzuX7fKEnRC0vDkknwuyYf7hUeuK8j0GpDpDmfWmo36Cyz', | ||||||
|  |     }  | ||||||
|  | 
 | ||||||
|  |     ssh_authorized_key { "kumar@odoo": | ||||||
|  |         user => odoo, | ||||||
|  |         type => 'ssh-rsa', | ||||||
|  |         key  => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDA8tPgqD6ZRixJGGypzKgeVUGnK5mGVfT25qQYFChTsjXVeCgfCNnN7IfnN8H7ive+du9Cz/G10hsH4v/1HZ8w0KaEWieWyiBjWDIoOJIdw3mjeLA2G0HR7aZ1Kal0VMh1zteGiHKBro7ASMEn58OVOKzxrGK0s/dTiZ/pAu0yyoD9CDvqAfhhJm+EAh2E9/CG3QfhndSkHZen/AYxhIek1Wv5RwRneKns5iDs/MJyjC9VFuZCVyYHIzshzHtHkAH7O1hxd++pKuvNiI8w0CoeTr+DwpwZRMEpsohIygyRkEgYgVQlGyxf7chHy6Mip91ljzHKNCAVG5VDNtY7ij5P', | ||||||
|  |     }  | ||||||
|  | 
 | ||||||
|  |     class { 'postgresql::server':  | ||||||
|  |         listen_addresses           => '*', | ||||||
|  |         locale => 'de_AT.UTF-8', | ||||||
|  |         encoding => 'UTF8', | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     # workaround for http://projects.puppetlabs.com/issues/4695 | ||||||
|  |     # when PostgreSQL is installed with SQL_ASCII encoding instead of UTF8 | ||||||
|  |     exec { 'utf8 postgres': | ||||||
|  |        command => 'sudo -u postgres pg_dropcluster --stop 9.1 main ; pg_createcluster --start --locale en_US.UTF-8 9.1 main', | ||||||
|  |        unless  => 'sudo -u postgres psql -t -c "\l" | grep template1 | grep -q UTF', | ||||||
|  |        require => Class['postgresql::server'], | ||||||
|  |        path    => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'], | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   file { "/var/log/odoo": | ||||||
|  |       owner => 'root', | ||||||
|  |       group => 'root', | ||||||
|  |       mode  => '0777', | ||||||
|  |       ensure  => "directory", | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |     package { ['antiword', | ||||||
|  |                         'bzr', | ||||||
|  |                         'git', | ||||||
|  |                         'nginx', | ||||||
|  |                         'poppler-utils', | ||||||
|  |                         'postgresql', | ||||||
|  |                         'python-dateutil', | ||||||
|  |                         'python-decorator', | ||||||
|  |                         'python-docutils', | ||||||
|  |                         'python-egenix-mxdatetime', | ||||||
|  |                         'python-feedparser', | ||||||
|  |                         'python-gevent', | ||||||
|  |                         'python-imaging', | ||||||
|  |                         'python-jinja2', | ||||||
|  |                         'python-ldap', | ||||||
|  |                         'python-libxslt1', | ||||||
|  |                         'python-lxml', | ||||||
|  |                         'python-mako', | ||||||
|  |                         'python-matplotlib', | ||||||
|  |                         'python-mock', | ||||||
|  |                         'python-openid', | ||||||
|  |                         'python-openssl', | ||||||
|  |                         'python-paramiko', | ||||||
|  |                         'python-pdftools', | ||||||
|  |                         'python-pip', | ||||||
|  |                         'python-psutil', | ||||||
|  |                         'python-psycopg2', | ||||||
|  |                         'python-pybabel', | ||||||
|  |                         'python-pychart', | ||||||
|  |                         'python-pydot', | ||||||
|  |                         'python-pyparsing', | ||||||
|  |                         'python-pypdf', | ||||||
|  |                         'python-reportlab-accel', | ||||||
|  |                         'python-reportlab', | ||||||
|  |                        # 'python-requests', ist bei debian version 0.12.1 => daher install mit pip | ||||||
|  |                         'python-setuptools', | ||||||
|  |                         'python-simplejson', | ||||||
|  |                         'python-tz', | ||||||
|  |                         'python-unittest2', | ||||||
|  |                         'python-vatnumber', | ||||||
|  |                         'python-vobject', | ||||||
|  |                         'python-webdav', | ||||||
|  |                         'python-werkzeug', | ||||||
|  |                         'python-xlwt', | ||||||
|  |                         'python-yaml', | ||||||
|  |                         'python-zsi', | ||||||
|  |                         'wget', | ||||||
|  |                         # für wkhtmltox | ||||||
|  |                         'xfonts-base', | ||||||
|  |                         'xfonts-75dpi', | ||||||
|  |                         ]: | ||||||
|  |                 ensure => present, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	file { 'wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb': | ||||||
|  | 		name => "/tmp/wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb", | ||||||
|  | 		owner => root, | ||||||
|  | 		group => root, | ||||||
|  | 		source => "puppet:///modules/odoo/wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb" | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  |     package { 'wkhtmltox': | ||||||
|  |     	provider => dpkg, | ||||||
|  |         ensure => installed, | ||||||
|  |         source => "/tmp/wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb", | ||||||
|  |         require => File['wkhtmltox-0.12.2.1_linux-wheezy-amd64.deb'], | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     package {['passlib', | ||||||
|  |               'psycogreen', | ||||||
|  |               'gdata', | ||||||
|  |               'requests']: | ||||||
|  |         ensure   => installed, | ||||||
|  |         provider => 'pip', | ||||||
|  |         require => Package['python-pip'], | ||||||
|  |      | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     # Update python lib distribute if required ("sudo easy_install -U distribute") | ||||||
|  |     $upg_cmd = "sudo easy_install -U distribute" | ||||||
|  |     $unless_upg_cmd = "sudo pip freeze | grep distribute==0.7" | ||||||
|  |     exec { 'upgrade_distribute': | ||||||
|  |         command => $upg_cmd, | ||||||
|  |         unless  => $unless_upg_cmd, | ||||||
|  |         path    => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'], | ||||||
|  |     }     | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     # TODO, benötigt: "sudo easy_install -U distribute" | ||||||
|  |     package {'gevent_psycopg2': | ||||||
|  |         ensure   => present, | ||||||
|  |         provider => 'pip', | ||||||
|  |         require => [Package['python-pip'],Package['python-psycopg2'],Exec['upgrade_distribute'], Class['postgresql::server']], | ||||||
|  |      | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     # main directory for odoo backups | ||||||
|  | 	file { "/var/pgdump": | ||||||
|  | 	    owner => 'root', | ||||||
|  | 	    group => 'root', | ||||||
|  | 	    mode  => '0777', | ||||||
|  | 	    ensure => "directory", | ||||||
|  | 	}     | ||||||
|  |    | ||||||
|  |   	# Postfix setup | ||||||
|  | 	class { '::postfix::server': | ||||||
|  | 	  	myhostname              => 'odoo.allomed.at', | ||||||
|  | 	  	mydomain                => 'allomed.at', | ||||||
|  | 	  	mydestination           => "\$myhostname, localhost.\$mydomain, localhost, $fqdn", | ||||||
|  | 	  	inet_interfaces         => 'localhost', | ||||||
|  | 	}   | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | define odoo::instance ($db_pw,$ssl = false, $servername, $odooport, $odooport_logpolling) { | ||||||
|  |      | ||||||
|  |     $instance = $title | ||||||
|  | 
 | ||||||
|  |     include odoo | ||||||
|  | 
 | ||||||
|  | 	user {$instance: | ||||||
|  | 		ensure => present, | ||||||
|  | 		groups => ["sudo"], | ||||||
|  | 		shell => '/bin/bash', | ||||||
|  | 		managehome => 'true', | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	$key_andreas="andreas@$instance"  | ||||||
|  |     ssh_authorized_key { $key_andreas: | ||||||
|  |         user => $instance, | ||||||
|  |         type => 'ssh-rsa', | ||||||
|  |         #key  => 'AAAAB3NzaC1yc2EAAAABIwAAAQEAtd8TfqMUhFXsHuWHL0NBPem5V4eLdG4SKe2xTfIMFL7xGGvXjox7BDncUVJ/MSnYS5aWRYEjz1QY80Kj6KIpxqh8imW2EscLKHzMfcOEwzQh+7lcC/nexMrjlPOS2LyAh3KHTqUKbdxq4a6KuGqoydIY6u/pRBDgEAh5y0/YLJwIjTIDmW/lTB6ZlcXIMPTY05QsPG/adL76rN2TowG8qvP45uLoH9EjZ//9nes3lyjegsia2uJ4mVlvA3vEpzRC2Ku2F69ADUV7SVOyzvOvPi6l/RpbXHYJO5XWxyn2NrxZWPGuUCF5+JL3KYElIBTTTTB3gDWzWQAVF/QKXi1eiw==', | ||||||
|  |         key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDBIg6NZV4tTs+J5qUP4/zQAn+Xi3muKqbaSDV8yYm50mH77PcLwbkZVlxdF0/OFCl5f5FCNp4Ag4Px97M35Nv+BweOTCZNMKOHmvtXY1fCRUQnk6ca3NlipImppL0U47SUzt9KkNIsz0FWxLu74LANgxKwrf8Hgim8Nkq8WrlvuoJCqf+542N15cGrf/9eD6yRm7AmdFi7VIYrP4m7TPbXJBGX+cXOo0bKTyaq8mtinbUN5UCi/eJ08wYkm/CGVxL+9cm6HOABw332A8OadAliCZBWqhFT0rBKdoWLxBbTsILALskrddpKLwBLOUIU79YeT0OfNpLCnVi8u67X9inl', | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     $key_stefan="stefan@$instance"  | ||||||
|  |     ssh_authorized_key { $key_stefan: | ||||||
|  |         user => $instance, | ||||||
|  |         type => 'ssh-rsa', | ||||||
|  |         key  => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDlOWE1x6FF4VsHTRSZ31iQsASlRLqMdIhyIY52ENM46uTOTEOENiyeFrQkRKZfIsic3TBg+u7HedzsCRl4U9Cy9boX46bkeFi1qZFB3iHkcIFDrlqQo0OBIlidNkuQ8fiDVVhjSJGzwRRiwIRp5f7vkBuYAhLMqgOXESXUhKl9RZFYaTAW4fEAQ1rqVAKibwiPaNpwh0zj4GeX8Ab2+NBNfKt8MslvEEbNbUCViH6ZS7DR66p+gYWTtP+Rzyd1F92pmoHam7Lqsk4Qc+5G7HHzDJuidsiu5UQiVaPu2KhzuX7fKEnRC0vDkknwuyYf7hUeuK8j0GpDpDmfWmo36Cyz', | ||||||
|  |     }  | ||||||
|  |      | ||||||
|  |     $key_kumar="kumar@$instance"  | ||||||
|  |     ssh_authorized_key { $key_kumar: | ||||||
|  |         user => $instance, | ||||||
|  |         type => 'ssh-rsa', | ||||||
|  |         key  => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDA8tPgqD6ZRixJGGypzKgeVUGnK5mGVfT25qQYFChTsjXVeCgfCNnN7IfnN8H7ive+du9Cz/G10hsH4v/1HZ8w0KaEWieWyiBjWDIoOJIdw3mjeLA2G0HR7aZ1Kal0VMh1zteGiHKBro7ASMEn58OVOKzxrGK0s/dTiZ/pAu0yyoD9CDvqAfhhJm+EAh2E9/CG3QfhndSkHZen/AYxhIek1Wv5RwRneKns5iDs/MJyjC9VFuZCVyYHIzshzHtHkAH7O1hxd++pKuvNiI8w0CoeTr+DwpwZRMEpsohIygyRkEgYgVQlGyxf7chHy6Mip91ljzHKNCAVG5VDNtY7ij5P', | ||||||
|  |     }     | ||||||
|  |      | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     $sudo_entry="$instance ALL = (root) NOPASSWD: /etc/init.d/odoo-server-$instance, /usr/sbin/service odoo-server-$instance *" | ||||||
|  |     sudo::conf { $instance: | ||||||
|  |         priority => 10, | ||||||
|  |         content  => $sudo_entry, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     # Logfile | ||||||
|  |     file { "/var/log/odoo/$instance": | ||||||
|  |         owner => $instance, | ||||||
|  |         group => $instance, | ||||||
|  |         mode  => '0700', | ||||||
|  |         ensure => "directory", | ||||||
|  |         #require  => file['/var/log/odoo'], | ||||||
|  |     } | ||||||
|  |    | ||||||
|  |     file { "/home/$instance/logs": | ||||||
|  |         ensure => "link", | ||||||
|  |         owner => $instance, | ||||||
|  |         group => $instance, | ||||||
|  |         mode  => '0600',         | ||||||
|  |         target => "/var/log/odoo/$instance/odoo-server.log", | ||||||
|  |     } | ||||||
|  |    | ||||||
|  | 
 | ||||||
|  |     $require_log = "file[/var/log/odoo/$instance]" | ||||||
|  |     file { "/var/log/odoo/$instance/odoo-server.log": | ||||||
|  |         owner => $instance, | ||||||
|  |         group => $instance, | ||||||
|  |         mode  => '0600', | ||||||
|  |         ensure  => present, | ||||||
|  |         require  => $require_log, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 	$logrotate_file = "/etc/logrotate.d/odoo-$instance" | ||||||
|  | 	file { $logrotate_file: | ||||||
|  |         owner => 'root', | ||||||
|  |         group => 'root', | ||||||
|  |         mode  => '0644', | ||||||
|  |         ensure  => present,	 | ||||||
|  | 		content => template('odoo/logrotate.erb'), | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	# init file | ||||||
|  | 	# sudo ln -s /opt/odoo/odoo/config/odoo-server.init /etc/init.d/odoo-server | ||||||
|  |     $init_odoo_notify = "Service[odoo-server-$instance]"	 | ||||||
|  |   	file { "/etc/init.d/odoo-server-$instance": | ||||||
|  |       	owner => $instance, | ||||||
|  |       	group => $instance, | ||||||
|  |       	mode  => '0755', | ||||||
|  | 		ensure  => present, | ||||||
|  | 		content => template('odoo/odoo-server.init.erb'), | ||||||
|  |         notify => $init_odoo_notify,		 | ||||||
|  |   	} | ||||||
|  |    | ||||||
|  |   file { "/home/$instance/restart.sh": | ||||||
|  |       owner => $instance, | ||||||
|  |       group => $instance, | ||||||
|  |       mode  => '0755', | ||||||
|  | 	  ensure  => present, | ||||||
|  |       content => template('odoo/restart.sh.erb'), | ||||||
|  |   }   | ||||||
|  |    | ||||||
|  |     file { "/home/$instance/ext.git": | ||||||
|  |         owner => $instance, | ||||||
|  |         group => $instance, | ||||||
|  |         mode  => '0600', | ||||||
|  | 		ensure => "directory", | ||||||
|  | 		recurse => true, | ||||||
|  | 		require => Package[git], | ||||||
|  |     } | ||||||
|  |      | ||||||
|  | 	file { "/home/$instance/ext": | ||||||
|  | 	    owner => $instance, | ||||||
|  | 	    group => $instance, | ||||||
|  | 	    mode  => '0700', | ||||||
|  | 	    ensure => "directory", | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  |     $git_requires = "File[/home/$instance/ext.git]" | ||||||
|  | 	$git_create_cmd = "sudo -u $instance git init --bare /home/$instance/ext.git" | ||||||
|  |     $git_unless_cmd = "sudo -u $instance test -e /home/$instance/ext.git/HEAD" | ||||||
|  |     $git_repo = "git_repo_$instance" | ||||||
|  |     exec { $git_repo: | ||||||
|  |         command => $git_create_cmd, | ||||||
|  |         unless  => $git_unless_cmd, | ||||||
|  |         path    => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'], | ||||||
|  |         require => $git_requires, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   file { "/home/$instance/ext.git/hooks/post-receive": | ||||||
|  |       owner => $instance, | ||||||
|  |       group => $instance, | ||||||
|  |       mode  => '0700', | ||||||
|  | 			ensure => present, | ||||||
|  | 			content => "#!/bin/bash | ||||||
|  | git --work-tree=/home/$instance/ext --git-dir=/home/$instance/ext.git checkout -f", | ||||||
|  |       require => Exec[$git_repo], | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	# backup | ||||||
|  |       file { "/home/$instance/odoo-backup.sh": | ||||||
|  |           owner => $instance, | ||||||
|  |           group => $instance, | ||||||
|  |           mode  => '0700', | ||||||
|  |           ensure  => present, | ||||||
|  |           content => template('odoo/odoo-backup.sh.erb'), | ||||||
|  |       }	 | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	$cron_cmd = "/home/$instance/odoo-backup.sh" | ||||||
|  | 	$cron_require = "file[/home/$instance/odoo-backup.sh]" | ||||||
|  | 	$odoo_backup = "odoo-backup-$instance" | ||||||
|  | 	cron { $odoo_backup: | ||||||
|  | 		command => $cron_cmd, | ||||||
|  | 		user    => $instance, | ||||||
|  | 		hour    => 1, | ||||||
|  | 		minute  => 30, | ||||||
|  | 		require => $cron_require, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	# dictionaly for odoo backups | ||||||
|  |   	file { "/var/pgdump/$instance": | ||||||
|  |       	owner => $instance, | ||||||
|  |       	group => $instance, | ||||||
|  |       	mode  => '0700', | ||||||
|  | 		ensure => "directory", | ||||||
|  |   	} | ||||||
|  | 
 | ||||||
|  | 	$odoo_service = "odoo-server-$instance" | ||||||
|  | 	$odoo_service_req = "file[/etc/init.d/odoo-server-$instance]" | ||||||
|  | 	# Run server | ||||||
|  | 	service {$odoo_service: | ||||||
|  | 		ensure => running, | ||||||
|  | 		require => $odoo_service_req, | ||||||
|  | 		enable => true, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  |     # Postgresql User | ||||||
|  |     # sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true | ||||||
|  |     postgresql::server::role { "$instance": | ||||||
|  |         password_hash => postgresql_password($instance, $db_pw), | ||||||
|  |         createdb  => true, | ||||||
|  |         require => Exec['utf8 postgres'], | ||||||
|  |     }     | ||||||
|  |      | ||||||
|  |     # NGINX | ||||||
|  | 	# Run server | ||||||
|  | 	service {'nginx': | ||||||
|  | 		ensure => running, | ||||||
|  | 		require => Package['nginx'], | ||||||
|  | 		enable => true, | ||||||
|  | 	}     | ||||||
|  |          | ||||||
|  |     if str2bool("$ssl") { | ||||||
|  |         $key_file_test = "test -e /etc/nginx/ssl/$instance.key" | ||||||
|  |         $key_file_cmd = "sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/$instance.key -out /etc/nginx/ssl/$instance.crt -subj \"/C=AT/ST=Vienna/L=Vienna/O= Security/OU=IT Department/CN=dummy\"" | ||||||
|  |         $certname = "ssl_cert_$instance" | ||||||
|  |         exec { $certname: | ||||||
|  |             command => $key_file_cmd, | ||||||
|  |             unless  => $key_file_test, | ||||||
|  |             path    => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'], | ||||||
|  |             notify => Service['nginx'], | ||||||
|  |         }         | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     # Conf file | ||||||
|  |     file { "/etc/nginx/conf.d/odoo-$instance.conf": | ||||||
|  |         owner => 'www-data', | ||||||
|  |         group => 'www-data', | ||||||
|  |         mode  => '0600', | ||||||
|  |         ensure  => present, | ||||||
|  |         content => template('odoo/odoo.nginx.erb'), | ||||||
|  |         notify => Service['nginx'], | ||||||
|  |     }     | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | /var/log/odoo/<%= @instance %>/*.log { | ||||||
|  |     copytruncate | ||||||
|  |     missingok | ||||||
|  |     notifempty | ||||||
|  |     size 5M | ||||||
|  |     rotate 10 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,33 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | #dump the OpenERP DB (postgreSQL) | ||||||
|  | #author: Camadeus GmbH | ||||||
|  | 
 | ||||||
|  | hostname=`/bin/hostname` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | dbnames=`psql -d postgres -c "SELECT datname FROM pg_database WHERE NOT datistemplate AND datname <> 'postgres' AND datname like '<%= @instance %>%'" --tuples-only` | ||||||
|  | 
 | ||||||
|  | # Dump DBs | ||||||
|  | for db in $dbnames | ||||||
|  | do | ||||||
|  |  echo "creating backup for db: " $db | ||||||
|  |  date=`date +"%Y%m%d_%H%M%N"` | ||||||
|  |  filename="/var/pgdump/<%= @instance %>/${hostname}_${db}_${date}.sql" | ||||||
|  |  pg_dump -E UTF-8 -F p -b -f $filename $db | ||||||
|  |  chmod 600 $filename | ||||||
|  |  gzip $filename  | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ########################################## | ||||||
|  | ## Housekeeping | ||||||
|  | ########################################## | ||||||
|  | for file in `find /var/pgdump/<%= @instance %> -mtime +30 -type f -name '*.sql.gz'` | ||||||
|  | do | ||||||
|  |  echo "deleting: " $file | ||||||
|  |  rm $file | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | [options] | ||||||
|  | addons_path = /opt/odoo/ext/odoo/addons,/opt/odoo/ext/custom-addons | ||||||
|  | admin_passwd = <%= @master_pw %> | ||||||
|  | 
 | ||||||
|  | db_host = False | ||||||
|  | db_name = False | ||||||
|  | db_password = False | ||||||
|  | db_port = False | ||||||
|  | db_user = odoo | ||||||
|  | 
 | ||||||
|  | debug_mode = False | ||||||
|  | list_db = True | ||||||
|  | log_level = error | ||||||
|  | logfile = /var/log/odoo/<%= @master_pw %>/odoo-server.log | ||||||
|  | 
 | ||||||
|  | max_cron_threads = 1 | ||||||
|  | workers = 1 | ||||||
|  | 
 | ||||||
|  | #xmlrpc_interface = 127.0.0.1 | ||||||
|  | xmlrpc_port = 8069 | ||||||
|  | 
 | ||||||
|  | timezone = Europe/Brussels | ||||||
|  | 
 | ||||||
|  | # 5 min | ||||||
|  | #limit_time_cpu  = 300 | ||||||
|  | # 10 min | ||||||
|  | #limit_time_real = 600 | ||||||
|  | 
 | ||||||
|  | # input DMI: | ||||||
|  | limit_time_cpu  = 3000 | ||||||
|  | limit_time_real = 6000 | ||||||
|  | 
 | ||||||
|  | # if DB > 150MB, otherwise "AccessDenied" error occurs | ||||||
|  | # 10 GB | ||||||
|  | limit_memory_hard = 10000000000 | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,91 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | ### BEGIN INIT INFO | ||||||
|  | # Provides:             odoo-server-<%= @instance %> | ||||||
|  | # Required-Start:       $remote_fs $syslog | ||||||
|  | # Required-Stop:        $remote_fs $syslog | ||||||
|  | # Should-Start:         $network | ||||||
|  | # Should-Stop:          $network | ||||||
|  | # Default-Start:        2 3 4 5 | ||||||
|  | # Default-Stop:         0 1 6 | ||||||
|  | # Short-Description:    Enterprise Resource Management software | ||||||
|  | # Description:          Open ERP is a complete ERP and CRM software. | ||||||
|  | ### END INIT INFO | ||||||
|  | 
 | ||||||
|  | PATH=/bin:/sbin:/usr/bin:/usr/local/bin | ||||||
|  | DAEMON=/home/<%= @instance %>/ext/ext/odoo/odoo.py | ||||||
|  | NAME=odoo-server-<%= @instance %> | ||||||
|  | DESC=odoo-server-<%= @instance %> | ||||||
|  | WORKING_DIR=/home/<%= @instance %>/ext/ext/odoo | ||||||
|  | 
 | ||||||
|  | FILTER="^<%= @instance %>" | ||||||
|  | # Specify the user name (Default: openerp). | ||||||
|  | USER=<%= @instance %> | ||||||
|  | 
 | ||||||
|  | # Specify an alternate config file (Default: /etc/openerp-server.conf). | ||||||
|  | CONFIGFILE="/home/<%= @instance %>/ext/ext/config/odoo-server.conf" | ||||||
|  | 
 | ||||||
|  | PIDFILE=/var/run/$NAME.pid | ||||||
|  | LOGFILE=/var/log/odoo/<%= @instance %>/odoo-server.log | ||||||
|  | 
 | ||||||
|  | # Additional options that are passed to the Daemon. | ||||||
|  | DAEMON_OPTS="-c $CONFIGFILE --db-filter $FILTER --xmlrpc-port <%= @odooport %> --longpolling-port <%= @odooport_logpolling %> --logfile $LOGFILE" | ||||||
|  | 
 | ||||||
|  | [ -x $DAEMON ] || exit 0 | ||||||
|  | [ -f $CONFIGFILE ] || exit 0 | ||||||
|  | 
 | ||||||
|  | checkpid() { | ||||||
|  |     [ -f $PIDFILE ] || return 1 | ||||||
|  |     pid=`cat $PIDFILE` | ||||||
|  |     [ -d /proc/$pid ] && return 0 | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Required, otherwise there are problems with sudoers-File, | ||||||
|  | # see file "Odoo_sudo_Startup_Error_20510316.odt" on Share | ||||||
|  | export LOGNAME=<%= @instance %> | ||||||
|  | 
 | ||||||
|  | case "${1}" in | ||||||
|  |         start) | ||||||
|  |                 echo -n "Starting ${DESC}: " | ||||||
|  | 
 | ||||||
|  |                 start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ | ||||||
|  |                         --chuid ${USER} --background --make-pidfile \ | ||||||
|  |                         --exec ${DAEMON} -d $WORKING_DIR -- ${DAEMON_OPTS} | ||||||
|  | 
 | ||||||
|  |                 echo "${NAME}." | ||||||
|  |                 ;; | ||||||
|  | 
 | ||||||
|  |         stop) | ||||||
|  |                 echo -n "Stopping ${DESC}: " | ||||||
|  | 
 | ||||||
|  |                 start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \ | ||||||
|  |                         --oknodo | ||||||
|  | 
 | ||||||
|  |                 echo "${NAME}." | ||||||
|  |                 ;; | ||||||
|  | 
 | ||||||
|  |         restart|force-reload) | ||||||
|  |                 echo -n "Restarting ${DESC}: " | ||||||
|  | 
 | ||||||
|  |                 start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \ | ||||||
|  |                         --oknodo | ||||||
|  | 
 | ||||||
|  |                 sleep 1 | ||||||
|  | 
 | ||||||
|  |                 start-stop-daemon --start --quiet --pidfile ${PIDFILE} \ | ||||||
|  |                         --chuid ${USER} --background --make-pidfile \ | ||||||
|  |                         --exec ${DAEMON} -d $WORKING_DIR -- ${DAEMON_OPTS} | ||||||
|  | 
 | ||||||
|  |                 echo "${NAME}." | ||||||
|  |                 ;; | ||||||
|  | 
 | ||||||
|  |         *) | ||||||
|  |                 N=/etc/init.d/${NAME} | ||||||
|  |                 echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2 | ||||||
|  |                 exit 1 | ||||||
|  |                 ;; | ||||||
|  | esac | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,78 @@ | ||||||
|  | <% if ssl == true %>    | ||||||
|  | server { | ||||||
|  |     listen         80; | ||||||
|  |     server_name   <%= @servername %>; | ||||||
|  |     return 301 https://$host$request_uri; | ||||||
|  | } | ||||||
|  | <% end %>    | ||||||
|  | 
 | ||||||
|  | # Should be higher for DMI! | ||||||
|  | upstream odoo-server-<%= @instance %> { | ||||||
|  |     server 127.0.0.1:<%= @odooport %> fail_timeout=3000s; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | server { | ||||||
|  | 		<% if ssl == true %>    | ||||||
|  |     listen 443 ssl; | ||||||
|  | 		<% else %> | ||||||
|  | 		listen      80; | ||||||
|  | 		<% end %> | ||||||
|  | 
 | ||||||
|  |     server_name   <%= @servername %>; | ||||||
|  | 
 | ||||||
|  |     # Specifies the maximum accepted body size of a client request, | ||||||
|  |     # as indicated by the request header Content-Length. | ||||||
|  |     client_max_body_size 200m; | ||||||
|  | 
 | ||||||
|  |     # log files | ||||||
|  |     access_log    /var/log/nginx/odoo-access-<%= @instance %>.log; | ||||||
|  |     error_log    /var/log/nginx/odoo-error-<%= @instance %>.log; | ||||||
|  | 
 | ||||||
|  |     # increase proxy buffer to handle some OpenERP web requests | ||||||
|  |     proxy_buffers 16 64k; | ||||||
|  |     proxy_buffer_size 128k; | ||||||
|  | 
 | ||||||
|  | 	<% if ssl == true %> | ||||||
|  |     # SSL config | ||||||
|  |     ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2; | ||||||
|  |     ssl_ciphers         HIGH:!aNULL:!MD5;	 | ||||||
|  |      | ||||||
|  | 	   <% if servername =~ /.*camadeus.at$/ %> | ||||||
|  |     ssl_certificate     /etc/nginx/ssl/camadeus.at.crt; | ||||||
|  |     ssl_certificate_key /etc/nginx/ssl/camadeus.at.key;	       | ||||||
|  | 	   <% else %> | ||||||
|  |     ssl_certificate     /etc/nginx/ssl/<%= @instance %>.crt; | ||||||
|  |     ssl_certificate_key /etc/nginx/ssl/<%= @instance %>.key; | ||||||
|  |         <% end %> | ||||||
|  | 	<% end %> | ||||||
|  | 
 | ||||||
|  |     location / { | ||||||
|  |         proxy_pass    http://odoo-server-<%= @instance %>; | ||||||
|  |         # force timeouts if the backend dies | ||||||
|  |         proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; | ||||||
|  |         proxy_read_timeout 300s; | ||||||
|  |          | ||||||
|  |         # set headers | ||||||
|  |         proxy_set_header Host $host; | ||||||
|  |         proxy_set_header X-Real-IP $remote_addr; | ||||||
|  |         proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; | ||||||
|  | 
 | ||||||
|  |         # Let the OpenERP web service know that we're using HTTPS, otherwise | ||||||
|  |         # it will generate URL using http:// and not https:// | ||||||
|  |         # proxy_set_header X-Forwarded-Proto https; | ||||||
|  | 
 | ||||||
|  |         # by default, do not forward anything | ||||||
|  |         proxy_redirect off; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     # cache some static data in memory for 60mins. | ||||||
|  |     # under heavy load this should relieve stress on the OpenERP web interface a bit. | ||||||
|  |     location ~* /web/static/ { | ||||||
|  |         proxy_cache_valid 200 60m; | ||||||
|  |         proxy_buffering    on; | ||||||
|  |         expires 864000; | ||||||
|  |         proxy_pass http://odoo-server-<%= @instance %>; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # info:   restart Odoo server | ||||||
|  | # author: Camadeus GmbH | ||||||
|  | 
 | ||||||
|  | sudo /etc/init.d/odoo-server-<%= @instance %> restart | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | class { 'odoo': } | ||||||
|  | @ -0,0 +1,42 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | HOST='tbd' | ||||||
|  | 
 | ||||||
|  | if [ $# -lt 1 ] || [ $# -gt 1 ]; then | ||||||
|  |     echo "Usage: ./setup_server.sh <init|update>" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "Are you sure? [Press Y to confirm!]" | ||||||
|  | read ANSWER | ||||||
|  | 
 | ||||||
|  | if [ "$ANSWER" != "Y" ]; then | ||||||
|  |     echo "Ok, good bye!" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | TYPE=$1 | ||||||
|  | USER=root | ||||||
|  | 
 | ||||||
|  | if [ "$TYPE" = "init" ]; then | ||||||
|  | 	ssh ${USER}@$HOST "sudo echo '$HOST' > /etc/hostname; sudo /etc/init.d/hostname.sh start; sudo apt-get update; sudo apt-get install puppet;" | ||||||
|  | 	ssh ${USER}@${HOST} "sudo apt-get install rsync" | ||||||
|  | 	ssh ${USER}@${HOST} "sudo puppet module install puppetlabs-postgresql" | ||||||
|  | 	ssh ${USER}@${HOST} "sudo puppet module install saz-sudo" | ||||||
|  | 	ssh ${USER}@${HOST} "sudo puppet module install thias-postfix" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$TYPE" = "update" ]; then | ||||||
|  | 	USER=odoo | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Copy to server | ||||||
|  | rsync -av --copy-links "site.pp" "${USER}@${HOST}:/tmp/site.pp" | ||||||
|  | rsync -arv --copy-links "modules" "${USER}@${HOST}:/tmp" | ||||||
|  | 
 | ||||||
|  | ssh ${USER}@${HOST} "sudo mv -f /tmp/site.pp /etc/puppet/manifests/site.pp" | ||||||
|  | ssh ${USER}@${HOST} "sudo rm -rf /etc/puppet/modules/odoo; sudo mv /tmp/modules/odoo /etc/puppet/modules; sudo rm -rf /tmp/modules" | ||||||
|  | 
 | ||||||
|  | ssh ${USER}@${HOST} "sudo puppet apply /etc/puppet/manifests/site.pp" | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | 
 | ||||||
|  | node default { | ||||||
|  | 
 | ||||||
|  | 	TODO | ||||||
|  |     odoo::instance {'TODO': | ||||||
|  |       db_pw => 'x54ef6t77t6ZZul3', | ||||||
|  |       ssl => true, | ||||||
|  |       servername => 'TODO', | ||||||
|  |       odooport => 8069, | ||||||
|  |       odooport_logpolling => 8070, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue