Merge pull request #27 from Mirantis/nova-api

nova-api resource
This commit is contained in:
Bogdan Dobrelya 2015-07-29 12:11:26 +02:00
commit f904b620b3
9 changed files with 199 additions and 50 deletions

View File

@ -279,25 +279,77 @@ def deploy():
signals.connect(cinder_puppet, cinder_volume_puppet) signals.connect(cinder_puppet, cinder_volume_puppet)
# NOVA # NOVA
# #nova_network_puppet = vr.create('nova_network_puppet', GitProvider(GIT_PUPPET_LIBS_URL, 'nova_network'), {'rabbitmq_user': 'guest', 'rabbitmq_password': 'guest'})[0] nova_api = vr.create('nova_api', 'resources/nova_api_puppet', {})[0]
# # TODO: fix rabbitmq user/password nova_db = vr.create('nova_db', 'resources/mariadb_db/', {
# nova_network_puppet = vr.create('nova_network_puppet', 'resources/nova_network_puppet', {'rabbitmq_user': 'guest', 'rabbitmq_password': 'guest'})[0] 'db_name': 'nova_db',
'login_user': 'root'})[0]
nova_db_user = vr.create('nova_db_user', 'resources/mariadb_user/', {
'user_name': 'nova',
'user_password': 'nova',
'login_user': 'root'})[0]
nova_keystone_user = vr.create('nova_keystone_user', 'resources/keystone_user', {
'user_name': 'nova',
'user_password': 'nova'})[0]
nova_keystone_role = vr.create('nova_keystone_role', 'resources/keystone_role', {
'role_name': 'admin'})[0]
nova_keystone_service_endpoint = vr.create('nova_keystone_service_endpoint', 'resources/keystone_service_endpoint', {
'endpoint_name': 'nova',
'adminurl': 'http://{{admin_ip}}:{{admin_port}}/v2/%(tenant_id)s',
'internalurl': 'http://{{internal_ip}}:{{internal_port}}/v2/%(tenant_id)s',
'publicurl': 'http://{{public_ip}}:{{public_port}}/v2/%(tenant_id)s',
'description': 'OpenStack Compute Service',
'type': 'compute',
'public_port': 8774,
'internal_port': 8774,
'admin_port': 8774})[0]
# nova_keystone_user = vr.create('nova_keystone_user', 'resources/keystone_user', {'user_name': 'nova', 'user_password': 'nova'})[0] signals.connect(node1, nova_api)
# nova_keystone_role = vr.create('nova_keystone_role', 'resources/keystone_role', {'role_name': 'nova'})[0] signals.connect(node1, nova_db)
signals.connect(node1, nova_db_user)
signals.connect(mariadb_service1, nova_db, {
'port': 'login_port',
'root_password': 'login_password',
'root_user': 'login_user',
'ip' : 'db_host'})
signals.connect(mariadb_service1, nova_db_user, {
'port': 'login_port',
'root_password': 'login_password'})
signals.connect(nova_db, nova_db_user, {'db_name', 'db_host'})
signals.connect(services_tenant, nova_keystone_user)
signals.connect(nova_keystone_user, nova_keystone_role)
signals.connect(keystone_puppet, nova_api, {
'ip': 'keystone_host',
'admin_port': 'keystone_port'})
signals.connect(nova_keystone_user, nova_api, {
'user_name': 'keystone_user_name',
'tenant_name': 'keystone_tenant_name',
'user_password': 'keystone_password'})
signals.connect(rabbitmq_service1, nova_api, {
'ip': 'rabbitmq_host'})
signals.connect(openstack_rabbitmq_user, nova_api, {
'user_name': 'rabbitmq_user',
'password': 'rabbitmq_password'})
signals.connect(keystone_puppet, nova_keystone_service_endpoint, {
'ip': 'keystone_host',
'admin_port': 'keystone_admin_port',
'admin_token': 'admin_token'})
signals.connect(mariadb_service1, nova_api, {
'ip':'db_host'})
signals.connect(nova_db_user, nova_api, {
'user_name':'db_user',
'db_name':'db_name',
'user_password':'db_password',
'db_host' : 'db_host'})
signals.connect(nova_api, nova_keystone_service_endpoint, {
'ip': ['ip', 'public_ip', 'internal_ip', 'admin_ip'],
'ssh_key': 'ssh_key',
'ssh_user': 'ssh_user'})
signals.connect(nova_api, nova_keystone_service_endpoint, {
'ip': 'ip',
'ssh_key': 'ssh_key',
'ssh_user': 'ssh_user'})
# TODO: 'services' tenant-id is hardcoded
# nova_keystone_service_endpoint = vr.create('nova_keystone_service_endpoint', 'resources/keystone_service_endpoint', {'adminurl': 'http://{{ip}}:{{admin_port}}/v2/services', 'internalurl': 'http://{{ip}}:{{public_port}}/v2/services', 'publicurl': 'http://{{ip}}:{{port}}/v2/services', 'description': 'OpenStack Compute Service', 'type': 'compute', 'port': 8776, 'admin_port': 8776})[0]
# signals.connect(node1, nova_network_puppet)
# signals.connect(services_tenant, nova_keystone_user)
# signals.connect(neutron_keystone_user, nova_keystone_role)
# signals.connect(nova_keystone_user, nova_network_puppet, {'user_name': 'keystone_user', 'user_password': 'keystone_password', 'tenant_name': 'keystone_tenant'})
# signals.connect(keystone_puppet, nova_network_puppet, {'ip': 'keystone_host', 'port': 'keystone_port'}) # signals.connect(keystone_puppet, nova_network_puppet, {'ip': 'keystone_host', 'port': 'keystone_port'})
# signals.connect(nova_network_puppet, nova_keystone_service_endpoint, {'ip': 'ip', 'ssh_key': 'ssh_key', 'ssh_user': 'ssh_user'})
# signals.connect(keystone_puppet, nova_keystone_service_endpoint, {'ip': 'keystone_host', 'admin_port': 'keystone_port', 'admin_token': 'admin_token'}) # signals.connect(keystone_puppet, nova_keystone_service_endpoint, {'ip': 'keystone_host', 'admin_port': 'keystone_port', 'admin_token': 'admin_token'})
# signals.connect(rabbitmq_service1, nova_network_puppet, {'ip': 'rabbitmq_host', 'port': 'rabbitmq_port'}) # signals.connect(rabbitmq_service1, nova_network_puppet, {'ip': 'rabbitmq_host', 'port': 'rabbitmq_port'})
@ -350,11 +402,12 @@ def deploy():
actions.resource_action(cinder_api_puppet, 'run') actions.resource_action(cinder_api_puppet, 'run')
actions.resource_action(cinder_scheduler_puppet, 'run') actions.resource_action(cinder_scheduler_puppet, 'run')
actions.resource_action(cinder_volume_puppet, 'run') actions.resource_action(cinder_volume_puppet, 'run')
# actions.resource_action(nova_keystone_user, 'run') actions.resource_action(nova_db, 'run')
# actions.resource_action(nova_keystone_role, 'run') actions.resource_action(nova_db_user, 'run')
actions.resource_action(nova_keystone_user, 'run')
# actions.resource_action(nova_network_puppet, 'run') actions.resource_action(nova_keystone_role, 'run')
#actions.resource_action(nova_keystone_service_endpoint, 'run') actions.resource_action(nova_api, 'run')
actions.resource_action(nova_keystone_service_endpoint, 'run')
time.sleep(10) time.sleep(10)
@ -364,6 +417,10 @@ def undeploy():
db = get_db() db = get_db()
to_remove = [ to_remove = [
'nova_db',
'nova_db_user',
'nova_keystone_service_endpoint',
'nova_api',
'cinder_volume_puppet', 'cinder_volume_puppet',
'cinder_scheduler_puppet', 'cinder_scheduler_puppet',
'cinder_api_puppet', 'cinder_api_puppet',

View File

@ -1,6 +0,0 @@
# TODO
- hosts: [{{ ip }}]
sudo: yes
tasks:
- shell: docker stop {{ name }}
- shell: docker rm {{ name }}

View File

@ -1,6 +0,0 @@
# TODO
- hosts: [{{ ip }}]
sudo: yes
tasks:
- shell: docker run -d --net="host" --privileged \
--name {{ name }} {{ image }}

View File

@ -1,13 +0,0 @@
id: nova
handler: ansible
version: 1.0.0
input:
ip:
schema: str!
value:
port:
schema: int!
value: 8774
image: # TODO
schema: str!
value:

View File

@ -0,0 +1,29 @@
$resource = hiera($::resource_name)
$rabbitmq_user = $resource['input']['rabbitmq_user']['value']
$rabbitmq_password = $resource['input']['rabbitmq_password']['value']
$rabbitmq_host = $resource['input']['rabbitmq_host']['value']
$db_user = $resource['input']['db_user']['value']
$db_password = $resource['input']['db_password']['value']
$db_name = $resource['input']['db_name']['value']
$db_host = $resource['input']['db_host']['value']
$keystone_password = $resource['input']['keystone_password']['value']
$keystone_host = $resource['input']['keystone_host']['value']
$keystone_port = $resource['input']['keystone_port']['value']
$keystone_tenant_name = $resource['input']['keystone_tenant_name']['value']
$keystone_user = $resource['input']['keystone_user_name']['value']
class { 'nova':
database_connection => "mysql://${db_user}:${db_password}@${db_host}/${db_name}?charset=utf8",
rabbit_userid => $rabbitmq_user,
rabbit_password => $rabbitmq_password,
rabbit_host => $rabbitmq_host,
image_service => 'nova.image.glance.GlanceImageService',
glance_api_servers => 'localhost:9292',
verbose => false,
}
class { 'nova::api':
admin_password => $keystone_password,
ensure_package => 'absent'
}

View File

@ -0,0 +1,33 @@
$resource = hiera($::resource_name)
$rabbitmq_user = $resource['input']['rabbitmq_user']['value']
$rabbitmq_password = $resource['input']['rabbitmq_password']['value']
$rabbitmq_host = $resource['input']['rabbitmq_host']['value']
$db_user = $resource['input']['db_user']['value']
$db_password = $resource['input']['db_password']['value']
$db_name = $resource['input']['db_name']['value']
$db_host = $resource['input']['db_host']['value']
$keystone_password = $resource['input']['keystone_password']['value']
$keystone_host = $resource['input']['keystone_host']['value']
$keystone_port = $resource['input']['keystone_port']['value']
$keystone_tenant_name = $resource['input']['keystone_tenant_name']['value']
$keystone_user = $resource['input']['keystone_user_name']['value']
class { 'nova':
database_connection => "mysql://${db_user}:${db_password}@${db_host}/${db_name}?charset=utf8",
rabbit_userid => $rabbitmq_user,
rabbit_password => $rabbitmq_password,
rabbit_host => $rabbitmq_host,
image_service => 'nova.image.glance.GlanceImageService',
glance_api_servers => 'localhost:9292',
verbose => false,
}
class { 'nova::api':
enabled => true,
admin_user => $keystone_user,
admin_password => $keystone_password,
auth_host => $keystone_host,
auth_port => $keystone_port,
admin_tenant_name => $keystone_tenant_name,
}

View File

@ -0,0 +1,59 @@
id: nova
handler: puppet
puppet_module: nova
version: 1.0.0
input:
db_user:
schema: str!
value: nova
db_password:
schema: str!
value:
db_name:
schema: str!
value:
db_host:
schema: str!
value:
rabbitmq_user:
schema: str!
value:
rabbitmq_password:
schema: str!
value:
rabbitmq_host:
schema: str!
value:
keystone_password:
schema: str!
value:
keystone_port:
schema: int!
value:
keystone_host:
schema: str!
value:
keystone_tenant_name:
schema: str!
value:
keystone_user_name:
schema: str!
value:
git:
schema: {repository: str!, branch: str!}
value: {repository: 'https://github.com/openstack/puppet-nova', branch: 'stable/juno'}
ip:
schema: str!
value:
ssh_key:
schema: str!
value:
ssh_user:
schema: str!
value:
tags: [resource/nova_service, resources/nova, resource/nova-api]

View File

@ -2,7 +2,6 @@ $resource = hiera($::resource_name)
$port = "${resource['input']['port']['value']}" $port = "${resource['input']['port']['value']}"
$management_port = "${resource['input']['management_port']['value']}" $management_port = "${resource['input']['management_port']['value']}"
$node_name = $resource['input']['node_name']['value']
class { '::rabbitmq': class { '::rabbitmq':
service_manage => true, service_manage => true,

View File

@ -11,9 +11,6 @@ input:
schema: str! schema: str!
value: '' value: ''
node_name:
schema: str!
value: 'node1'
port: port:
schema: int! schema: int!
value: 5672 value: 5672