update comment in the template
[heat-templates.git] / prod / cloud-monitoring-wordpress-single.yaml
blob20cd8251f048ec312761b2a3c0d07ae6f3acba00
1 heat_template_version: 2013-05-23
3 description: |
4   This is a Heat template to deploy a single Linux server running a WordPress.
6 parameters:
8   agent_config:
9     type: string
10     default: ""
12   # Server settings
13   wp_web_server_hostname:
14     description: WordPress Web Server Name
15     type: string
16     default: WordPress-Web
17     constraints:
18     - length:
19         min: 1
20         max: 64
21     - allowed_pattern: "^[a-zA-Z][a-zA-Z0-9-]*$"
22       description: |
23         Must begin with a letter and contain only alphanumeric characters.
25   image:
26     description: Server Image used for all servers.
27     type: string
28     default: Ubuntu 12.04 LTS (Precise Pangolin) (PVHVM)
29     constraints:
30     - allowed_values:
31       - Ubuntu 12.04 LTS (Precise Pangolin) (PVHVM)
32       description: Must be a supported operating system.
34   wp_web_server_flavor:
35     description: Web Cloud Server flavor
36     type: string
37     default: 2 GB General Purpose v1
38     constraints:
39     - allowed_values:
40       - 1 GB General Purpose v1
41       - 2 GB General Purpose v1
42       - 4 GB General Purpose v1
43       - 8 GB General Purpose v1
44       - 15 GB I/O v1
45       - 30 GB I/O v1
46       - 1GB Standard Instance
47       - 2GB Standard Instance
48       - 4GB Standard Instance
49       - 8GB Standard Instance
50       - 15GB Standard Instance
51       - 30GB Standard Instance
52       description: |
53         Must be a valid Rackspace Cloud Server flavor for the region you have
54         selected to deploy into.
56   # WordPress settings
57   domain:
58     description: Domain to be used with WordPress site
59     type: string
60     default: "example.com"
62   version:
63     description: Version of WordPress to install
64     type: string
65     default: 3.9.1
67   # Optional Apache settings (SSL certs)
68   # ssl_private_key:
69   #  description: Private SSL key
70   #  type: string
71   #  default: ""
72   #  constraints:
73   #  - allowed_pattern: "^(.){0,5000}$"
74   #    description: "Key values must be under 5,000 characters"
76   # ssl_certificate:
77   #  description: Public SSL key
78   #  type: string
79   #  default: ""
80   #  constraints:
81   #  - allowed_pattern: "^(.){0,5000}$"
82   #    description: "Certificate values must be under 5,000 characters"
84   # ssl_intermediate_certs:
85   #  description: Intermediate SSL Certificates
86   #  type: string
87   #  default: ""
88   #  constraints:
89   #  - allowed_pattern: "^(.){0,5000}$"
90   #    description: "Intermediate values must be under 5,000 characters."
92   # Database and system user configuration
93   prefix:
94     description: Prefix to use for
95     type: string
96     default: wp_
98   database_name:
99     description: WordPress database name
100     type: string
101     default: wordpress
103   database_host:
104     description: IP/Host of the database server
105     type: string
106     default: 127.0.0.1
108   memcached_host:
109     description: IP/Host of the memcached server
110     type: string
111     default: 127.0.0.1
113   username:
114     description: "Username for system, database, and WordPress logins."
115     type: string
116     default: wp_user
118   database_password:
119     description: "Password to use for database connections."
120     type: string
122   # SSH Keypair naming
123   ssh_keypair_name:
124     description: "keypair name to register with Nova for the root SSH key"
125     type: string
127   ssh_public_key:
128     type: string
130   ssh_private_key:
131     type: string
133   # Lsync public key
134   lsync_pub:
135     description: Public key for lsync configuration
136     type: string
137     constraints:
139   # Varnish Master backend
140   varnish_master_backend:
141     description: Master backend host for admin calls in Varnish
142     type: string
143     default: "localhost"
145   # Random strings for WP salting
146   wp_auth:
147     type: string
149   wp_logged_in:
150     type: string
152   wp_nonce:
153     type: string
155   wp_secure_auth:
156     type: string
158   # Chef configuration options
159   kitchen:
160     description: URL for the kitchen to use
161     type: string
162     default: https://github.com/rackspace-orchestration-templates/wordpress-multi
164   chef_version:
165     description: Version of chef client to use
166     type: string
167     default: 11.16.2
169   # parent stack id for metadata
170   parent_stack_id:
171     description: Stack id of the parent stack
172     type: string
173     default: "none"
175 resources:
177   wp_web_server:
178     type: "OS::Nova::Server"
179     properties:
180       name: { get_param: wp_web_server_hostname }
181       flavor: { get_param: wp_web_server_flavor }
182       image: { get_param: image }
183       key_name: { get_param: ssh_keypair_name }
184       config_drive: true
185       user_data_format: RAW
186       user_data: { get_param: agent_config }
187       metadata:
188         rax-heat: { get_param: parent_stack_id }
190   node_cpu_check:
191     type: Rackspace::CloudMonitoring::Check
192     properties:
193       entity: { get_resource: wp_web_server }
194       type: agent.cpu
195       label: node_cpu_check
196       details: {}
197       metadata:
198         rax-heat: { get_param: "OS::stack_id" }
199         stack-name: { get_param: "OS::stack_name" }
200       period: 30
201       timeout: 10
203   node_mem_check:
204     type: Rackspace::CloudMonitoring::Check
205     properties:
206       entity: { get_resource: wp_web_server }
207       type: agent.memory
208       label: node_mem_check
209       details: {}
210       metadata:
211         rax-heat: { get_param: "OS::stack_id" }
212         stack-name: { get_param: "OS::stack_name" }
213       period: 30
214       timeout: 10
216   node_filesystem_check:
217     type: Rackspace::CloudMonitoring::Check
218     properties:
219       entity: { get_resource: wp_web_server }
220       type: agent.filesystem
221       label: node_fs_check
222       details:
223         target: "/"
224       metadata:
225         rax-heat: { get_param: "OS::stack_id" }
226         stack-name: { get_param: "OS::stack_name" }
227       period: 30
228       timeout: 10
230   wp_web_server_setup:
231     type: "OS::Heat::ChefSolo"
232     depends_on: wp_web_server
233     properties:
234       username: root
235       private_key: { get_param: ssh_private_key }
236       host: { get_attr: [wp_web_server, accessIPv4] }
237       kitchen: { get_param: kitchen }
238       chef_version: { get_param: chef_version }
239       node:
240         apache:
241           listen_ports: [8080]
242           timeout: 30
243           serversignature: "Off"
244           traceenable: "Off"
245         varnish:
246           version: "3.0"
247           listen_port: "80"
248         wordpress:
249           version: { get_param: version }
250           server_aliases: [{ get_param: domain }]
251           dir:
252             str_replace:
253               template: "/var/www/vhosts/%domain%"
254               params:
255                 "%domain%": { get_param: domain }
256           db:
257             name: { get_param: database_name }
258             user: { get_param: username }
259             pass: { get_param: database_password }
260             host: { get_param: database_host }
261           keys:
262             auth: { get_param: wp_auth }
263             logged_in: { get_param: wp_logged_in }
264             nonce_key: { get_param: wp_nonce }
265             secure_auth_key: { get_param: wp_secure_auth }
266         rax:
267           apache:
268             domain: { get_param: domain }
269             # ssl_private_key: { get_param: ssl_private_key }
270             # ssl_certificate: { get_param: ssl_certificate }
271             # ssl_intermediate_certs: { get_param: ssl_intermediate_certs }
272           lsyncd:
273             ssh:
274               pub: { get_param: lsync_pub }
275           memcache:
276             server: { get_param: memcached_host }
277           packages:
278             - php5-imagick
279           varnish:
280             master_backend: { get_param: varnish_master_backend }
281           wordpress:
282             admin_pass: { get_param: database_password }
283             user:
284               name: { get_param: username }
285               group: { get_param: username }
286         run_list: ["recipe[apt]",
287                    "recipe[build-essential]",
288                    "recipe[rax-wordpress::apache-prep]",
289                    "recipe[rax-wordpress::x509]",
290                    "recipe[php]",
291                    "recipe[rax-install-packages]",
292                    "recipe[wordpress]",
293                    "recipe[rax-wordpress::user]",
294                    "recipe[rax-wordpress::memcache]",
295                    "recipe[varnish::repo]",
296                    "recipe[varnish]",
297                    "recipe[rax-wordpress::apache]",
298                    "recipe[rax-wordpress::varnish]",
299                    "recipe[rax-wordpress::firewall]",
300                    "recipe[rax-wordpress::lsyncd-client]"]
302 outputs:
303   accessIPv4:
304     value: { get_attr: [wp_web_server, accessIPv4] }
306   privateIPv4:
307     value: { get_attr: [wp_web_server, networks, private, 0] }