akrzos 21d48c8236 Provide a count of Keystone Tokens
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
2017-03-20 14:51:02 -04:00

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