
Uses a connection to the database to count the number of keystone tokens. Can count tokens on Undercloud and Overcloud. For Overcloud you must provide a repo that provides "libdbi-dbd-mysql". + Collectd from EPEL to address when/if your OpenStack includes collectd installed already Change-Id: I4da4c3b02cff661572de3852a33d26875cfcdc0d
216 lines
7.2 KiB
YAML
216 lines
7.2 KiB
YAML
---
|
|
#
|
|
# Install/run collectd for Browbeat
|
|
#
|
|
|
|
- name: Remove Non-EPEL collectd install
|
|
yum:
|
|
name: libcollectdclient
|
|
state: absent
|
|
become: true
|
|
when: collectd_from_epel
|
|
|
|
- name: Clean Non-EPEL collectd configuration
|
|
shell: "rm -rf /etc/collectd.d/*.conf"
|
|
become: true
|
|
when: collectd_from_epel
|
|
|
|
#
|
|
# (akrzos) yum module works at this point due to the fact the EPEL repo now exists. EPEL rpm is
|
|
# installed at this point in time.
|
|
#
|
|
- name: Install collectd rpms
|
|
yum: name={{ item }} state=present
|
|
become: true
|
|
with_items:
|
|
- collectd
|
|
- collectd-apache
|
|
- collectd-mysql
|
|
- collectd-turbostat
|
|
|
|
- name: (Keystone Token Count) Install libdbi mysql driver
|
|
yum:
|
|
name: "{{item}}"
|
|
state: present
|
|
become: true
|
|
when: "(('controller' in group_names and {{keystone_overcloud_collectd_plugin}} == true and '{{inventory_hostname}}' == groups['controller'][0]) or ('undercloud' in group_names and {{keystone_undercloud_collectd_plugin}} == true))"
|
|
with_items:
|
|
- libdbi-dbd-mysql
|
|
- collectd-dbi
|
|
|
|
# Get mysql's root password
|
|
- name: (Controllers Only) Get mysql root password
|
|
command: hiera mysql::server::root_password
|
|
become: true
|
|
register: mysql_root_password
|
|
when: "'controller' in group_names"
|
|
|
|
- name: Get overcloudrc
|
|
remote_user: "{{local_remote_user}}"
|
|
shell: "cat /home/stack/overcloudrc | grep 'OS' | awk '{gsub(/export /,\"Environment=\");print }'"
|
|
delegate_to: "{{groups['undercloud'][0]}}"
|
|
register: overcloudrc_file
|
|
when: "(gnocchi_status_python_plugin == true) and (inventory_hostname == groups['controller'][0])"
|
|
|
|
- name: Add environment variables to collectd.service systemd file
|
|
become: true
|
|
lineinfile:
|
|
dest: /usr/lib/systemd/system/collectd.service
|
|
insertafter: '\[Service\]'
|
|
line: "{{item}}"
|
|
with_items: "{{overcloudrc_file.stdout_lines | default(omit)}}"
|
|
when: "(gnocchi_status_python_plugin == true) and (inventory_hostname == groups['controller'][0])"
|
|
|
|
# Apache Monitoring
|
|
- name: Deploy Apache mod_status conf
|
|
template:
|
|
src: 00-browbeat_mod_status.conf.j2
|
|
dest: /etc/httpd/conf.d/00-browbeat_mod_status.conf
|
|
owner: root
|
|
group: root
|
|
become: true
|
|
when: "(('controller' in group_names and {{apache_controller_collectd_plugin}} == true) or ('undercloud' in group_names and {{apache_undercloud_collectd_plugin}} == true))"
|
|
|
|
- name: (Undercloud Only) Allow httpd to listen to port ({{apache_undercloud_mod_status_port}})
|
|
shell: "/usr/sbin/semanage port -m -t http_port_t -p tcp {{apache_undercloud_mod_status_port}}"
|
|
become: true
|
|
when: "('undercloud' in group_names and {{apache_undercloud_collectd_plugin}} == true)"
|
|
|
|
- name: (Controller Only) Allow httpd to listen to port ({{apache_controller_mod_status_port}})
|
|
shell: "/usr/sbin/semanage port -m -t http_port_t -p tcp {{apache_controller_mod_status_port}}"
|
|
become: true
|
|
when: "('controller' in group_names and {{apache_controller_collectd_plugin}} == true)"
|
|
|
|
- name: Restart Apache
|
|
service:
|
|
name: httpd
|
|
state: restarted
|
|
enabled: true
|
|
become: true
|
|
when: "(('controller' in group_names and {{apache_controller_collectd_plugin}} == true) or ('undercloud' in group_names and {{apache_undercloud_collectd_plugin}} == true))"
|
|
# End Apache Monitoring
|
|
|
|
- name: Reload systemd units
|
|
command: systemctl daemon-reload
|
|
become: true
|
|
when: "(gnocchi_status_python_plugin == true) and (inventory_hostname == groups['controller'][0])"
|
|
|
|
- name: Copy collectd_gnocchi_status.py
|
|
copy:
|
|
src: collectd_gnocchi_status.py
|
|
dest: /usr/local/bin/collectd_gnocchi_status.py
|
|
owner: root
|
|
group: root
|
|
mode: 0755
|
|
become: true
|
|
when: "(gnocchi_status_python_plugin == true and ('{{inventory_hostname}}' == groups['controller'][0]))"
|
|
|
|
# Rabbitmq monitoring
|
|
- name: Install pyrabbit
|
|
easy_install:
|
|
name: pyrabbit
|
|
become: true
|
|
when: "(('controller' in group_names and {{rabbitmq_controller_collectd_plugin}} == true and '{{inventory_hostname}}' == groups['controller'][0]) or ('undercloud' in group_names and {{rabbitmq_undercloud_collectd_plugin}} == true))"
|
|
|
|
- name: Enable Rabbitmq management plugin
|
|
command: rabbitmq-plugins enable rabbitmq_management
|
|
become: true
|
|
when: "(('controller' in group_names and {{rabbitmq_controller_collectd_plugin}} == true and '{{inventory_hostname}}' == groups['controller'][0]) or ('undercloud' in group_names and {{rabbitmq_undercloud_collectd_plugin}} == true))"
|
|
|
|
- name: (Undercloud) Get ctlplane ip address
|
|
shell: ip r | egrep 'br-ctlplane\s*proto kernel' | awk '{print $NF}'
|
|
register: undercloud_ctlplane_ip_address
|
|
become: true
|
|
when: "('undercloud' in group_names and {{rabbitmq_undercloud_collectd_plugin}} == true)"
|
|
|
|
- name: (Undercloud) Get Rabbitmq username
|
|
shell: cat undercloud-passwords.conf | grep undercloud_rabbit_username | awk -F '=' '{print $2}'
|
|
register: undercloud_rabbitmq_username
|
|
when: "('undercloud' in group_names and {{rabbitmq_undercloud_collectd_plugin}} == true)"
|
|
|
|
- name: (Undercloud) Get Rabbitmq password
|
|
shell: cat undercloud-passwords.conf | grep undercloud_rabbit_password | awk -F '=' '{print $2}'
|
|
register: undercloud_rabbitmq_password
|
|
when: "('undercloud' in group_names and {{rabbitmq_undercloud_collectd_plugin}} == true)"
|
|
|
|
- name: (Controller) Get Rabbitmq username
|
|
command: hiera nova::rabbit_userid
|
|
register: controller0_rabbitmq_username
|
|
become: true
|
|
when: "('controller' in group_names and {{rabbitmq_controller_collectd_plugin}} == true and '{{inventory_hostname}}' == groups['controller'][0])"
|
|
|
|
- name: (Controller) Get Rabbitmq password
|
|
command: hiera nova::rabbit_password
|
|
register: controller0_rabbitmq_password
|
|
become: true
|
|
when: "('controller' in group_names and {{rabbitmq_controller_collectd_plugin}} == true and '{{inventory_hostname}}' == groups['controller'][0])"
|
|
|
|
- name: Copy collectd_rabbitmq_monitoring.py
|
|
copy:
|
|
src: collectd_rabbitmq_monitoring.py
|
|
dest: /usr/local/bin/collectd_rabbitmq_monitoring.py
|
|
owner: root
|
|
group: root
|
|
mode: 0755
|
|
become: true
|
|
when: "('undercloud' in group_names or '{{inventory_hostname}}' == groups['controller'][0])"
|
|
# End Rabbitmq monitoring
|
|
|
|
- name: Configure collectd.conf
|
|
template:
|
|
src: "{{config_type}}.collectd.conf.j2"
|
|
dest: /etc/collectd.conf
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
become: true
|
|
|
|
#
|
|
# Configure selinux bits
|
|
#
|
|
- name: Check for collectd permissive
|
|
shell: semodule -l | grep -q permissive_collectd_t
|
|
become: true
|
|
register: collectd_permissive
|
|
ignore_errors: true
|
|
changed_when: false
|
|
|
|
- name: Set permissive for collectd
|
|
command: semanage permissive -a collectd_t
|
|
become: true
|
|
when: collectd_permissive.rc != 0
|
|
|
|
#
|
|
# Additional policy bits may be needed for exec
|
|
#
|
|
- name: Collectd policy customization
|
|
copy:
|
|
src: custom-collectd.pp
|
|
dest: /root/custom-collectd.pp
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
become: true
|
|
|
|
- name: Check for collectd custom
|
|
shell: semodule -l | grep -q custom-collectd
|
|
become: true
|
|
register: collectd_custom
|
|
ignore_errors: true
|
|
changed_when: false
|
|
|
|
- name: Set custom policy for collectd
|
|
command: semodule -i /root/custom-collectd.pp
|
|
become: true
|
|
when: collectd_custom.rc != 0
|
|
|
|
#
|
|
# Start collectd service
|
|
#
|
|
- name: Setup collectd service
|
|
service:
|
|
name: collectd
|
|
state: restarted
|
|
enabled: true
|
|
become: true
|