Rush has uploaded a new change for review.
https://gerrit.wikimedia.org/r/254426
Change subject: WIP: Further hiera-ize role/labs/openstack/
......................................................................
WIP: Further hiera-ize role/labs/openstack/
There is still some low hanging consolidation fruit
left here. This isn't the final form
* moving values into yaml
* moving private values into hiera private
* using role keyword in site consistently (needed for lookup)
* refactor class relationships based on the reduced
need for classes as param stores
Change-Id: Ib7080dce519c99c5368d01380c8708ec43c069ce
---
M hieradata/common.yaml
M hieradata/eqiad.yaml
M manifests/role/labs/openstack/designate.pp
M manifests/role/labs/openstack/glance.pp
M manifests/role/labs/openstack/keystone.pp
M manifests/role/labs/openstack/nova.pp
M manifests/site.pp
M modules/openstack/templates/kilo/keystone/keystone.conf.erb
8 files changed, 88 insertions(+), 210 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/26/254426/1
diff --git a/hieradata/common.yaml b/hieradata/common.yaml
index 554622b..3a1a403 100644
--- a/hieradata/common.yaml
+++ b/hieradata/common.yaml
@@ -299,3 +299,23 @@
dhcp_start: '10.68.16.4'
network_public_ip: '208.80.155.255'
dmz_cidr: '208.80.155.0/22,10.0.0.0/8'
+
+keystoneconfig:
+ db_name: 'keystone'
+ db_user: 'keystone'
+ ldap_base_dn: 'dc=wikimedia,dc=org'
+ ldap_user_dn: 'uid=novaadmin,ou=people,dc=wikimedia,dc=org'
+ ldap_user_id_attribute: 'uid'
+ ldap_tenant_id_attribute: 'cn'
+ ldap_user_name_attribute: 'uid'
+ ldap_tenant_name_attribute: 'cn'
+ ldap_proxyagent : 'cn=proxyagent,ou=profile,dc=wikimedia,dc=org'
+ auth_protocol: 'http'
+ auth_port: '35357'
+ db_host: 'm5-master.eqiad.wmnet'
+ ldap_host: 'ldap-eqiad.wikimedia.org'
+ token_driver: 'normal'
+
+glanceconfig:
+ db_host: 'm5-master.eqiad.wmnet'
+ bind_ip: "%{::ipaddress_eth0}"
diff --git a/hieradata/eqiad.yaml b/hieradata/eqiad.yaml
index 9c861cd..ba14771 100644
--- a/hieradata/eqiad.yaml
+++ b/hieradata/eqiad.yaml
@@ -100,3 +100,13 @@
auth_port: '35357'
auth_protocol: 'http'
auth_host: 208.80.154.92
+
+designateconfig:
+ db_host: 'm5-master.eqiad.wmnet'
+ db_name: 'designate'
+ pool_manager_db_name: 'designate_pool_manager'
+ pdns_db_host: 'm5-master.eqiad.wmnet'
+ dhcp_domain: 'eqiad'
+ pdns_db_name: 'pdns'
+ rabbit_host: *labsnovacontroller
+ controller_hostname: *labsnovacontroller
diff --git a/manifests/role/labs/openstack/designate.pp
b/manifests/role/labs/openstack/designate.pp
index 058d64b..9b11cd7 100644
--- a/manifests/role/labs/openstack/designate.pp
+++ b/manifests/role/labs/openstack/designate.pp
@@ -1,72 +1,29 @@
-class role::labs::openstack::designate::config {
-
- include openstack
- include passwords::designate
- include passwords::pdns
- include passwords::labs::rabbitmq
-
- $commondesignateconfig = {
- db_name => 'designate',
- pool_manager_db_name => 'designate_pool_manager',
- db_user => $passwords::designate::db_user,
- db_pass => $passwords::designate::db_pass,
- rabbit_user => $passwords::labs::rabbitmq::rabbit_userid,
- rabbit_pass => $passwords::labs::rabbitmq::rabbit_password,
- pdns_db_name => 'pdns',
- pdns_db_user => $passwords::pdns::db_user,
- pdns_db_pass => $passwords::pdns::db_pass,
- pdns_db_admin_user => $passwords::pdns::db_admin_user,
- pdns_db_admin_pass => $passwords::pdns::db_admin_pass,
- }
-}
-
-class role::labs::openstack::designate::config::eqiad inherits
role::labs::openstack::designate::config {
-
- include role::labs::openstack::keystone::config::eqiad
-
- $nova_controller = hiera('labs_nova_controller')
- $keystoneconfig =
$role::labs::openstack::keystone::config::eqiad::keystoneconfig
-
- $controller_hostname = $nova_controller
- $db_host = 'm5-master.eqiad.wmnet'
- $pdns_db_host = 'm5-master.eqiad.wmnet'
- $auth_uri = "http://${nova_controller}:5000"
-
- $eqiaddesignateconfig = {
- db_host => $db_host,
- pdns_db_host => $pdns_db_host,
- auth_uri => $auth_uri,
- rabbit_host => $controller_hostname,
- controller_hostname => $controller_hostname,
- keystone_admin_token => $keystoneconfig['admin_token'],
- keystone_auth_host => $keystoneconfig['bind_ip'],
- keystone_auth_protocol => $keystoneconfig['auth_protocol'],
- keystone_auth_port => $keystoneconfig['auth_port'],
- dhcp_domain => 'eqiad',
- }
- $designateconfig = merge($eqiaddesignateconfig, $commondesignateconfig)
-}
-
class role::labs::openstack::designate::server {
- include role::labs::openstack::designate::config::eqiad
+ include openstack
- # Firewall
- $wikitech = ipresolve('wikitech.wikimedia.org',4)
- $horizon = ipresolve('horizon.wikimedia.org',4)
- $controller = ipresolve(hiera('labs_nova_controller'),4)
+ $keystone_host = hiera('labs_keystone_host')
+ $nova_controller = hiera('labs_nova_controller')
+ $keystoneconfig = hiera_hash('keystoneconfig', {})
+ $designateconfig = hiera_hash('designateconfig', {})
- $designateconfig = $::site ? {
- 'eqiad' =>
$role::labs::openstack::designate::config::eqiad::designateconfig,
- }
+ $wikitech_ip = ipresolve('wikitech.wikimedia.org',4)
+ $horizon_ip = ipresolve('horizon.wikimedia.org',4)
+ $controller_ip = ipresolve($nova_controller,4)
+
+ $designateconfig['auth_uri'] =
"http://${nova_controller}:5000"
+ $designateconfig['keystone_auth_host'] = ipresolve($keystone_host,4)
+ $designateconfig['keystone_auth_port'] = $keystoneconfig['auth_port']
+ $designateconfig['keystone_admin_token'] = $keystoneconfig['admin_token']
+ $designateconfig['keystone_auth_protocol'] =
$keystoneconfig['auth_protocol']
class { 'openstack::designate::service':
- designateconfig => $designateconfig,
+ designateconfig => $designateconfig,
}
# Poke a firewall hole for the designate api
ferm::rule { 'designate-api':
- rule => "saddr (${wikitech} ${horizon} ${controller}) proto tcp dport
(9001) ACCEPT;",
+ rule => "saddr (${wikitech_ip} ${horizon_ip} ${controller_ip}) proto
tcp dport (9001) ACCEPT;",
}
file { '/var/lib/designate/.ssh/':
diff --git a/manifests/role/labs/openstack/glance.pp
b/manifests/role/labs/openstack/glance.pp
index 90720f8..545da92 100644
--- a/manifests/role/labs/openstack/glance.pp
+++ b/manifests/role/labs/openstack/glance.pp
@@ -1,46 +1,14 @@
-class role::labs::openstack::glance::config {
-
- include passwords::openstack::glance
- include passwords::labs::rabbitmq
-
- $commonglanceconfig = {
- db_name => 'glance',
- db_user => 'glance',
- db_pass => $passwords::openstack::glance::glance_db_pass,
- rabbit_user => $passwords::labs::rabbitmq::rabbit_userid,
- rabbit_pass => $passwords::labs::rabbitmq::rabbit_password,
- }
-}
-
-class role::labs::openstack::glance::config::eqiad inherits
role::labs::openstack::glance::config {
-
- include role::labs::openstack::keystone::config::eqiad
-
- $keystoneconfig =
$role::labs::openstack::keystone::config::eqiad::keystoneconfig
- $keystone_host = hiera('labs_keystone_host')
- $db_host = 'm5-master.eqiad.wmnet'
- $bind_ip = $::ipaddress_eth0
- $auth_uri = "http://${keystone_host}:5000"
-
- $eqiadglanceconfig = {
- db_host => $db_host,
- bind_ip => $bind_ip,
- auth_uri => $auth_uri,
- keystone_admin_token => $keystoneconfig['admin_token'],
- keystone_auth_host => $keystoneconfig['bind_ip'],
- keystone_auth_protocol => $keystoneconfig['auth_protocol'],
- keystone_auth_port => $keystoneconfig['auth_port'],
- }
- $glanceconfig = merge($eqiadglanceconfig, $commonglanceconfig)
-}
-
class role::labs::openstack::glance::server {
- include role::labs::openstack::glance::config::eqiad
+ $keystone_host = hiera('labs_keystone_host')
+ $keystoneconfig = hiera_hash('keystoneconfig', {})
+ $glanceconfig = hiera_hash('glanceconfig', {})
- $glanceconfig = $::site ? {
- 'eqiad' => $role::labs::openstack::glance::config::eqiad::glanceconfig,
- }
+ $glanceconfig['auth_uri'] = "http://${keystone_host}:5000"
+ $glanceconfig['keystone_auth_host'] = ipresolve($keystone_host,4)
+ $glanceconfig['keystone_auth_port'] = $keystoneconfig['auth_port']
+ $glanceconfig['keystone_admin_token'] = $keystoneconfig['admin_token']
+ $glanceconfig['keystone_auth_protocol'] = $keystoneconfig['auth_protocol']
class { 'openstack::glance::service':
glanceconfig => $glanceconfig,
diff --git a/manifests/role/labs/openstack/keystone.pp
b/manifests/role/labs/openstack/keystone.pp
index e28ad25..7ed30b2 100644
--- a/manifests/role/labs/openstack/keystone.pp
+++ b/manifests/role/labs/openstack/keystone.pp
@@ -1,61 +1,11 @@
-class role::labs::openstack::keystone::config {
+class role::labs::openstack::keystone::server {
- include passwords::openstack::keystone
-
- $commonkeystoneconfig = {
- db_name => 'keystone',
- db_user => 'keystone',
- db_pass =>
$passwords::openstack::keystone::keystone_db_pass,
- ldap_base_dn => 'dc=wikimedia,dc=org',
- ldap_user_dn =>
'uid=novaadmin,ou=people,dc=wikimedia,dc=org',
- ldap_user_id_attribute => 'uid',
- ldap_tenant_id_attribute => 'cn',
- ldap_user_name_attribute => 'uid',
- ldap_tenant_name_attribute => 'cn',
- ldap_user_pass =>
$passwords::openstack::keystone::keystone_ldap_user_pass,
- ldap_proxyagent =>
'cn=proxyagent,ou=profile,dc=wikimedia,dc=org',
- ldap_proxyagent_pass =>
$passwords::openstack::keystone::keystone_ldap_proxyagent_pass,
- auth_protocol => 'http',
- auth_port => '35357',
- admin_token =>
$passwords::openstack::keystone::keystone_admin_token,
- token_driver_password =>
$passwords::openstack::keystone::keystone_db_pass,
- }
-}
-
-class role::labs::openstack::keystone::config::eqiad inherits
role::labs::openstack::keystone::config {
-
- $keystone_host = hiera('labs_keystone_host')
-
- $eqiadkeystoneconfig = {
- db_host => 'm5-master.eqiad.wmnet',
- ldap_host => 'ldap-eqiad.wikimedia.org',
- bind_ip => ipresolve($keystone_host,4),
- # Temporarily disable the redis keystone driver... it doesn't work in
icehouse
- token_driver => 'normal',
- }
- $keystoneconfig = merge($eqiadkeystoneconfig, $commonkeystoneconfig)
-}
-
-class role::labs::openstack::keystone::server ($glanceconfig) {
-
- include role::labs::openstack::keystone::config::eqiad
- include role::labs::openstack::keystone::redis
-
- $keystoneconfig = $::site ? {
- 'eqiad' =>
$role::labs::openstack::keystone::config::eqiad::keystoneconfig,
- }
+ $nova_controller = hiera('labs_nova_controller')
+ $keystoneconfig = hiera_hash('keystoneconfig', {})
class { 'openstack::keystone::service':
keystoneconfig => $keystoneconfig,
- glanceconfig => $glanceconfig,
}
-}
-
-class role::labs::openstack::keystone::redis {
-
- include passwords::openstack::keystone
-
- $nova_controller = hiera('labs_nova_controller')
$replication = {
'labcontrol2001' => $nova_controller
@@ -65,7 +15,7 @@
maxmemory => '250mb',
persist => 'aof',
redis_replication => $replication,
- password =>
$passwords::openstack::keystone::keystone_db_pass,
+ password => $keystoneconfig['db_pass'],
dir => '/var/lib/redis/',
auto_aof_rewrite_min_size => '64mb',
}
diff --git a/manifests/role/labs/openstack/nova.pp
b/manifests/role/labs/openstack/nova.pp
index ed27ff3..5cd3e8f 100644
--- a/manifests/role/labs/openstack/nova.pp
+++ b/manifests/role/labs/openstack/nova.pp
@@ -37,6 +37,8 @@
# This is the wikitech UI
class role::labs::openstack::nova::manager {
+ requires_realm('production')
+
include ::nutcracker::monitoring
include ::mediawiki::packages::php5
include ::mediawiki::cgroup
@@ -45,17 +47,7 @@
include role::labs::openstack::nova::common
$novaconfig = $role::labs::openstack::nova::common::novaconfig
- case $::realm {
- 'production': {
- $certificate = 'wikitech.wikimedia.org'
- }
- default: {
- fail('unknown realm')
- }
- }
-
sslcert::certificate { $certificate: }
-
monitoring::service { 'https':
description => 'HTTPS',
check_command => "check_ssl_http!${certificate}",
@@ -110,37 +102,27 @@
class role::labs::openstack::nova::controller {
require openstack
+ include ::openstack::controller_firewall
+
include role::labs::puppetmaster
- include role::labs::openstack::glance::config::eqiad
include role::labs::openstack::nova::wikiupdates
+ include role::labs::openstack::glance::server
+ include role::labs::openstack::keystone::server
include role::labs::openstack::nova::common
$novaconfig = $role::labs::openstack::nova::common::novaconfig
- $glanceconfig = $::site ? {
- 'eqiad' => $role::labs::openstack::glance::config::eqiad::glanceconfig,
- }
- $keystoneconfig = $::site ? {
- 'eqiad' =>
$role::labs::openstack::keystone::config::eqiad::keystoneconfig,
- }
-
class { '::openstack::nova::conductor':
- novaconfig => $novaconfig,
- }
- class { '::openstack::nova::scheduler':
- novaconfig => $novaconfig,
- }
- class { '::openstack::glance::service':
- glanceconfig => $glanceconfig,
- }
- class { '::openstack::queue-server':
- novaconfig => $novaconfig,
- }
- class { 'role::labs::openstack::keystone::server':
- glanceconfig => $glanceconfig,
+ novaconfig => $novaconfig,
}
- class { '::openstack::controller_firewall': }
+ class { '::openstack::nova::scheduler':
+ novaconfig => $novaconfig,
+ }
+
+ class { '::openstack::queue-server':
+ novaconfig => $novaconfig,
+ }
class { '::openstack::adminscripts':
novaconfig => $novaconfig
@@ -172,8 +154,8 @@
class role::labs::openstack::nova::network {
require openstack
- include role::labs::openstack::nova::common
include role::labs::openstack::nova::wikiupdates
+ include role::labs::openstack::nova::common
$novaconfig = $role::labs::openstack::nova::common::novaconfig
interface::ip { 'openstack::network_service_public_dynamic_snat':
@@ -241,7 +223,7 @@
}
class { '::openstack::nova::compute':
- novaconfig => $novaconfig,
+ novaconfig => $novaconfig,
}
mount { '/var/lib/nova/instances':
diff --git a/manifests/site.pp b/manifests/site.pp
index a5ab8d9..2944221 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -1032,25 +1032,17 @@
# Holmium hosts openstack-designate, the labs DNS service.
node 'holmium.wikimedia.org' {
- role labsdns
+ role labsdns, labs::openstack::designate::server, labsdnsrecursor
include standard
-
include base::firewall
- include role::labsdnsrecursor
- include role::labs::openstack::designate::server
-
include ldap::role::client::labs
}
# labservices1001 will be the new holmium
node 'labservices1001.wikimedia.org' {
- role labsdns
+ role labsdns, labsdnsrecursor, labs::openstack::designate::server
include standard
-
include base::firewall
- include role::labsdnsrecursor
- include role::labs::openstack::designate::server
-
include ldap::role::client::labs
}
@@ -1159,13 +1151,14 @@
node 'labcontrol1001.wikimedia.org' {
$is_puppet_master = true
$is_labs_puppet_master = true
- role labs::openstack::nova::controller
+
+ role labs::openstack::nova::controller,
+ salt::masters::labs,
+ deployment::salt_masters,
+ dns::ldap
include standard
include ldap::role::client::labs
- include role::salt::masters::labs
- include role::deployment::salt_masters
- include role::dns::ldap
# Monitoring checks for toollabs that page
include toollabs::monitoring::icinga
@@ -1180,11 +1173,13 @@
$is_puppet_master = true
$is_labs_puppet_master = true
- role labs::openstack::nova::controller
+ role labs::openstack::nova::controller,
+ salt::masters::labs,
+ deployment::salt_masters
+
include standard
include ldap::role::client::labs
- include role::salt::masters::labs
- include role::deployment::salt_masters
+
# The dns controller grabs an IP, so leave this disabled until/unless
# this server is the primary labs controller.
#include role::dns::ldap
@@ -1213,15 +1208,13 @@
}
node 'labnet1001.eqiad.wmnet' {
-
role labs::openstack::nova::api
include standard
}
node 'labnet1002.eqiad.wmnet' {
- role labs::openstack::nova::api
+ role labs::openstack::nova::api, labs::openstack::nova::network
include standard
- include role::labs::openstack::nova::network
}
node 'labnodepool1001.eqiad.wmnet' {
@@ -1279,7 +1272,6 @@
node /labstore100[12]\.eqiad\.wmnet/ {
role labs::nfs::fileserver
-
}
node 'labstore1003.eqiad.wmnet' {
@@ -1288,7 +1280,6 @@
node /labstore200[12]\.codfw\.wmnet/ {
$cluster = 'labsnfs'
-
role labs::nfs::fileserver
}
diff --git a/modules/openstack/templates/kilo/keystone/keystone.conf.erb
b/modules/openstack/templates/kilo/keystone/keystone.conf.erb
index e732694..f53b21f 100644
--- a/modules/openstack/templates/kilo/keystone/keystone.conf.erb
+++ b/modules/openstack/templates/kilo/keystone/keystone.conf.erb
@@ -49,7 +49,7 @@
# public_port = 5000
# The port number which the public admin listens on
-admin_port = <%= @glanceconfig["keystone_auth_port"] %>
+admin_port = <%= @keystoneconfig["auth_port"] %>
# The port number which the OpenStack Compute service listens on
# compute_port = 8774
--
To view, visit https://gerrit.wikimedia.org/r/254426
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib7080dce519c99c5368d01380c8708ec43c069ce
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Rush <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits