Merge "Drive DB initialization via Hiera"
[apex-tripleo-heat-templates.git] / ceph-storage.yaml
1 heat_template_version: 2015-04-30
2 description: 'Common Ceph Storage Configuration'
3 parameters:
4   Image:
5     type: string
6     default: overcloud-ceph-storage
7   KeyName:
8     default: default
9     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
10     type: string
11   Flavor:
12     default: baremetal
13     description: Flavor for block storage nodes to request when deploying.
14     type: string
15   CephClusterFSID:
16     default: ''
17     type: string
18     description: The Ceph cluster FSID. Must be a UUID.
19   CephMonKey:
20     default: ''
21     description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
22     type: string
23   CephAdminKey:
24     default: ''
25     description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
26     type: string
27   CephMonitors:
28     default: ''
29     description: The list of ip/names to use as Ceph monitors
30     type: json
31   ServiceNetMap:
32     default: {}
33     description: Mapping of service_name -> network name. Typically set
34                  via parameter_defaults in the resource registry.
35     type: json
36   UpdateIdentifier:
37     default: ''
38     type: string
39     description: >
40       Setting to a previously unused value during stack-update will trigger
41       package update on all nodes
42   Hostname:
43     type: string
44     default: '' # Defaults to Heat created hostname
45   ExtraConfig:
46     default: {}
47     description: |
48       Additional configuration to inject into the cluster. Note
49       that CephStorageExtraConfig takes precedence over ExtraConfig.
50     type: json
51   CephStorageExtraConfig:
52     default: {}
53     description: |
54       Role specific additional configuration to inject into the cluster.
55     type: json
56
57
58 resources:
59   CephStorage:
60     type: OS::Nova::Server
61     properties:
62       image:
63         {get_param: Image}
64       flavor: {get_param: OvercloudCephStorageFlavor}
65       key_name: {get_param: KeyName}
66       networks:
67         - network: ctlplane
68       user_data_format: SOFTWARE_CONFIG
69       user_data: {get_resource: NodeUserData}
70       name: {get_param: Hostname}
71
72   NodeUserData:
73     type: OS::TripleO::NodeUserData
74
75   StoragePort:
76     type: OS::TripleO::CephStorage::Ports::StoragePort
77     properties:
78       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
79
80   StorageMgmtPort:
81     type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
82     properties:
83       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
84
85   NetworkConfig:
86     type: OS::TripleO::CephStorage::Net::SoftwareConfig
87     properties:
88       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
89       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
90
91   NetworkDeployment:
92     type: OS::TripleO::SoftwareDeployment
93     properties:
94       config: {get_resource: NetworkConfig}
95       server: {get_resource: CephStorage}
96
97   CephStorageDeployment:
98     type: OS::Heat::StructuredDeployment
99     properties:
100       server: {get_resource: CephStorage}
101       config: {get_resource: CephStorageConfig}
102       signal_transport: NO_SIGNAL
103   CephStorageConfig:
104     type: OS::Heat::StructuredConfig
105     properties:
106       group: os-apply-config
107       config:
108         ceph:
109           fsid: {get_param: CephClusterFSID}
110           keyrings:
111             admin:
112               key: {get_param: CephAdminKey}
113           mon_nodes: {get_param: CephMonitors}
114   ControllerCephDeployment:
115     type: OS::Heat::StructuredDeployment
116     properties:
117       server: {get_resource: Controller}
118       config: {get_resource: ControllerCephConfig}
119       signal_transport: NO_SIGNAL
120   ControllerCephConfig:
121     type: OS::Heat::StructuredConfig
122     properties:
123       group: os-apply-config
124       config:
125         cinder:
126           include_ceph_backend: true
127         ceph:
128           fsid: {get_param: CephClusterFSID}
129           keyrings:
130             mon:
131               key: {get_param: CephMonKey}
132             admin:
133               key: {get_param: CephAdminKey}
134           mon_nodes: {get_param: CephMonitors}
135   NovaComputeCephDeployment:
136     depends_on: [ControllerCephDeployment]
137     type: OS::Heat::StructuredDeployment
138     properties:
139       server: {get_resource: NovaCompute}
140       config: {get_resource: NovaComputeCephConfig}
141       signal_transport: NO_SIGNAL
142   NovaComputeCephConfig:
143     type: OS::Heat::StructuredConfig
144     properties:
145       group: os-apply-config
146       config:
147         ceph:
148           fsid: {get_param: CephClusterFSID}
149           keyrings:
150             admin:
151               key: {get_param: CephAdminKey}
152           mon_nodes: {get_param: CephMonitors}
153 outputs:
154   hosts_entry:
155     value:
156       str_replace:
157         template: "IP HOST"
158         params:
159           IP: {get_attr: [CephStorage, networks, ctlplane, 0]}
160           HOST: {get_attr: [CephStorage, name]}
161   storage_ip_address:
162     description: IP address of the server in the storage network
163     value: {get_attr: [StoragePort, ip_address]}
164   storage_mgmt_ip_address:
165     description: IP address of the server in the storage_mgmt network
166     value: {get_attr: [StorageMgmtPort, ip_address]}
167   config_identifier:
168     description: identifier which changes if the node configuration may need re-applying
169     value: "None - NO_SIGNAL"