heat_template_version: 2014-10-16 description: > Heat WordPress template to support F23, using only Heat OpenStack-native resource types, and without the requirement for heat-cfntools in the image. WordPress is web software you can use to create a beautiful website or blog. This template installs a single-instance WordPress deployment using a local MySQL database to store the data. parameters: wp_instances_count: type: number default: 1 timeout: type: number description: Timeout for WaitCondition, seconds default: 1000 router_id: type: string description: ID of the router default: b9135c24-d998-4e2f-b0aa-2b0a40c21ae5 network_id: type: string description: ID of the network to allocate floating IP from default: 4eabc459-0096-4479-b105-67ec0cff18cb key_name: type: string description : Name of a KeyPair to enable SSH access to the instance default: nova-kp wp_instance_type: type: string description: Instance type for WordPress server default: m1.small wp_image: type: string description: > Name or ID of the image to use for the WordPress server. Recommended value is fedora-23.x86_64; http://cloud.fedoraproject.org/fedora-23.x86_64.qcow2. default: fedora-23.x86_64 image: type: string description: > Name or ID of the image to use for the gate-node. default: fedora-23.x86_64 instance_type: type: string description: Instance type for gate-node. default: m1.small db_name: type: string description: WordPress database name default: wordpress constraints: - length: { min: 1, max: 64 } description: db_name must be between 1 and 64 characters - allowed_pattern: '[a-zA-Z][a-zA-Z0-9]*' description: > db_name must begin with a letter and contain only alphanumeric characters db_username: type: string description: The WordPress database admin account username default: admin hidden: true constraints: - length: { min: 1, max: 16 } description: db_username must be between 1 and 16 characters - allowed_pattern: '[a-zA-Z][a-zA-Z0-9]*' description: > db_username must begin with a letter and contain only alphanumeric characters db_password: type: string description: The WordPress database admin account password default: admin hidden: true constraints: - length: { min: 1, max: 41 } description: db_password must be between 1 and 41 characters - allowed_pattern: '[a-zA-Z0-9]*' description: db_password must contain only alphanumeric characters db_root_password: type: string description: Root password for MySQL default: admin hidden: true constraints: - length: { min: 1, max: 41 } description: db_root_password must be between 1 and 41 characters - allowed_pattern: '[a-zA-Z0-9]*' description: db_root_password must contain only alphanumeric characters resources: wordpress_instances: type: OS::Heat::ResourceGroup properties: count: {get_param: wp_instances_count} resource_def: type: wp-instances.yaml properties: name: wp_%index% image: { get_param: wp_image } flavor: { get_param: wp_instance_type } key_name: { get_param: key_name } db_root_password: { get_param: db_root_password } db_name: { get_param: db_name } db_username: { get_param: db_username } db_password: { get_param: db_password } wc_notify: { get_attr: ['wait_handle', 'curl_cli'] } subnet: {get_resource: subnet} network: {get_resource: network} security_group: {get_resource: security_group} gate_instance: type: OS::Nova::Server properties: image: { get_param: image } flavor: { get_param: instance_type } key_name: { get_param: key_name } networks: - port: {get_resource: port_gate} user_data_format: RAW user_data: | #cloud-config packages: - python - siege - httpd-tools security_group: type: OS::Neutron::SecurityGroup properties: rules: - port_range_max: null port_range_min: null protocol: icmp remote_ip_prefix: 0.0.0.0/0 - port_range_max: 80 port_range_min: 80 protocol: tcp remote_ip_prefix: 0.0.0.0/0 - port_range_max: 443 port_range_min: 443 protocol: tcp remote_ip_prefix: 0.0.0.0/0 - port_range_max: 22 port_range_min: 22 protocol: tcp remote_ip_prefix: 0.0.0.0/0 network: type: OS::Neutron::Net properties: name: wordpress-network subnet: type: OS::Neutron::Subnet properties: cidr: 10.0.0.1/24 dns_nameservers: [8.8.8.8] ip_version: 4 network: {get_resource: network} port_gate: type: OS::Neutron::Port properties: fixed_ips: - subnet: {get_resource: subnet} network: {get_resource: network} replacement_policy: AUTO security_groups: - {get_resource: security_group} floating_ip: type: OS::Neutron::FloatingIP properties: port_id: {get_resource: port_gate} floating_network: {get_param: network_id} router_interface: type: OS::Neutron::RouterInterface properties: router_id: {get_param: router_id} subnet: {get_resource: subnet} wait_condition: type: OS::Heat::WaitCondition properties: handle: {get_resource: wait_handle} count: {get_param: wp_instances_count} timeout: {get_param: timeout} wait_handle: type: OS::Heat::WaitConditionHandle outputs: curl_cli: value: { get_attr: ['wait_handle', 'curl_cli'] } wp_nodes: value: { get_attr: ['wordpress_instances', 'attributes', 'ip'] } gate_node: value: { get_attr: ['floating_ip', 'floating_ip_address'] } net_name: value: { get_attr: ['network', 'name'] }