heat_template_version: queens description: Collectd client service parameters: ServiceData: default: {} description: Dictionary packing service data type: json ServiceNetMap: default: {} description: Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry. This mapping overrides those in ServiceNetMapDefaults. type: json EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set via parameter_defaults in the resource registry. type: json DefaultPasswords: default: {} type: json RoleName: default: '' description: Role name on which the service is applied type: string RoleParameters: default: {} description: Parameters specific to the role type: json GnocchiPassword: type: string description: The password for the gnocchi service and db account. hidden: true KeystoneRegion: type: string description: Keystone region for endpoint default: 'regionOne' MetricsQdrPort: default: '5666' description: Service name or port number on which the qdrouterd will accept connections. This argument must be string, even if the numeric form is used. type: string MetricsQdrUsername: default: 'guest' description: Username which should be used to authenticate to the deployed qdrouterd. type: string MetricsQdrPassword: default: 'guest' description: Password which should be used to authenticate to the deployed qdrouterd. type: string hidden: true CollectdConnectionType: default: 'gnocchi' description: Define which write plugin should collectd use. Currently supported are 'amqp1', 'network' and 'gnocchi'. type: string CollectdDefaultPollingInterval: default: 120 type: number description: > Controls how often registered read functions are called and with that the resolution of the collected data. This value can be overriden per plugin(per role) by setting "::collectd::plugin::::interval" key in ExtraConfig(ExtraConfig). CollectdDefaultPlugins: default: - disk - interface - load - memory - processes - tcpconns - unixsock type: comma_delimited_list description: > List of collectd plugins to activate on all overcloud hosts. See the documentation for the puppet-collectd module for a list plugins supported by the module (https://github.com/voxpupuli/puppet-collectd). Set this key to override the default list of plugins. Use CollectdExtraPlugins if you want to load additional plugins without overriding the defaults. CollectdExtraPlugins: default: [] type: comma_delimited_list description: > List of collectd plugins to activate on all overcloud hosts. See the documentation for the puppet-collectd module for a list plugins supported by the module (https://github.com/voxpupuli/puppet-collectd). Set this key to load plugins in addition to those in CollectdDefaultPlugins. CollectdServer: type: string description: > Address of remote collectd server to which we will send metrics. default: '' CollectdServerPort: type: number default: 25826 description: > Port on remote collectd server to which we will send metrics. CollectdUsername: type: string description: > Username for authenticating to the remote collectd server. The default is to not configure any authentication. default: '' CollectdPassword: type: string hidden: true description: > Password for authenticating to the remote collectd server. The default is to not configure any authentication. default: '' CollectdSecurityLevel: type: string description: > Security level setting for remote collectd connection. If it is set to Sign or Encrypt the CollectdPassword and CollectdUsername parameters need to be set. default: 'None' constraints: - allowed_values: - None - Sign - Encrypt CollectdGnocchiAuthMode: type: string description: > Type of authentication Gnocchi server is using. Supported values are 'basic' and 'keystone'. default: 'keystone' CollectdGnocchiProtocol: type: string description: API protocol Gnocchi server is using. default: 'http' CollectdGnocchiServer: type: string description: > The name or address of a gnocchi endpoint to which we should send metrics. default: nil CollectdGnocchiPort: type: number description: The port to which we will connect on the Gnocchi server. default: 8041 CollectdGnocchiUser: type: string description: > Username for authenticating to the remote Gnocchi server using simple authentication. default: nil CollectdGnocchiKeystoneAuthUrl: type: string description: Keystone endpoint URL to authenticate to. default: nil CollectdGnocchiKeystoneUserName: type: string description: Username for authenticating to Keystone. default: nil CollectdGnocchiKeystoneUserId: type: string description: User ID for authenticating to Keystone. default: nil CollectdGnocchiKeystonePassword: type: string description: Password for authenticating to Keystone default: nil hidden: true CollectdGnocchiKeystoneProjectId: type: string description: Project ID for authenticating to Keystone. default: nil CollectdGnocchiKeystoneProjectName: type: string description: Project name for authenticating to Keystone. default: nil CollectdGnocchiKeystoneUserDomainId: type: string description: User domain ID for authenticating to Keystone. default: nil CollectdGnocchiKeystoneUserDomainName: type: string description: User domain name for authenticating to Keystone. default: nil CollectdGnocchiKeystoneProjectDomainId: type: string description: Project domain ID for authenticating to Keystone. default: nil CollectdGnocchiKeystoneProjectDomainName: type: string description: Project domain name for authenticating to Keystone. default: nil CollectdGnocchiKeystoneRegionName: type: string description: Region name for authenticating to Keystone. default: nil CollectdGnocchiKeystoneInterface: type: string description: Type of Keystone endpoint to authenticate to. default: nil CollectdGnocchiKeystoneEndpoint: type: string description: > Explicitly state Gnocchi server URL if you want to override Keystone value default: nil CollectdGnocchiResourceType: type: string description: > Default resource type created by the collectd-gnocchi plugin in Gnocchi to store hosts. default: 'collectd' CollectdGnocchiBatchSize: type: number description: Minimum number of values Gnocchi should batch. default: 10 CollectdAmqpHost: type: string description: Hostname or IP address of the AMQP 1.0 intermediary. default: nil CollectdAmqpPort: type: string description: > Service name or port number on which the AMQP 1.0 intermediary accepts connections. This argument must be a string, even if the numeric form is used. default: '5666' CollectdAmqpUser: type: string description: > User part of credentials used to authenticate to the AMQP 1.0 intermediary. default: guest CollectdAmqpPassword: type: string description: > Password part of credentials used to authenticate to the AMQP 1.0 intermediary. default: guest hidden: true CollectdAmqpTransportName: type: string description: Name of the AMQP 1.0 transport. default: metrics CollectdAmqpAddress: type: string description: > This option specifies the prefix for the send-to value in the message. default: collectd CollectdAmqpInstances: type: json description: > Hash of hashes. Each inner hash represent Instance block in plugin configuration file. Key of outter hash represents instance name. The 'address' value concatenated with the 'name' given will be used as the send-to address for communications over the messaging link. default: {} CollectdAmqpRetryDelay: type: number description: > When the AMQP 1.0 connection is lost, defines the time in seconds to wait before attempting to reconnect. default: 1 CollectdAmqpInterval: type: number description: > Interval on which metrics should be sent to AMQP intermediary. If not set the default for all collectd plugins is used. default: -666 conditions: amqp_connection: equals: [{get_param: CollectdConnectionType}, 'amqp1'] amqp_default_connection: equals: [{get_param: CollectdAmqpHost}, nil] amqp_default_interval: equals: [{get_param: CollectdAmqpInterval}, -666] collectd_connection: equals: [{get_param: CollectdConnectionType}, 'network'] gnocchi_connection: equals: [{get_param: CollectdConnectionType}, 'gnocchi'] gnocchi_auth_basic: equals: [{get_param: CollectdGnocchiAuthMode}, 'basic'] gnocchi_default_connection: and: - equals: [{get_param: CollectdGnocchiServer}, nil] - equals: [{get_param: CollectdGnocchiKeystoneEndpoint}, nil] outputs: role_data: description: Role data for the Collectd client role. value: service_name: collectd config_settings: map_merge: - collectd::manage_repo: false collectd::purge: true collectd::recurse: true collectd::purge_config: true collectd::minimum_version: "5.7" collectd::plugin::unixsock::socketgroup: root collectd::plugin::unixsock::socketfile: /var/run/collectd-socket collectd::plugin::unixsock::deletesocket: true collectd::interval: {get_param: CollectdDefaultPollingInterval} tripleo.collectd.plugins.collectd: yaql: data: default_plugins: {get_param: CollectdDefaultPlugins} extra_plugins: {get_param: CollectdExtraPlugins} expression: > ($.data.default_plugins + $.data.extra_plugins) .flatten().distinct() - if: # Collectd connected to QDR - amqp_connection - map_merge: - tripleo::profile::base::metrics::collectd::amqp_transport_name: get_param: CollectdAmqpTransportName tripleo::profile::base::metrics::collectd::amqp_address: get_param: CollectdAmqpAddress tripleo::profile::base::metrics::collectd::amqp_instances: get_param: CollectdAmqpInstances tripleo::profile::base::metrics::collectd::amqp_retry_delay: get_param: CollectdAmqpRetryDelay - if: - amqp_default_interval - {} - tripleo::profile::base::metrics::collectd::amqp_interval: get_param: CollectdAmqpInterval - if: - amqp_default_connection - tripleo::profile::base::metrics::collectd::amqp_host: str_replace: template: "%{hiera('$NETWORK')}" params: $NETWORK: get_param: - ServiceNetMap - str_replace: template: "ROLENAMEMetricsQdrNetwork" params: ROLENAME: {get_param: RoleName} tripleo::profile::base::metrics::collectd::amqp_port: get_param: MetricsQdrPort tripleo::profile::base::metrics::collectd::amqp_user: get_param: MetricsQdrUsername tripleo::profile::base::metrics::collectd::amqp_password: get_param: MetricsQdrPassword - tripleo::profile::base::metrics::collectd::amqp_host: get_param: CollectdAmqpHost tripleo::profile::base::metrics::collectd::amqp_port: get_param: CollectdAmqpPort tripleo::profile::base::metrics::collectd::amqp_user: get_param: CollectdAmqpUser tripleo::profile::base::metrics::collectd::amqp_password: get_param: CollectdAmqpPassword - {} - if: # Collectd connected to external collectd instance - collectd_connection - tripleo::profile::base::metrics::collectd::collectd_server: get_param: CollectdServer tripleo::profile::base::metrics::collectd::collectd_port: get_param: CollectdServerPort tripleo::profile::base::metrics::collectd::collectd_username: get_param: CollectdUsername tripleo::profile::base::metrics::collectd::collectd_password: get_param: CollectdPassword tripleo::profile::base::metrics::collectd::collectd_securitylevel: get_param: CollectdSecurityLevel - {} - if: # Collectd connected directly to Gnocchi DB - gnocchi_connection - map_merge: - tripleo::profile::base::metrics::collectd::gnocchi_auth_mode: get_param: CollectdGnocchiAuthMode tripleo::profile::base::metrics::collectd::gnocchi_resource_type: get_param: CollectdGnocchiResourceType tripleo::profile::base::metrics::collectd::gnocchi_batch_size: get_param: CollectdGnocchiBatchSize - if: - gnocchi_default_connection # use overcloud gnocchi instance or user provided instance? - tripleo::profile::base::metrics::collectd::gnocchi_keystone_endpoint: get_param: [EndpointMap, GnocchiInternal, uri] tripleo::profile::base::metrics::collectd::gnocchi_keystone_auth_url: get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_name: 'gnocchi' tripleo::profile::base::metrics::collectd::gnocchi_keystone_password: get_param: GnocchiPassword tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_name: 'service' tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_name: 'Default' tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_name: 'Default' tripleo::profile::base::metrics::collectd::gnocchi_keystone_region_name: get_param: KeystoneRegion - if: - gnocchi_auth_basic # use basic auth or keystone auth? - tripleo::profile::base::metrics::collectd::gnocchi_protocol: get_param: CollectdGnocchiProtocol tripleo::profile::base::metrics::collectd::gnocchi_server: get_param: CollectdGnocchiServer tripleo::profile::base::metrics::collectd::gnocchi_port: get_param: CollectdGnocchiPort tripleo::profile::base::metrics::collectd::gnocchi_user: get_param: CollectdGnocchiUser - tripleo::profile::base::metrics::collectd::gnocchi_keystone_auth_url: get_param: CollectdGnocchiKeystoneAuthUrl tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_name: get_param: CollectdGnocchiKeystoneUserName tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_id: get_param: CollectdGnocchiKeystoneUserId tripleo::profile::base::metrics::collectd::gnocchi_keystone_password: get_param: CollectdGnocchiKeystonePassword tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_id: get_param: CollectdGnocchiKeystoneProjectId tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_name: get_param: CollectdGnocchiKeystoneProjectName tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_id: get_param: CollectdGnocchiKeystoneUserDomainId tripleo::profile::base::metrics::collectd::gnocchi_keystone_user_domain_name: get_param: CollectdGnocchiKeystoneUserDomainName tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_id: get_param: CollectdGnocchiKeystoneProjectDomainId tripleo::profile::base::metrics::collectd::gnocchi_keystone_project_domain_name: get_param: CollectdGnocchiKeystoneProjectDomainName tripleo::profile::base::metrics::collectd::gnocchi_keystone_region_name: get_param: CollectdGnocchiKeystoneRegionName tripleo::profile::base::metrics::collectd::gnocchi_keystone_interface: get_param: CollectdGnocchiKeystoneInterface tripleo::profile::base::metrics::collectd::gnocchi_keystone_endpoint: get_param: CollectdGnocchiKeystoneEndpoint - {} step_config: | include ::tripleo::profile::base::metrics::collectd upgrade_tasks: - name: Check if collectd is deployed command: systemctl is-enabled collectd tags: common ignore_errors: True register: collectd_enabled - name: Check status of collectd service shell: > /usr/bin/systemctl show collectd --property ActiveState | grep '\bactive\b' when: - step|int == 0 - collectd_enabled.rc == 0 tags: validation - name: Stop collectd service when: - step|int == 1 - collectd_enabled.rc == 0 service: name=collectd state=stopped - name: Install collectd package if it was disabled yum: name=collectd state=latest when: - step|int == 3 - collectd_enabled.rc != 0