Move collectd into the main Ansible run for CI

This commit allows CI to run the collectd-openstack role directly
to do this I take the relevent variables from the group_vars/all.yml
and duplicate them in to the defaults. If you're not making mix and
match playbooks with browbeat roles and run the playbooks 'normally'
these defaults will never affect you in any way and will be overridden
by the group_vars/all.yml file without any interaction from you.

If on the other hand you want a playbook where you can toss collectd
install whereever you need it, this makes life much easier. Also note
that the trick I'm using to get the name of the executing hosts first
group could be used to make the collectd-openstack playbook run in
parallel across all hosts all at once rather than one group at a time.

As one final tweak this adds 10 minutesof retires to the epel install
role, specifically because two of it's tasks rely on external internet
access and fail often enough to cause trouble. Previously I would retry
the whole CollectD playbook when that happened, this is more efficient

Change-Id: Ia67ab2b4152a8d8e9f3ba1dabe1f4417d7b86233
This commit is contained in:
jkilpatr 2017-04-18 14:10:40 -04:00 committed by Justin Kilpatrick
parent 3bdb101123
commit c11374cca1
5 changed files with 112 additions and 7 deletions

View File

@ -0,0 +1,73 @@
########################################
# Collectd Configuration
########################################
# Install collectd from EPEL
collectd_from_epel: true
# Interval in seconds
collectd_interval: 10
# Run collectd on specific openstack nodes:
collectd_undercloud: true
collectd_controller: true
collectd_blockstorage: true
collectd_objectstorage: true
collectd_cephstorage: true
collectd_compute: false
# Collect plugins configuration:
########################
# Apache plugin
########################
# Undercloud
apache_undercloud_collectd_plugin: false
apache_undercloud_mod_status_port: 5001
# Overcloud Controller
apache_controller_collectd_plugin: false
apache_controller_mod_status_port: 5001
########################
# Ceph plugin
########################
# Overcloud Controller
ceph_controller_collectd_plugin: false
ceph_storage_collectd_plugin: false
########################
# Gnocchi backlog plugin
########################
# This should only be enabled on a single controller when monitoring Gnocchi for
# performance/scale. This plugin does create a token each interval and adds load
# to Gnocchi-api each time it polls for measurements and thus your cloud will pay
# a monitoring "tax" by enabling this plugin.
gnocchi_status_python_plugin: false
gnocchi_status_interval: 30
########################
# Keystone token count via dbi plugin
########################
keystone_undercloud_collectd_plugin: false
keystone_overcloud_collectd_plugin: false
########################
# Rabbitmq plugin
########################
rabbitmq_undercloud_collectd_plugin: false
rabbitmq_undercloud_collectd_interval: 10
rabbitmq_controller_collectd_plugin: false
rabbitmq_controller_collectd_interval: 10
# Queues to monitor message count on Undercloud
undercloud_monitored_queues:
- "metering.sample"
- "event.sample"
# Queues to monitor message count on Controllers
controller_monitored_queues:
- "metering.sample"
- "event.sample"
########################
# tail plugin
########################
# Determines if WARN/INFO messages are also counted
regex_warn: false
regex_info: false

View File

@ -0,0 +1,2 @@
# epel7 rpm for collectd packages
epel7_rpm: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

View File

@ -7,12 +7,23 @@
yum: name=epel-release state=absent
become: true
# The fedoraproject CDN has problems somtimes, this will keep trying
# for up to 10 minutes before failing.
- name: Import EPEL GPG Key
rpm_key: key=https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
state=present
become: true
register: import_result
until: import_result|success
retries: 10
delay: 60
# Same as above but with the Centos CDN
- name: Check for EPEL repo
yum: "name={{ epel7_rpm }} state=present"
become: true
register: install_result
until: install_result|success
retries: 10
delay: 60
notify: remove_epel

View File

@ -6,7 +6,15 @@
roles:
- browbeat/pre-install-setup
- browbeat/oooq-metadata
- browbeat/collectd-undercloud
- name: Setup Undercloud CollectD
hosts: undercloud
vars:
config_type: "{{group_names[0]}}"
roles:
- browbeat/common
- browbeat/epel
- browbeat/collectd-openstack
- include: baremetal-quickstart-extras.yml
@ -29,10 +37,21 @@
roles:
- browbeat/no-sshd-dns
- name: Setup Overcloud CollectD
hosts: overcloud
vars:
config_type: "{{group_names[0]}}"
graphite_host: "{{graphite_host_template}}"
graphite_password: "{{graphite_password_template}}"
graphite_prefix: "{{graphite_prefix_template}}"
roles:
- browbeat/common
- browbeat/epel
- browbeat/collectd-openstack
- name: Run Browbeat
hosts: undercloud
roles:
- browbeat/collectd
- browbeat/bug-check
- browbeat/grafana-dashboard-setup
- browbeat/browbeat-run

View File

@ -26,15 +26,15 @@ export PLAYBOOK=baremetal-virt-undercloud-tripleo-browbeat.yml
export VARS="elastic_enabled_template=true \
--extra-vars grafana_enabled_template=false \
--extra-vars elastic_host_template=$ELASTIC_HOST \
--extra-vars graphite_host_template=$GRAPH_HOST \
--extra-vars graphite_host=$GRAPH_HOST \
--extra-vars statsd_host=$GRAPH_HOST \
--extra-vars statsd_enabled=True \
--extra-vars grafana_host_template=$GRAPH_HOST \
--extra-vars grafana_username_template=$GRAFANA_USER \
--extra-vars grafana_password_template=$GRAFANA_PASS \
--extra-vars grafana_host=$GRAPH_HOST \
--extra-vars grafana_username=$GRAFANA_USER \
--extra-vars grafana_password=$GRAFANA_PASS \
--extra-vars browbeat_cloud_name=$CLOUD_NAME \
--extra-vars browbeat_config_file=$BENCHMARK \
--extra-vars graphite_prefix_template=$CLOUD_NAME"
--extra-vars graphite_prefix=$CLOUD_NAME"
#For Pipeline builds we need to get the pipeline image
#we check that the pipeline image var is set and then