add ceph adapter config and templates

Change-Id: Ia4f8871ef337fb712f9721d1488fbba18766336a
This commit is contained in:
grace.yu 2014-10-03 15:50:05 -07:00
parent f1f3860ee7
commit 784e6d7887
19 changed files with 1326 additions and 19 deletions

View File

@ -110,12 +110,11 @@ class BaseConfigManager(object):
return {}
deploy_config = self.get_cluster_deployed_package_config()
mapping = deploy_config.setdefault(const.ROLES_MAPPING, {})
if const.ROLES_MAPPING not in deploy_config:
if not mapping:
mapping = self._get_cluster_roles_mapping_helper()
deploy_config[const.ROLES_MAPPING] = mapping
else:
mapping = deploy_config[const.ROLES_MAPPING]
return mapping
@ -332,6 +331,7 @@ class BaseConfigManager(object):
"""The ouput format will be as below, for example:
{
"controller": {
"hostname": "xxx",
"management": {
"interface": "eth0",
"ip": "192.168.1.10",
@ -361,16 +361,18 @@ class BaseConfigManager(object):
def _get_host_roles_mapping_helper(self, host_id):
"""The format will be the same as cluster roles mapping."""
mapping = {}
network_mapping = self.get_host_network_mapping(host_id)
if not network_mapping:
return {}
hostname = self.get_hostname(host_id)
roles = self.get_host_roles(host_id)
interfaces = self.get_host_interfaces(host_id)
temp = {}
mapping = {}
temp = {const.HOSTNAME: hostname}
for key in network_mapping:
nic = network_mapping[key]
nic = network_mapping[key][const.NIC]
if nic in interfaces:
temp[key] = self.get_host_interface_config(host_id, nic)
temp[key][const.NIC] = nic

View File

@ -102,7 +102,7 @@ class BaseInstaller(object):
if meta_key.startswith("$"):
return (False, metadata[meta_key])
raise KeyError("'%s' is an invalid metadata!" % key)
raise KeyError("'%s' is invalid in metadata '%s'!" % (key, metadata))
def _get_tmpl_vars_helper(self, metadata, config, output):
for key, config_value in sorted(config.iteritems()):

View File

@ -222,6 +222,7 @@ class TestChefInstaller(unittest2.TestCase):
},
"roles_mapping": {
"os_controller": {
"hostname": "server01",
"management": {
"interface": "vnet0",
"ip": "12.234.32.100",
@ -240,6 +241,7 @@ class TestChefInstaller(unittest2.TestCase):
}
},
"os_compute_worker": {
"hostname": "server02",
"management": {
"interface": "eth0",
"ip": "12.234.32.101",
@ -258,6 +260,7 @@ class TestChefInstaller(unittest2.TestCase):
}
},
"os_network": {
"hostname": "server03",
"management": {
"interface": "eth0",
"ip": "12.234.32.103",
@ -291,6 +294,7 @@ class TestChefInstaller(unittest2.TestCase):
"deployed_package_config": {
"roles_mapping": {
"os_controller": {
"hostname": "server01",
"management": {
"interface": "vnet0",
"ip": "12.234.32.100",
@ -321,6 +325,7 @@ class TestChefInstaller(unittest2.TestCase):
"deployed_package_config": {
"roles_mapping": {
"os_compute_worker": {
"hostname": "server02",
"management": {
"interface": "eth0",
"ip": "12.234.32.101",
@ -351,6 +356,7 @@ class TestChefInstaller(unittest2.TestCase):
"deployed_package_config": {
"roles_mapping": {
"os_network": {
"hostname": "server03",
"management": {
"interface": "eth0",
"ip": "12.234.32.103",
@ -377,6 +383,7 @@ class TestChefInstaller(unittest2.TestCase):
}
},
"os_compute_worker": {
"hostname": "server03",
"management": {
"interface": "eth0",
"ip": "12.234.32.103",

View File

@ -64,6 +64,7 @@ class TestConfigManager(unittest2.TestCase):
def test_get_cluster_roles_mapping(self):
expected_output = {
"os_controller": {
"hostname": "server01",
"management": {
"interface": "vnet0",
"ip": "12.234.32.100",
@ -82,6 +83,7 @@ class TestConfigManager(unittest2.TestCase):
}
},
"os_compute_worker": {
"hostname": "server02",
"management": {
"interface": "eth0",
"ip": "12.234.32.101",
@ -100,6 +102,7 @@ class TestConfigManager(unittest2.TestCase):
}
},
"os_network": {
"hostname": "server03",
"management": {
"interface": "eth0",
"ip": "12.234.32.103",
@ -139,6 +142,7 @@ class TestConfigManager(unittest2.TestCase):
def test_get_host_role_mapping(self):
expected_output = {
"os_network": {
"hostname": "server03",
"management": {
"interface": "eth0",
"ip": "12.234.32.103",
@ -165,6 +169,7 @@ class TestConfigManager(unittest2.TestCase):
}
},
"os_compute_worker": {
"hostname": "server03",
"management": {
"interface": "eth0",
"ip": "12.234.32.103",

View File

@ -228,9 +228,15 @@ cluster_test_config = {
}
},
"network_mapping": {
"management": "eth0",
"public": "eth2",
"tenant": "eth1"
"management": {
"interface": "eth0"
},
"public": {
"interface": "eth2"
},
"tenant": {
"interface": "eth1"
}
}
}
}
@ -276,8 +282,12 @@ hosts_test_config = {
},
"package_config": {
"network_mapping": {
"management": "vnet0",
"tenant": "vnet1"
"management": {
"interface": "vnet0"
},
"tenant": {
"interface": "vnet1"
}
}
}
},

View File

@ -0,0 +1,7 @@
NAME = 'ceph_openstack_icehouse'
DISPLAY_NAME = 'Ceph + OpenStack Icehouse'
PARENT = 'openstack'
PACKAGE_INSTALLER = 'chef_installer'
OS_INSTALLER = 'cobbler'
SUPPORTED_OS_PATTERNS = ['(?i)centos.*', '(?i)ubuntu.*']
DEPLOYABLE = True

View File

@ -0,0 +1,9 @@
ADAPTER_NAME = 'ceph_firefly'
FLAVORS = [
{
'flavor': 'ceph_firefly',
'display_name': 'Ceph Cluster (Firefly)',
'template': 'ceph_firefly.tmpl',
'roles': ['ceph-mon', 'ceph-osd', 'ceph-mds', 'ceph-radosgw']
}
]

View File

@ -0,0 +1,15 @@
ADAPTER_NAME = 'ceph_openstack_icehouse'
FLAVORS = [
{
'flavor': 'ceph_openstack_multinodes',
'display_name': 'Multi-node Ceph+OpenStack Cluster',
'template': 'multinodes.tmpl',
'roles': [
'os-ops-database', 'os-ops-messaging', 'os-identity', 'os-compute-controller',
'ceph-mon', 'ceph-osd', 'ceph-mds', 'ceph-radosgw', 'os-compute-worker',
'os-network-worker', 'os-network-server', 'os-block-storage-controller',
'os-block-storage-volume', 'os-image', 'os-dashboard',
'ceph-os-block-config', 'ceph-os-compute-config', 'ceph-os-object-config',
'ceph-os-image-config', 'openstack_config_mon', 'openstack_config_radosgw'
]
}]

View File

@ -18,10 +18,8 @@ FLAVORS = [{
'template': 'multinodes.tmpl',
'roles': [
'os-ops-database', 'os-identity', 'os-ops-messaging',
'os-compute-controller',
'os-compute-worker', 'os-network-server',
'os-network-worker', 'os-block-storage-volume',
'os-block-storage-controller', 'os-image', 'os-dashboard',
'ha-proxy'
'os-compute-controller', 'os-compute-worker', 'os-network-worker',
'os-network-server', 'os-block-storage-controller', 'os-block-storage-volume',
'os-image', 'os-dashboard'
]
}]

View File

@ -0,0 +1,79 @@
ADAPTER = 'ceph'
METADATA = {
'global_config': {
'_self': {
'required_in_whole_config': True,
'mapping_to': 'global'
},
'osd_pool_pg_num': {
'_self': {
'is_required': True,
'field': 'general',
'default_value': '1024',
'mapping_to': 'osd_pool_pg_num'
}
},
'osd_pool_pgp_num': {
'_self': {
'is_required': True,
'field': 'general',
'default_value': '1024',
'mapping_to': 'osd_pool_pgp_num'
}
},
'osd_pool_size': {
'_self': {
'is_required': True,
'field': 'general',
'default_value': '3',
'mapping_to': 'osd_pool_size'
}
}
},
'osd_config': {
'_self': {
'mapping_to': 'osd_config'
}
'journal_size': {
'_self': {
'field': 'general',
'default_value': '10000',
'mapping_to': 'journal_size'
}
},
'op_threads': {
'_self': {
'field': 'general',
'default_value': 10,
'mapping_to': 'op_threads'
}
}
},
"osd_devices": {
'_self': {
'mapping_to': 'osd_devices'
}
'$device': {
'_self': {
'validator': is_valid_partition
},
'journal': {
'_self': {
'field': 'general',
'mapping_to': 'journal'
}
}
}
},
'network_mapping': {
'_self': {
'required_in_whole_config': True
},
'$interface_type': {
'_self': {
'is_required': True,
'field': 'general'
}
}
}
}

View File

@ -0,0 +1,66 @@
ADAPTER = 'ceph_openstack_icehouse'
METADATA = {
'global_config': {
'_self': {
'required_in_whole_config': True,
},
'osd_pool_pg_num': {
'_self': {
'is_required': True,
'field': 'general',
'default_value': '1024',
'mapping_to': 'osd_pool_pg_num'
}
},
'osd_pool_pgp_num': {
'_self': {
'is_required': True,
'field': 'general',
'default_value': '1024',
'mapping_to': 'osd_pool_pgp_num'
}
},
'osd_pool_size': {
'_self': {
'is_required': True,
'field': 'general',
'default_value': '3',
'mapping_to': 'osd_pool_size'
}
}
},
'osd_config': {
'_self': {
}
'journal_size': {
'_self': {
'field': 'general',
'default_value': '10000',
'mapping_to': 'journal_size'
}
},
'op_threads': {
'_self': {
'field': 'general',
'default_value': 10,
'mapping_to': 'op_threads'
}
}
},
"osd_devices": {
'_self': {
'mapping_to': 'osd_devices'
}
'$device': {
'_self': {
'validator': is_valid_partition
},
'journal': {
'_self': {
'field': 'general',
'mapping_to': 'journal'
}
}
}
}
}

View File

@ -6,7 +6,7 @@ METADATA = {
},
'service_credentials': {
'_self': {
'mapping_to': 'service_credentials'
'mapping_to': 'service_credentials'
},
'$service': {
'username': {

21
conf/role/ceph.conf Normal file
View File

@ -0,0 +1,21 @@
ADAPTER_NAME = 'ceph_firefly'
ROLES = [
{
'role': 'ceph-mon',
'display_name': 'Ceph Mon',
'description': 'ceph monitor server'
}, {
'role': 'ceph-osd',
'display_name': 'Ceph OSD',
'description': 'ceph storage server'
}, {
'role': 'ceph-mds',
'display_name': 'Ceph MDS',
'description': 'ceph metadata server',
'optional': True
}, {
'role': 'ceph-radosgw',
'display_name': 'Ceph Radosgw',
'description': 'ceph object gateway',
'optional': True
}]

View File

@ -0,0 +1,110 @@
ADAPTER_NAME = 'ceph_openstack_icehouse'
ROLES = [{
'role': 'os-compute-worker',
'display_name': 'compute',
'description': 'compute node'
}, {
'role': 'os-network',
'display_name': 'network',
'description': 'network node including network server'
}, {
'role': 'os-network-server',
'display_name': 'network server',
'description': 'network server node'
}, {
'role': 'os-network-worker',
'display_name': 'network worker',
'description': 'network node including network server'
}, {
'role': 'os-block-storage-controller',
'display_name': 'storage controller',
'description': 'storage controller node'
}, {
'role': 'os-block-storage-volume',
'display_name': 'storage worker',
'description': 'storage node'
}, {
'role': 'os-image',
'display_name': 'image',
'description': 'image node'
}, {
'role': 'os-compute-vncproxy',
'display_name': 'vnc proxy',
'description': 'vnc proxy node'
}, {
'role': 'os-controller',
'display_name': 'controller',
'description': 'controller node including identity, dashboard, network server, and block stroage controller services'
}, {
'role': 'os-compute-controller',
'display_name': 'controller-only',
'description': 'controller node for nova APIs'
}, {
'role': 'os-ops-messaging',
'display_name': 'message queue',
'description': 'message queue node'
}, {
'role': 'os-ops-database',
'display_name': 'database',
'description': 'database node'
}, {
'role': 'os-identity',
'display_name': 'keystone',
'description': 'keystone node'
}, {
'role': 'os-dashboard',
'display_name': 'dashboard',
'description': 'dashboard node'
}, {
'role': 'os-ha',
'display_name': 'ha proxy',
'description': 'ha proxy node'
}, {
'role': 'allinone-compute',
'display_name': 'all in one node',
'description': 'all in one compute'
}, {
'role': 'ceph-os-block-config',
'display_name': 'ceph-os block config',
'description': 'ceph os block config'
}, {
'role': 'ceph-os-compute-config',
'display_name': 'ceph-os compute config',
'description': 'ceph os compute config'
}, {
'role': 'ceph-os-image-config',
'display_name': 'ceph-os image config',
'description': 'ceph os image config'
}, {
'role': 'ceph-os-object-config',
'display_name': 'ceph-os object config',
'description': 'ceph openstack object storage config'
}, {
'role': 'ceph-mds',
'display_name': 'ceph MDS',
'description': 'ceph metadata server',
'optional': True
}, {
'role': 'ceph-mon',
'display_name': 'ceph monitor',
'description': 'ceph monitor server'
}, {
'role': 'ceph-osd',
'display_name': 'ceph OSD',
'description': 'ceph storage server'
}, {
'role': 'ceph-radosgw',
'display_name': 'ceph radosgw',
'description': 'ceph object gateway',
'optional': True
}, {
'role': 'openstack_config_mon',
'display_name': 'ceph-os mon config',
'description': 'ceph openstack Monitor config',
'optional': True
}, {
'role': 'openstack_config_radosgw',
'display_name': 'ceph-os radosgw config',
'description': 'ceph openstack radosgw config',
'optional': True
}]

View File

@ -0,0 +1,69 @@
#import simplejson as json
#import uuid
#from copy import deepcopy
#set fsid = str(uuid.uuid4())
#set public_network_subnet = $network_mapping.public_network.subnet
#set cluster_network_subnet = $network_mapping.cluster_network.subnet
#set osd_pool_pg_num = $getVar('osd_pool_pg_num', '1024')
#set osd_pool_pgp_num = $getVar('osd_pool_pgp_num', '1024')
#set osd_pool_size = $getVar('osd_pool_size', '3')
#set journal_size = $getVar('journal_size', '10000')
#set osd_op_threads = $getVar('op_threads', 10)
#set devices = []
#if not $getVar('osd_devices', {})
#set devices_info = $osd_devices
#set devices_num = len($devices_info)
#set devices = [x for x in range($devices_num)]
#set index = 0
#for device, config in $devices_info.iteritems()
#set temp = deepcopy($config)
#set temp["device"] = $device
#set devices[index] = $temp
#set index = $index + 1
#end for
#end if
#set devices = json.dumps($devices, encoding='utf-8')
{
"name": "ceph_env",
"description": "",
"cookbook_versions": {
"ceph": "~> 0.2.1"
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"ceph": {
"config": {
"fsid": "$fsid",
"global": {
"public network": "$public_network_subnet",
"cluster network": "$cluster_network_subnet",
"auth cluster required": "cephx",
"auth service required": "cephx",
"auth client required": "cephx",
"osd pool default pg num": "$osd_pool_pg_num",
"osd pool default pgp num": "$osd_pool_pgp_num",
"osd pool default size": "$osd_pool_size"
},
"mon": {
"debug mon": "20",
"debug paxos": "1/5",
"debug auth": "2"
},
"osd": {
"osd journal size": "$journal_size",
"filestore xattr use omap": true,
"osd op threads": $osd_op_threads
}
},
"osd_devices": $devices
}
},
"override_attributes": {
}
}

View File

@ -0,0 +1,40 @@
#import uuid
#set UUID = str(uuid.uuid4())
{
"name": "ceph_env",
"description": "",
"cookbook_versions": {
"ceph": "~> 0.2.1"
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"ceph": {
"config": {
"fsid": "$UUID",
"global": {
"public network": "10.145.88.0/23",
"cluster network": "172.16.100.0/24",
"auth cluster required": "cephx",
"auth service required": "cephx",
"auth client required": "cephx",
"osd pool default pg num": "1024",
"osd pool default pgp num": "1024",
"osd pool default size": "3"
},
"mon": {
"debug mon": "20",
"debug paxos": "1/5",
"debug auth": "2"
},
"osd": {
"osd journal size": "10000",
"filestore xattr use omap": true,
"osd op threads": 10
}
}
}
},
"override_attributes": {
}
}

View File

@ -0,0 +1,407 @@
#set ha_vip = $getVar('ha_vip')
#set ha_proxy_role = $getVar('os_ha', None)
#set ha_proxy_nic = $ha_proxy_role.management.interface
#set controller_role = $getVar('os_compute_controller', None)
## Contoller node management IP/interface
#set controller_ip = $controller_role.management.ip
#set controller_nic = $controller_role.management.interface
## Compute node management IP/interface
#set compute_role = $getVar('os_compute_worker', None)
#set compute_nic = $compute_role.management.interface
## Network server/worker node IP/interface
#set network_server_role = $get_role('os_network_server', [$controller_role])
#set network_worker_role = $get_role('os_network_worker', [$compute_role])
#set network_server_ip = $network_server_role.management.ip
#set network_server_nic = $network_server_role.management.interface
## Network worker node management IP/interface
#set network_worker_ip = $network_worker_role.management.ip
#set network_worker_nic = $network_worker_role.management.interface
#set network_worker_public_nic = $network_worker_role.public.interface
#set network_worker_tenant_nic = $network_worker_role.tenant.interface
## Database node management IP
#set db_role = $get_role('os_ops_database', $controller_role)
#set db_ip = $db_role.management.ip
#set db_nic = $db_role.management.interface
## Message queue node management IP/interface
#set msg_queue_role = $get_role('os_ops_messaging', $controller_role)
#set msg_queue_ip = $msg_queue_role.management.ip
## Identity (keystone) node IP/interface
#set identity_role = $get_role('os_identity', $controller_role)
#set identity_ip = $identity_role.management.ip
#set identity_nic = $identity_role.management.interface
## Glance node management IP/interface
#set glance_role = $get_role('os_image', $controller_role)
#set glance_ip = $glance_role.management.ip
#set glance_nic = $glance_role.management.interface
## Cinder node management IP/interface
#set cinder_role = $get_role('os_block_storage_controller', $controller_role)
#set cinder_controller_ip = $cinder_role.management.ip
#set cinder_controller_nic = $cinder_role.management.interface
## Dashboard node management IP/interface
#set dash_role = $get_role('os_dashboard', $controller_role)
#set dash_ip = $dash_role.management.ip
#def get_role($role_name, $default_roles=None)
#set target_role = $getVar($role_name, None)
#if $target_role is None and $default_roles is not None
#if isinstance($default_roles, list)
#for $role in $default_roles
#if $role is not None
#set target_role = $role
#break
#end if
#end for
#else
#set target_role = $default_roles
#end if
#end if
#return $target_role
#end def
{
"name": "testing",
"description": "Environment used in Ceph and Openstack Icehouse",
"cookbook_versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"ceph": {
"keystone environment": "openstack-ceph",
"radosgw domain": "test-ceph1",
"is_keystone_integration": true,
"config": {
"fsid": "82850ab3-f2b7-4eed-b6c2-29178a005750",
"global": {
"public network": "10.145.88.0/23",
"cluster network": "172.16.100.0/24",
"osd pool default pg num": "512",
"osd pool default pgp num": "512",
"osd pool default size": "2",
"max open files": "131072"
},
"osd": {
"osd journal size": "10000",
"filestore xattr use omap": true,
"osd mkfs type": "xfs",
"osd mount options xfs": "rw,noatime,inode64,logbsize=256k,delaylog",
"osd mkfs options xfs": "-f -i size=2048",
"filestore max inline xattr size": "254",
"filestore max inline xattrs": "6",
"osd_op_threads": "20",
"filestore_queue_max_ops": "500",
"filestore_queue_committing_max_ops": "5000",
"journal_max_write_entries": "1000",
"journal_queue_max_ops": "3000",
"objecter_inflight_ops": "10240",
"filestore_queue_max_bytes": "1048576000",
"filestore_queue_committing_max_bytes": "1048576000",
"journal_max_write_bytes": "1048576000",
"journal_queue_max_bytes": "1048576000",
"ms_dispatch_throttle_bytes": "1048576000",
"objecter_infilght_op_bytes": "1048576000",
"filestore_max_sync_interval": "10",
"filestore_flusher": "false",
"filestore_flush_min": "0",
"filestore_sync_flush": true
}
}
},
"haproxy": {
"incoming_address": "$ha_vip"
},
"keepalived": {
"vip": {
"ipaddress": "$ha_vip",
"interface": "$ha_proxy_nic"
}
},
"mysql": {
"server_root_password": "test",
"server_debian_password": "root",
"server_repl_password": "root",
"allow_remote_root": true,
"root_network_acl": "%"
},
"collectd": {
"server": {
"host": "metrics",
"port": "2003",
"protocol": "udp"
}
},
"openstack": {
"auth": {
"validate_certs": false
},
"block-storage": {
"syslog": {
"use": false
},
"api": {
"ratelimit": "False"
},
"debug": true,
"volume": {
"driver": "cinder.volume.drivers.rbd.RBDDriver"
},
"rbd_pool": "volumes",
"rbd_secret_uuid": "8b8441cc-949c-43ce-8bbc-f50e3bfeeaee",
"rbd_ceph_conf": "/etc/ceph/ceph.conf",
"rbd_flatten_volume_from_snapshot": false,
"rbd_max_clone_depth": 5,
"glance_api_version": 2
},
"dashboard": {
"use_ssl": "false"
},
"compute": {
"syslog": {
"use": false
},
"libvirt": {
"bind_interface": "$compute_nic",
"images_type": "rbd",
"images_rbd_pool": "vms"
},
"novnc_proxy": {
"bind_interface": "$compute_nic"
},
"xvpvnc_proxy": {
"bind_interface": "$compute_nic"
},
"ratelimit": {
"api": {
"enabled": false
},
"volume": {
"enabled": false
}
},
"network": {
"service_type": "neutron"
}
},
"network": {
"verbose": "True",
"debug": "True",
"service_plugins": [
"router"
],
"ml2": {
"type_drivers": "gre",
"tenant_network_types": "gre",
"tunnel_id_ranges": "1:1000",
"enable_security_group": "True"
},
"openvswitch": {
"tenant_network_type": "gre",
"enable_tunneling": "True",
"tunnel_id_ranges": "1:1000",
"bind_interface": "$network_worker_tenant_nic"
},
"l3": {
"external_network_bridge_interface": "$network_worker_public_nic"
}
},
"db": {
"bind_interface": "$db_nic",
"compute": {
"host": "$db_ip"
},
"identity": {
"host": "$db_ip"
},
"image": {
"host": "$db_ip"
},
"network": {
"host": "$db_ip"
},
"volume": {
"host": "$db_ip"
},
"dashboard": {
"host": "$db_ip"
}
},
"developer_mode": true,
"endpoints": {
"db": {
"host": "$db_ip"
},
"mq": {
"host": "$msg_queue_ip"
},
"compute-api": {
"host": "$ha_vip",
"scheme": "http",
"port": "8774",
"path": "/v2/%(tenant_id)s"
},
"compute-api-bind": {
"bind_interface": "$controller_nic"
},
"compute-ec2-admin": {
"host": "$ha_vip",
"scheme": "http",
"port": "8773",
"path": "/services/Admin"
},
"compute-ec2-api": {
"host": "$ha_vip",
"scheme": "http",
"port": "8773",
"path": "/services/Cloud"
},
"compute-novnc": {
"host": "$ha_vip",
"scheme": "http",
"port": "6080",
"path": "/vnc_auto.html"
},
"compute-novnc-bind": {
"bind_interface": "$controller_nic"
},
"compute-vnc-bind": {
"bind_interface" : "$compute_nic"
},
"vnc_bind": {
"bind_interface": "$controller_nic"
},
"image-api": {
"host": "$ha_vip",
"scheme": "http",
"port": "9292",
"path": "/v2"
},
"image-api-bind": {
"bind_interface": "$glance_nic"
},
"image-registry": {
"bind_interface": "$glance_nic"
},
"image-registry-bind": {
"bind_interface": "$glance_nic"
},
"identity-bind": {
"bind_interface": "$identity_nic"
},
"identity-api": {
"host": "$ha_vip",
"scheme": "http",
"port": "5000",
"path": "/v2.0"
},
"identity-admin": {
"host": "$ha_vip",
"scheme": "http",
"port": "35357",
"path": "/v2.0"
},
"block-storage-api": {
"host": "$ha_vip",
"scheme": "http",
"port": "8776",
"path": "/v1/%(tenant_id)s"
},
"block-storage-api-bind": {
"bind_interface": "$cinder_controller_nic"
},
"network-api": {
"host": "$ha_vip",
"scheme": "http",
"port": "9696",
"path": ""
},
"network-api-bind": {
"bind_interface": "$network_server_nic"
}
},
"identity": {
"admin_user": "admin",
"bind_interface": "$identity_nic",
"catalog": {
"backend": "sql"
},
"debug": true,
"roles": [
"admin",
"member"
],
"syslog": {
"use": false
},
"tenants": [
"admin",
"service",
"demo"
],
"token": {
"backend": "sql"
},
"users": {
"admin": {
"password": "admin",
"default_tenant": "admin",
"roles": {
"admin": [
"admin"
]
}
},
"demo": {
"password": "demo",
"default_tenant": "demo",
"roles": {
"member": [
"demo"
]
}
}
}
},
"image": {
"api": {
"bind_interface": "$glance_nic",
"default_store": "rbd"
},
"debug": true,
"registry": {
"bind_interface": "$glance_nic"
},
"syslog": {
"use": false
},
"upload_image": {
"cirros": "http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img"
},
"upload_images": [
"cirros"
]
},
"memcached_servers": [
"$identity_ip:11211"
],
"mq": {
"user": "guest",
"password": "test",
"vhost": "/nova",
"network": {
"service_type": "rabbitmq"
}
}
}
}
}

View File

@ -0,0 +1,462 @@
#import simplejson as json
#import uuid
#from copy import deepcopy
## Ceph cluster config
#set fsid = str(uuid.uuid4())
#set rbd_secret_uuid = str(uuid.uuid4())
#set public_network_subnet = $network_mapping.public_network.subnet
#set cluster_network_subnet = $network_mapping.cluster_network.subnet
#set osd_pool_pg_num = $getVar('osd_pool_pg_num', '1024')
#set osd_pool_pgp_num = $getVar('osd_pool_pgp_num', '1024')
#set osd_pool_size = $getVar('osd_pool_size', '3')
#set journal_size = $getVar('journal_size', '10000')
#set osd_op_threads = $getVar('op_threads', 10)
#set devices = []
#if not $getVar('osd_devices', {})
#set devices_info = $osd_devices
#set devices_num = len($devices_info)
#set devices = [x for x in range($devices_num)]
#set index = 0
#for device, config in $devices_info.iteritems()
#set temp = deepcopy($config)
#set temp["device"] = $device
#set devices[index] = $temp
#set index = $index + 1
#end for
#end if
#set devices = json.dumps($devices, encoding='utf-8')
#set radosgw_role = $getVar('ceph_radosgw', '')
#set radosgw_domain = ''
#if $radosgw_role != ''
#set radosgw_domain = $radosgw_role.hostname
#end if
## OpenStack config
## Contoller node management IP/interface
#set controller_role = $get_role('os_compute_controller', $getVar('os_controller', None))
#set controller_ip = $controller_role.management.ip
#set controller_nic = $controller_role.management.interface
## Compute node management IP/interface
#set compute_role = $getVar('os_compute_worker', None)
#set compute_nic = $compute_role.management.interface
## Network server/worker node IP/interface
#set network = $getVar('os_network', None)
#set network_server_role = $get_role('os_network_server', [$network, $controller_role])
#set network_worker_role = $get_role('os_network_worker', [$network, $compute_role])
#set network_server_ip = $network_server_role.management.ip
#set network_server_nic = $network_server_role.management.interface
## Network worker node management IP/interface
#set network_worker_ip = $network_worker_role.management.ip
#set network_worker_nic = $network_worker_role.management.interface
#set network_worker_public_nic = $network_worker_role.public.interface
#set network_worker_tenant_nic = $network_worker_role.tenant.interface
## Database node management IP
#set db_role = $get_role('os_ops_database', $controller_role)
#set db_ip = $db_role.management.ip
#set db_nic = $db_role.management.interface
## Message queue node management IP/interface
#set msg_queue_role = $get_role('os_ops_messaging', $controller_role)
#set msg_queue_ip = $msg_queue_role.management.ip
## Identity (keystone) node IP/interface
#set identity_role = $get_role('os_identity', $controller_role)
#set identity_ip = $identity_role.management.ip
#set identity_nic = $identity_role.management.interface
## Glance node management IP/interface
#set glance_role = $get_role('os_image', $controller_role)
#set glance_ip = $glance_role.management.ip
#set glance_nic = $glance_role.management.interface
## Cinder node management IP/interface
#set cinder_role = $get_role('os_block_storage_controller', $controller_role)
#set cinder_controller_ip = $cinder_role.management.ip
#set cinder_controller_nic = $cinder_role.management.interface
## Dashboard node management IP/interface
#set dash_role = $get_role('os_dashboard', $controller_role)
#set dash_ip = $dash_role.management.ip
#def get_role($role_name, $default_roles=None)
#set target_role = $getVar($role_name, None)
#if $target_role is None and $default_roles is not None
#if isinstance($default_roles, list)
#for $role in $default_roles
#if $role is not None
#set target_role = $role
#break
#end if
#end for
#else
#set target_role = $default_roles
#end if
#end if
#return $target_role
#end def
{
"name": "testing",
"description": "Environment used in testing the upstream cookbooks and reference Chef repository",
"cookbook_versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"ceph": {
"keystone environment": "openstack-ceph",
"radosgw domain": "$radosgw_domain",
"config": {
"fsid": "$fsid",
"global": {
"public network": "$public_network_subnet",
"cluster network": "$cluster_network_subnet",
"osd pool default pg num": "$osd_pool_pg_num",
"osd pool default pgp num": "$osd_pool_pgp_num",
"osd pool default size": "$osd_pool_size",
"max open files": "131072"
},
"osd": {
"osd journal size": "$journal_size",
"filestore xattr use omap": true,
"osd mkfs type": "xfs",
"osd mount options xfs": "rw,noatime,inode64,logbsize=256k,delaylog",
"osd mkfs options xfs": "-f -i size=2048",
"filestore max inline xattr size": "254",
"filestore max inline xattrs": "6",
"osd_op_threads": "$osd_op_threads",
"filestore_queue_max_ops": "500",
"filestore_queue_committing_max_ops": "5000",
"journal_max_write_entries": "1000",
"journal_queue_max_ops": "3000",
"objecter_inflight_ops": "10240",
"filestore_queue_max_bytes": "1048576000",
"filestore_queue_committing_max_bytes": "1048576000",
"journal_max_write_bytes": "1048576000",
"journal_queue_max_bytes": "1048576000",
"ms_dispatch_throttle_bytes": "1048576000",
"objecter_infilght_op_bytes": "1048576000",
"filestore_max_sync_interval": "10",
"filestore_flusher": "false",
"filestore_flush_min": "0",
"filestore_sync_flush": true
}
},
"osd_devices": $devices
},
"mysql": {
"server_root_password": "test",
"server_debian_password": "root",
"server_repl_password": "root",
"allow_remote_root": true,
"root_network_acl": "%"
},
"collectd": {
"server": {
"host": "metrics",
"port": "2003",
"protocol": "udp"
}
},
"openstack": {
"auth": {
"validate_certs": false
},
"block-storage": {
"syslog": {
"use": false
},
"api": {
"ratelimit": "False"
},
"volume": {
"driver": "cinder.volume.drivers.rbd.RBDDriver"
},
"debug": true,
"rbd_pool": "volumes",
"rbd_secret_uuid": "$rbd_secret_uuid",
"rbd_ceph_conf": "/etc/ceph/ceph.conf",
"rbd_flatten_volume_from_snapshot": false,
"rbd_max_clone_depth": 5,
"glance_api_version": 2
},
"dashboard": {
"use_ssl": "false"
},
"compute": {
"syslog": {
"use": false
},
"libvirt": {
"bind_interface": "$compute_nic",
"images_type": "rbd",
"images_rbd_pool": "vms"
},
"novnc_proxy": {
"bind_interface": "$compute_nic"
},
"xvpvnc_proxy": {
"bind_interface": "$compute_nic"
},
"ratelimit": {
"api": {
"enabled": false
},
"volume": {
"enabled": false
}
},
"network": {
"service_type": "neutron"
}
},
"network": {
"verbose": "True",
"debug": "True",
"service_plugins": [
"router"
],
"ml2": {
"type_drivers": "gre",
"tenant_network_types": "gre",
"tunnel_id_ranges": "1:1000",
"enable_security_group": "True"
},
"openvswitch": {
"tenant_network_type": "gre",
"enable_tunneling": "True",
"tunnel_id_ranges": "1:1000",
"bind_interface": "$network_worker_tenant_nic"
},
"l3": {
"external_network_bridge_interface": "$network_worker_public_nic"
}
},
"db": {
"bind_interface": "$db_nic",
"compute": {
"host": "$db_ip"
},
"identity": {
"host": "$db_ip"
},
"image": {
"host": "$db_ip"
},
"network": {
"host": "$db_ip"
},
"volume": {
"host": "$db_ip"
},
"dashboard": {
"host": "$db_ip"
},
"telemetry": {
"host": "$db_ip"
},
"orchestration": {
"host": "$db_ip"
}
},
"developer_mode": true,
"endpoints": {
"db": {
"host": "$db_ip"
},
"mq": {
"host": "$msg_queue_ip"
},
"compute-api": {
"host": "$controller_ip",
"scheme": "http",
"port": "8774",
"path": "/v2/%(tenant_id)s"
},
"compute-api-bind": {
"bind_interface": "$controller_nic"
},
"compute-ec2-admin": {
"host": "$controller_ip",
"scheme": "http",
"port": "8773",
"path": "/services/Admin"
},
"compute-ec2-api": {
"host": "$controller_ip",
"scheme": "http",
"port": "8773",
"path": "/services/Cloud"
},
"compute-novnc": {
"host": "$controller_ip",
"scheme": "http",
"port": "6080",
"path": "/vnc_auto.html"
},
"compute-novnc-bind": {
"bind_interface": "$controller_nic"
},
"compute-vnc-bind": {
"bind_interface" : "$compute_nic"
},
"vnc_bind": {
"bind_interface": "$controller_nic"
},
"image-api": {
"host": "$glance_ip",
"scheme": "http",
"port": "9292",
"path": "/v2"
},
"image-api-bind": {
"bind_interface": "$glance_nic"
},
"image-registry": {
"host": "$glance_ip",
"scheme": "http",
"port": "9191",
"path": "/v2"
},
"image-registry-bind": {
"bind_interface": "$glance_nic"
},
"identity-bind": {
"bind_interface": "$identity_nic"
},
"identity-api": {
"host": "$identity_ip",
"scheme": "http",
"port": "5000",
"path": "/v2.0"
},
"identity-admin": {
"host": "$identity_ip",
"scheme": "http",
"port": "35357",
"path": "/v2.0"
},
"block-storage-api": {
"host": "$cinder_controller_ip",
"scheme": "http",
"port": "8776",
"path": "/v1/%(tenant_id)s"
},
"block-storage-api-bind": {
"bind_interface": "$cinder_controller_nic"
},
"telemetry-api": {
"host": "$controller_ip",
"scheme": "http",
"port": "8777",
"path": "/v1"
},
"network-api": {
"host": "$network_server_ip",
"scheme": "http",
"port": "9696",
"path": ""
},
"network-api-bind": {
"bind_interface": "$network_server_nic"
},
"orchestration-api": {
"host": "$controller_ip",
"scheme": "http",
"port": "8004",
"path": "/v1/%(tenant_id)s"
},
"orchestration-api-cfn": {
"host": "$controller_ip",
"scheme": "http",
"port": "8000",
"path": "/v1"
}
},
"identity": {
"admin_user": "admin",
"bind_interface": "$identity_nic",
"catalog": {
"backend": "sql"
},
"debug": true,
"roles": [
"admin",
"member"
],
"syslog": {
"use": false
},
"tenants": [
"admin",
"service",
"demo"
],
"token": {
"backend": "sql"
},
"users": {
"admin": {
"password": "admin",
"default_tenant": "admin",
"roles": {
"admin": [
"admin"
]
}
},
"demo": {
"password": "demo",
"default_tenant": "demo",
"roles": {
"member": [
"demo"
]
}
}
}
},
"image": {
"api": {
"bind_interface": "$glance_nic",
"default_store": "rbd"
},
"debug": true,
"registry": {
"bind_interface": "$glance_nic"
},
"syslog": {
"use": false
},
"upload_image": {
"cirros": "http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img"
},
"upload_images": [
"cirros"
]
},
"memcached_servers": [
"$identity_ip:11211"
],
"mq": {
"user": "guest",
"password": "test",
"vhost": "/nova",
"network": {
"service_type": "rabbitmq"
}
}
}
}
}

View File

@ -28,7 +28,7 @@
#end if
#if $val.is_mgmt:
#set mac_key = '-'.join(('macaddress', $nic))
#set dns_key = '-'.join(('dns', $nic))
#set dns_key = '-'.join(('dnsname', $nic))
#set $rekeyed[$mac_key] = $mac
#set $rekeyed[$dns_key] = $dns
#end if