solar/spec/deployment_blocks.spec
Dmitry Shulyak dc3099c2af Building block of the deployment
Defined profiles/roles/resources entities,
and outlined the way they should work.
2015-03-28 18:36:47 -07:00

61 lines
1.4 KiB
Python

Profile is a global wrapper for all resources in environment.
Profile is versioned and executed by particular driver.
Profile is a container for resources.
Resources can be grouped by roles entities.
::
id: HA
type: profile
version: 0.1
# adapter for any application that satisfies our requirements
driver: ansible
Role is a logical wrapper of resources.
We will provide "opinionated" wrappers, but user should
be able to compose resource in any way.
::
roles:
- id: controller
type: role
resources: []
Resource should have deployment logic for several events:
main deployment, removal of resource, scale up of resource ?
Resource should have list of input parameters that resource provides.
Resources are isolated, and should be executable as long as
required data provided.
::
id: rabbitmq
type: resource
driver: ansible_playbook
actions:
run: $install_rabbitmq_playbook
input:
image: fuel/rabbitmq
port: 5572
# we need to be able to select ip addresses
listen: [{{management.ip}}, {{public.ip}}]
::
id: nova_compute
type: resource
driver: ansible_playbook
actions:
run: $link_to_ansible_playbook
remove: $link_to_another_playbook_that_will_migrate_vms
maintenance: $link_to_playbook_that_will_put_into_maintenance
input:
image: fuel/compute
driver: kvm
rabbitmq_hosts: []