diff --git a/manifests/hosts.pp b/manifests/hosts.pp index 6b761a1..4072a74 100644 --- a/manifests/hosts.pp +++ b/manifests/hosts.pp @@ -1,22 +1,22 @@ Host { ensure => present } host { 'puppetmaster': - ip => '172.20.0.10', + ip => '172.21.0.10', } host { 'all': - ip => '172.20.0.11', + ip => '172.21.0.11', } host { 'db': - ip => '172.20.0.12' + ip => '172.21.0.12' } host { 'rabbitmq': - ip => '172.20.0.13', + ip => '172.21.0.13', } host { 'controller': - ip => '172.20.0.14', + ip => '172.21.0.14', } host { 'compute': - ip => '172.20.0.15', + ip => '172.21.0.15', } host { 'glance': - ip => '172.20.0.16', + ip => '172.21.0.16', } diff --git a/manifests/site.pp b/manifests/site.pp new file mode 100644 index 0000000..50373f0 --- /dev/null +++ b/manifests/site.pp @@ -0,0 +1,132 @@ +$db_host = 'db' +$db_username = 'nova' +$db_name = 'nova' +$db_password = 'password' + +$rabbit_user = 'nova' +$rabbit_password = 'nova' +$rabbit_vhost = '/' +$rabbit_host = 'rabbitmq' +$rabbit_port = '5672' + +resources { 'nova_config': + purge => true, +} + +node db { + class { 'mysql::server': + config_hash => {'bind_address' => '0.0.0.0'} + } + class { 'mysql::ruby': } + class { 'nova::db': + password => $db_password, + dbname => $db_user, + user => $db_name, + host => $clientcert, + # does glance need access? + allowed_hosts => ['controller', 'glance'], + } +} + +node controller { + class { 'nova::controller': + db_password => $db_password, + db_name => $db_name, + db_user => $db_username, + db_host => $db_host, + + rabbit_password => $rabbit_password, + rabbit_port => $rabbit_port, + rabbit_userid => $rabbit_user, + rabbit_virtual_host => $rabbit_vhost, + rabbit_host => $rabbit_host, + + image_service => 'nova.image.glance.GlanceImageService', + + glance_api_servers => 'glance:9292', + + libvirt_type => 'qemu', + } +} + +node compute { + +} + +node glance { + # set up glance server + class { 'glance::api': + swift_store_user => 'foo_user', + swift_store_key => 'foo_pass', + } + + class { 'glance::registry': } + +} + +node rabbitmq { + class { 'nova::rabbitmq': + userid => $rabbit_user, + password => $rabbit_password, + port => $rabbit_port, + virtual_host => $rabbit_vhost, + } +} + +node puppetmaster { + class { 'concat::setup': } + class { 'mysql::server': + config_hash => {'bind_address' => '127.0.0.1'} + } + class { 'mysql::ruby': } + package { 'activerecord': + ensure => '2.3.5', + provider => 'gem', + } + class { 'puppet::master': + modulepath => '/vagrant/modules', + manifest => '/vagrant/manifests/site.pp', + storeconfigs => true, + storeconfigs_dbuser => 'dan', + storeconfigs_dbpassword => 'foo', + storeconfigs_dbadapter => 'mysql', + storeconfigs_dbserver => 'localhost', + storeconfigs_dbsocket => '/var/run/mysqld/mysqld.sock', + version => installed, + puppet_master_package => 'puppet', + package_provider => 'gem', + autosign => 'true', + certname => $clientcert, + } +} + +node all { + # + # This manifest installs all of the nova + # components on one node. + class { 'mysql::server': } + class { 'nova::all': + db_password => 'password', + db_name => 'nova', + db_user => 'nova', + db_host => 'localhost', + + rabbit_password => 'rabbitpassword', + rabbit_port => '5672', + rabbit_userid => 'rabbit_user', + rabbit_virtual_host => '/', + rabbit_host => 'localhost', + + image_service => 'nova.image.glance.GlanceImageService', + + glance_host => 'localhost', + glance_port => '9292', + + libvirt_type => 'qemu', + } +} + + +node default { + fail("could not find a matching node entry for ${clientcert}") +}