Merge "Overcloud: bump HOT version to 2015-04-30"
[apex-tripleo-heat-templates.git] / puppet / cinder-storage-puppet.yaml
1 heat_template_version: 2015-04-30
2 description: 'OpenStack cinder storage configured by Puppet'
3 parameters:
4   Image:
5     default: overcloud-cinder-volume
6     type: string
7   CinderEnableIscsiBackend:
8     default: true
9     description: Whether to enable or not the Iscsi backend for Cinder
10     type: boolean
11   CinderISCSIHelper:
12     default: tgtadm
13     description: The iSCSI helper to use with cinder.
14     type: string
15   CinderLVMLoopDeviceSize:
16     default: 5000
17     description: The size of the loopback file used by the cinder LVM driver.
18     type: number
19   Debug:
20     default: ''
21     description: Set to True to enable debugging on all services.
22     type: string
23   VirtualIP:
24     default: ''
25     type: string
26   ExtraConfig:
27     default: {}
28     description: |
29       Additional configuration to inject into the cluster. The JSON should have
30       the following structure:
31         {"FILEKEY":
32           {"config":
33             [{"section": "SECTIONNAME",
34               "values":
35                 [{"option": "OPTIONNAME",
36                   "value": "VALUENAME"
37                  }
38                 ]
39              }
40             ]
41           }
42         }
43       For instance:
44         {"nova":
45           {"config":
46             [{"section": "default",
47               "values":
48                 [{"option": "force_config_drive",
49                   "value": "always"
50                  }
51                 ]
52              },
53              {"section": "cells",
54               "values":
55                 [{"option": "driver",
56                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
57                  }
58                 ]
59              }
60             ]
61           }
62         }
63     type: json
64   Flavor:
65     description: Flavor for block storage nodes to request when deploying.
66     type: string
67     constraints:
68       - custom_constraint: nova.flavor
69   GlancePort:
70     default: "9292"
71     description: Glance port.
72     type: string
73   KeyName:
74     default: default
75     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
76     type: string
77   RabbitPassword:
78     default: 'guest'
79     type: string
80   RabbitUserName:
81     default: 'guest'
82     type: string
83   RabbitClientUseSSL:
84     default: false
85     description: >
86         Rabbit client subscriber parameter to specify
87         an SSL connection to the RabbitMQ host.
88     type: string
89   RabbitClientPort:
90     default: 5672
91     description: Set rabbit subscriber port, change this if using SSL
92     type: number
93   SnmpdReadonlyUserName:
94     default: ro_snmp_user
95     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
96     type: string
97   SnmpdReadonlyUserPassword:
98     default: unset
99     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
100     type: string
101     hidden: true
102   NtpServer:
103     type: string
104     default: ''
105   EnablePackageInstall:
106     default: 'false'
107     description: Set to true to enable package installation via Puppet
108     type: boolean
109
110 resources:
111   BlockStorage:
112     type: OS::Nova::Server
113     properties:
114       image:
115         {get_param: Image}
116       flavor: {get_param: Flavor}
117       key_name: {get_param: KeyName}
118       networks:
119         - network: ctlplane
120       user_data_format: SOFTWARE_CONFIG
121       user_data: {get_resource: NodeUserData}
122
123   NodeUserData:
124     type: OS::TripleO::NodeUserData
125
126   NetworkConfig:
127     type: OS::TripleO::BlockStorage::Net::SoftwareConfig
128
129   NetworkDeployment:
130     type: OS::TripleO::SoftwareDeployment
131     properties:
132       config: {get_attr: [NetworkConfig, config_id]}
133       server: {get_resource: BlockStorage}
134
135   BlockStorageDeployment:
136     type: OS::Heat::StructuredDeployment
137     properties:
138       server: {get_resource: BlockStorage}
139       config: {get_resource: BlockStorageConfig}
140       input_values:
141         debug: {get_param: Debug}
142         cinder_dsn: {list_join: ['', ['mysql://cinder:unset@', {get_param: VirtualIP} , '/cinder']]}
143         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
144         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
145         cinder_lvm_loop_device_size:
146           str_replace:
147             template: sizeM
148             params:
149               size: {get_param: CinderLVMLoopDeviceSize}
150         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
151         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
152         rabbit_username: {get_param: RabbitUserName}
153         rabbit_password: {get_param: RabbitPassword}
154         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
155         rabbit_client_port: {get_param: RabbitClientPort}
156         ntp_servers:
157           str_replace:
158             template: '["server"]'
159             params:
160               server: {get_param: NtpServer}
161         enable_package_install: {get_param: EnablePackageInstall}
162       signal_transport: NO_SIGNAL
163
164   # Map heat metadata into hiera datafiles
165   BlockStorageConfig:
166     type: OS::Heat::StructuredConfig
167     properties:
168       group: os-apply-config
169       config:
170         hiera:
171           hierarchy:
172             - heat_config_%{::deploy_config_name}
173             - volume
174             - all_nodes # provided by allNodesConfig
175             - '"%{::osfamily}"'
176             - common
177           datafiles:
178             common:
179               raw_data: {get_file: hieradata/common.yaml}
180             volume:
181               raw_data: {get_file: hieradata/volume.yaml}
182               oac_data:
183                 cinder_iscsi_ip_address: local-ipv4
184               mapped_data:
185                 # Cinder
186                 cinder::debug: {get_input: debug}
187                 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
188                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
189                 cinder::database_connection: {get_input: cinder_dsn}
190                 cinder::rabbit_userid: {get_input: rabbit_username}
191                 cinder::rabbit_password: {get_input: rabbit_password}
192                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
193                 cinder::rabbit_port: {get_input: rabbit_client_port}
194                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
195                 ntp::servers: {get_input: ntp_servers}
196                 enable_package_install: {get_input: enable_package_install}
197                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
198                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
199
200 outputs:
201   hosts_entry:
202     value:
203       str_replace:
204         template: "IP HOST"
205         params:
206           IP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
207           HOST: {get_attr: [BlockStorage, name]}
208   nova_server_resource:
209     description: Heat resource handle for the block storage server
210     value:
211       {get_resource: BlockStorage}