| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| class puppet-devcloud { |
| |
| package { 'ebtables': |
| ensure => latest, |
| } |
| |
| service { 'ebtables': |
| require => Package['ebtables'], |
| ensure => 'running', |
| enable => 'true', |
| } |
| |
| package { 'iptables': |
| ensure => latest, |
| } |
| |
| file { '/etc/iptables.save': |
| require => Package['iptables'], |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/iptables.save', |
| group => '0', |
| mode => '644', |
| owner => '0', |
| } |
| |
| file { '/tmp/configebtables.sh': |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/configebtables.sh', |
| group => '0', |
| mode => '777', |
| owner => '0', |
| } |
| |
| exec { "/tmp/configebtables.sh": |
| require => [ |
| File['/tmp/configebtables.sh'], |
| Service['ebtables'] |
| ], |
| subscribe => Package['ebtables'], |
| refreshonly => true, |
| cwd => '/', |
| path => '/sbin/:/usr/bin/:/bin', |
| } |
| |
| package { 'nfs-server': |
| ensure => latest, |
| } |
| |
| file { '/opt/storage': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/opt/storage/secondary': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/opt/storage/secondary/template': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/opt/storage/secondary/template/tmpl': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/opt/storage/secondary/template/tmpl/1': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/opt/storage/secondary/template/tmpl/1/1': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/opt/storage/secondary/template/tmpl/1/5': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/etc/exports': |
| require => Package['nfs-server'], |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/exports', |
| mode => '644', |
| owner => '0', |
| group => '0', |
| } |
| |
| service { 'nfs-kernel-server': |
| require => Package['nfs-server'], |
| ensure => 'running', |
| enable => 'true', |
| } |
| |
| # TODO - it would be great to have an MD5 sum to check for each of these downloads, so that the files can be re-downloaded if they have been changed. |
| |
| exec { '/usr/bin/wget http://download.cloud.com/templates/devcloud/defaulttemplates/1/dc68eb4c-228c-4a78-84fa-b80ae178fbfd.vhd -P /opt/storage/secondary/template/tmpl/1/1/': |
| creates => '/opt/storage/secondary/template/tmpl/1/1/dc68eb4c-228c-4a78-84fa-b80ae178fbfd.vhd', |
| require => File['/opt/storage/secondary/template/tmpl/1/1/'], |
| timeout => '0', |
| } |
| |
| exec { '/usr/bin/wget http://download.cloud.com/templates/devcloud/defaulttemplates/1/template.properties -P /opt/storage/secondary/template/tmpl/1/1/': |
| creates => '/opt/storage/secondary/template/tmpl/1/1/template.properties', |
| require => File['/opt/storage/secondary/template/tmpl/1/1/'], |
| } |
| |
| exec { '/usr/bin/wget http://download.cloud.com/templates/devcloud/defaulttemplates/5/ce5b212e-215a-3461-94fb-814a635b2215.vhd -P /opt/storage/secondary/template/tmpl/1/5/': |
| creates => '/opt/storage/secondary/template/tmpl/1/5/ce5b212e-215a-3461-94fb-814a635b2215.vhd', |
| require => File['/opt/storage/secondary/template/tmpl/1/5/'], |
| timeout => '0', |
| } |
| |
| exec { '/usr/bin/wget http://download.cloud.com/templates/devcloud/defaulttemplates/5/template.properties -P /opt/storage/secondary/template/tmpl/1/5/': |
| creates => '/opt/storage/secondary/template/tmpl/1/5/template.properties', |
| require => File['/opt/storage/secondary/template/tmpl/1/5/'], |
| } |
| |
| exec { 'getecho': |
| command => '/usr/bin/wget http://download.cloud.com/templates/devcloud/echo -P /usr/lib/xcp/plugins/', |
| creates => '/usr/lib/xcp/plugins/echo', |
| } |
| |
| exec { '/bin/chmod -R 777 /usr/lib/xcp': |
| require => Exec['getecho'], |
| } |
| |
| file { '/opt/storage/primary': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/tmp/configlocalstorage.sh': |
| ensure => 'file', |
| group => '0', |
| mode => '777', |
| owner => '0', |
| source => 'puppet:///modules/puppet-devcloud/configlocalstorage.sh', |
| } |
| |
| exec { "configlocal": |
| require => [ |
| File['/opt/storage/primary'], |
| File['/tmp/configlocalstorage.sh'] |
| ], |
| command => '/tmp/configlocalstorage.sh', |
| cwd => '/', |
| } |
| |
| file { '/tmp/configvnc.sh': |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/configvnc.sh', |
| mode => '777', |
| group => '0', |
| owner => '0', |
| } |
| |
| exec { "configvnc": |
| require => File['/tmp/configvnc.sh'], |
| command => '/tmp/configvnc.sh', |
| cwd => '/', |
| } |
| |
| package { 'git': |
| ensure => latest, |
| } |
| |
| package { 'unzip': |
| ensure => latest, |
| } |
| |
| package { 'mysql-server': |
| ensure => latest, |
| } |
| |
| package { 'ant': |
| ensure => latest, |
| } |
| |
| package { 'openjdk-6-jdk': |
| ensure => latest, |
| } |
| |
| file { '/opt/cloudstack': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| } |
| |
| file { '/tmp/updatecode.sh': |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/updatecode.sh', |
| mode => '777', |
| owner => '0', |
| group => '0', |
| } |
| |
| exec { 'get_code': |
| require => [ |
| Package['git'], |
| File['/opt/cloudstack/'], |
| File['/tmp/updatecode.sh'] |
| ], |
| command => '/tmp/updatecode.sh', |
| cwd => '/opt/cloudstack/', |
| timeout => '0', |
| } |
| |
| file { '/opt/cloudstack/incubator-cloudstack/target': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| require => Exec['get_code'], |
| } |
| |
| file { '/opt/cloudstack/incubator-cloudstack/dist': |
| ensure => 'directory', |
| group => '0', |
| mode => '755', |
| owner => '0', |
| require => Exec['get_code'], |
| } |
| |
| exec { 'downloadtomcat': |
| command => '/usr/bin/wget http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip -P /opt/cloudstack/', |
| creates => '/opt/cloudstack/apache-tomcat-6.0.32.zip', |
| require => File['/opt/cloudstack/'], |
| timeout => '0', |
| } |
| |
| exec { "unziptomcat": |
| require => [ |
| Package['unzip'], |
| Exec["downloadtomcat"] |
| ], |
| creates => "/opt/cloudstack/apache-tomcat-6.0.32", |
| command => "/usr/bin/unzip apache-tomcat-6.0.32.zip", |
| cwd => "/opt/cloudstack", |
| timeout => '0', |
| } |
| |
| exec { "catalina_home": |
| require => Exec["unziptomcat"], |
| unless => '/bin/grep CATALINA_HOME /root/.bashrc', |
| command => '/bin/echo "export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32" >> /root/.bashrc', |
| cwd => '/', |
| } |
| |
| package { 'mkisofs': |
| ensure => latest, |
| } |
| |
| file { '/opt/cloudstack/buildcloudstack.sh': |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/builddevcloud.sh', |
| mode => '777', |
| owner => '0', |
| group => '0', |
| } |
| |
| exec { "build_cloudstack": |
| require => [ |
| Package['ant'], |
| Exec["catalina_home"], |
| File['/opt/cloudstack/incubator-cloudstack/dist'], |
| File['/opt/cloudstack/incubator-cloudstack/target'], |
| Package['mkisofs'], |
| File['/opt/cloudstack/buildcloudstack.sh'] |
| ], |
| command => "/opt/cloudstack/buildcloudstack.sh", |
| cwd => "/opt/cloudstack/", |
| timeout => '0', |
| } |
| |
| file { '/opt/cloudstack/startdevcloud.sh': |
| ensure => 'file', |
| source => 'puppet:///modules/puppet-devcloud/startdevcloud.sh', |
| mode => '777', |
| owner => '0', |
| group => '0', |
| } |
| |
| exec { "start_cloudstack": |
| require => [ |
| Exec["build_cloudstack"], |
| File["/opt/cloudstack/startdevcloud.sh"] |
| ], |
| command => "/opt/cloudstack/startdevcloud.sh", |
| cwd => "/opt/cloudstack/", |
| } |
| |
| } |