723db1317c
Currently all the OS::Nova::Server resource created don't pass any user-data. It's possible to pass user-data as well as using heat SoftwareConfig/SoftwareDeployment resources, and this can be useful when you have simple "first boot" tasks which are possible either via cloud-init, or via simple run-once scripts. This enables passing such data by implementing a new provider resource OS::TripleO::NodeUserData, which defaults to passing an empty mime archive (thus it's a no-op). An example of non no-op usage is also provided. Change-Id: Id0caba69768630e3a10439ba1fc2547a609c0cfe
138 lines
4.3 KiB
YAML
138 lines
4.3 KiB
YAML
# Copyright 2014 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
heat_template_version: 2013-05-23
|
|
description: Deploy Nagios
|
|
parameters:
|
|
adm_web_passwd:
|
|
type: string
|
|
description: Password for initial admin user
|
|
hidden: true
|
|
external_network:
|
|
type: string
|
|
description: Network to attach floating ips to.
|
|
default: ext-net
|
|
flavor:
|
|
type: string
|
|
description: What flavor to use for the nagios server.
|
|
default: m1.small
|
|
image:
|
|
type: string
|
|
description: Image for Nagios.
|
|
default: nagios
|
|
key_name:
|
|
type: string
|
|
description: What Nova SSH key to use for the nagios server.
|
|
default: default
|
|
monitor_networks:
|
|
type: json
|
|
description: Neutron networks to monitor.
|
|
default: []
|
|
nova_os_auth_url:
|
|
type: string
|
|
default: ''
|
|
description: URL for Keystone to access Nova.
|
|
nova_os_password:
|
|
type: string
|
|
hidden: true
|
|
description: password to present to nova_host_ip.
|
|
default: ''
|
|
nova_os_username:
|
|
type: string
|
|
description: username to present to nova_host_ip.
|
|
default: ''
|
|
nova_os_tenant_name:
|
|
type: string
|
|
description: tenant name to present to nova_host_ip.
|
|
default: ''
|
|
server_network:
|
|
type: string
|
|
description: Network id for server.
|
|
default: default-net
|
|
resources:
|
|
nagios_config:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
config:
|
|
nagios3:
|
|
adm_web_passwd: { get_input: adm_web_passwd }
|
|
os_auth_url: { get_input: nova_os_auth_url }
|
|
os_password: { get_input: nova_os_password }
|
|
os_username: { get_input: nova_os_username }
|
|
os_tenant_name: { get_input: nova_os_tenant_name }
|
|
monitor_networks: { get_input: monitor_networks }
|
|
completion-signal: { get_input: deploy_signal_id }
|
|
nagios_security_group:
|
|
type: OS::Neutron::SecurityGroup
|
|
properties:
|
|
name: monitoring
|
|
rules:
|
|
- direction: ingress
|
|
port_range_max: 22
|
|
port_range_min: 22
|
|
protocol: tcp
|
|
- direction: ingress
|
|
port_range_max: 80
|
|
port_range_min: 80
|
|
protocol: tcp
|
|
- direction: ingress
|
|
protocol: icmp
|
|
- direction: egress
|
|
protocol: tcp
|
|
- direction: egress
|
|
protocol: udp
|
|
- direction: egress
|
|
protocol: icmp
|
|
nagios_net_port:
|
|
type: OS::Neutron::Port
|
|
properties:
|
|
network_id: { get_param: server_network }
|
|
security_groups: [ { get_resource: nagios_security_group } ]
|
|
nagios_server:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
flavor: { get_param: flavor }
|
|
image: { get_param: image }
|
|
key_name: { get_param: key_name }
|
|
networks:
|
|
- network: { get_param: server_network }
|
|
port: { get_resource: nagios_net_port }
|
|
user_data_format: SOFTWARE_CONFIG
|
|
user_data: {get_resource: NodeUserData}
|
|
|
|
NodeUserData:
|
|
type: OS::TripleO::NodeUserData
|
|
|
|
nagios_floating_ip:
|
|
type: OS::Neutron::FloatingIP
|
|
properties:
|
|
floating_network_id: { get_param: external_network }
|
|
port_id: { get_resource: nagios_net_port }
|
|
nagios_deploy:
|
|
type: OS::Heat::StructuredDeployment
|
|
properties:
|
|
server: { get_resource: nagios_server }
|
|
config: { get_resource: nagios_config }
|
|
input_values:
|
|
adm_web_passwd: { get_param: adm_web_passwd }
|
|
nova_os_auth_url: { get_param: nova_os_auth_url }
|
|
nova_os_password: { get_param: nova_os_password }
|
|
nova_os_username: { get_param: nova_os_username }
|
|
nova_os_tenant_name: { get_param: nova_os_tenant_name }
|
|
monitor_networks: { get_param: monitor_networks }
|
|
outputs:
|
|
nagios_address:
|
|
description: Address of Nagios admin interface.
|
|
value: { get_attr: [ nagios_floating_ip, floating_ip_address ] }
|