Refactoring Monasca role to align more with OSA.
- This patch is to provide monasca backend services and monasca api,log-api - Adding the use of dictionary for service group mappings. - Switching to use tested external roles for backend services. Change-Id: I7f6335f12a4b3a13acf6b644f16587ab1b46745f
This commit is contained in:
parent
ba3858d11d
commit
524a052417
|
@ -15,78 +15,155 @@
|
|||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
#
|
||||
# Originally obtained from https://github.com/elastic/ansible-elasticsearch
|
||||
#
|
||||
kafka_directory: "/opt/kafka"
|
||||
monasca_package_state: "latest"
|
||||
|
||||
## Monasca
|
||||
monasca_common_git_repo: "https://git.openstack.org/openstack/monasca-common.git"
|
||||
monasca_api_git_repo: "https://git.openstack.org/openstack/monasca-api.git"
|
||||
monasca_persister_git_repo: "https://git.openstack.org/openstack/monasca-persister.git"
|
||||
monasca_notification_git_repo: "https://git.openstack.org/openstack/monasca-notification.git"
|
||||
monasca_thresh_git_repo: "https://git.openstack.org/openstack/monasca-thresh.git"
|
||||
monasca_ui_git_repo: "https://git.openstack.org/openstack/monasca-ui.git"
|
||||
monasca_client_git_repo: "https://git.openstack.org/openstack/python-monascaclient.git"
|
||||
monasca_git_branch: "master"
|
||||
|
||||
## Grafana
|
||||
grafana_plugins_git_repo: "https://github.com/twc-openstack/grafana-plugins.git"
|
||||
grafana_plugins_git_branch: "v2.6.0"
|
||||
grafana_git_repo: "https://github.com/twc-openstack/grafana.git"
|
||||
grafana_git_branch: "v2.6.0-keystone"
|
||||
|
||||
## Keystone
|
||||
keystone_ip_address: "127.0.0.1"
|
||||
# admin credentials
|
||||
os_username: "admin"
|
||||
os_password: "secretadmin"
|
||||
os_project_name: "admin"
|
||||
|
||||
# monasca-user credentials
|
||||
os_mon_username: "mini-mon"
|
||||
os_mon_password: "password"
|
||||
os_mon_project_name: "mini-mon"
|
||||
|
||||
# monasca-agent credentials
|
||||
os_mon_agent_username: "monasca-agent"
|
||||
os_mon_agent_password: "password"
|
||||
|
||||
## Database
|
||||
mysql_root_pass: "secretdatabase"
|
||||
|
||||
## InfluxDB
|
||||
influxdb_version: "0.9.5"
|
||||
|
||||
## Kafka
|
||||
base_kafka_version: "0.10.0.0"
|
||||
kafka_version: "kafka_2.11-{{ base_kafka_version }}"
|
||||
|
||||
## Storm
|
||||
storm_version: "1.0.1"
|
||||
storm_logback_dir: "log4j2"
|
||||
|
||||
## NTP
|
||||
ntp_servers:
|
||||
- ntp.is.co.za
|
||||
debug: false
|
||||
|
||||
## System info
|
||||
monasca_system_user_name: monasca
|
||||
monasca_system_group_name: monasca
|
||||
monasca_system_shell: /bin/false
|
||||
monasca_system_user_shell: /bin/false
|
||||
monasca_system_comment: monasca system user
|
||||
monasca_system_user_home: "/var/lib/{{ monasca_system_user_name }}"
|
||||
monasca_bin: "/openstack/venvs/monasca-{{ monasca_venv_tag }}/bin"
|
||||
monasca_log_directory: "/var/log/monasca"
|
||||
monasca_conf_directory: "/etc/monasca"
|
||||
|
||||
monasca_service_region: RegionOne
|
||||
monasca_service_host: "0.0.0.0"
|
||||
monasca_service_port: 8070
|
||||
monasca_service_publicuri_proto: http
|
||||
monasca_service_publicurl: "{{ monasca_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ monasca_service_port }}/v2.0"
|
||||
monasca_service_internaluri_proto: http
|
||||
monasca_service_internalurl: "{{ monasca_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ monasca_service_port }}/v2.0"
|
||||
monasca_service_adminuri_proto: http
|
||||
monasca_service_adminurl: "{{ monasca_service_adminuri_proto }}://{{ internal_lb_vip_address }}:{{ monasca_service_port }}/v2.0"
|
||||
monasca_auth_url: "{{ keystone_service_internalurl }}"
|
||||
monasca_keystone_auth_plugin: password
|
||||
monasca_service_tenant_name: monasca
|
||||
monasca_service_project_name: monasca
|
||||
monasca_service_description: "Monasca Monitoring Service"
|
||||
monasca_service_name: monasca
|
||||
monasca_service_type: monitoring
|
||||
monasca_agent_user_name: monasca-agent
|
||||
monasca_regular_user_name: monasca-user
|
||||
monasca_service_admin_role_names: admin
|
||||
monasca_backend_database: "influxdb"
|
||||
|
||||
monasca_use_mod_wsgi: false
|
||||
|
||||
monasca_api_service_port: 8070
|
||||
monasca_api_git_repo: "https://git.openstack.org/openstack/monasca-api"
|
||||
monasca_api_git_install_branch: master
|
||||
monasca_api_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_api_requirements_git_install_branch: master
|
||||
monasca_api_metrics_driver: "monasca_api.common.repositories.influxdb.metrics_repository:MetricsRepository"
|
||||
|
||||
monasca_events_api_service_port: 8072
|
||||
monasca_events_api_git_repo: "https://git.openstack.org/openstack/monasca-events-api"
|
||||
monasca_events_api_git_install_branch: master
|
||||
monasca_events_api_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_events_api_requirements_git_install_branch: master
|
||||
|
||||
monasca_log_api_service_port: 5607
|
||||
monasca_log_api_git_repo: "https://git.openstack.org/openstack/monasca-log-api"
|
||||
monasca_log_api_git_install_branch: master
|
||||
monasca_log_api_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_log_api_requirements_git_install_branch: master
|
||||
|
||||
monasca_ceilometer_git_repo: "https://git.openstack.org/openstack/monasca-ceilometer"
|
||||
monasca_ceilometer_git_install_branch: master
|
||||
monasca_ceilometer_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_ceilometer_requirements_git_install_branch: master
|
||||
|
||||
monasca_common_git_repo: "https://git.openstack.org/openstack/monasca-common"
|
||||
monasca_common_git_install_branch: master
|
||||
monasca_common_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_common_requirements_git_install_branch: master
|
||||
|
||||
monasca_thresh_git_repo: "https://git.openstack.org/openstack/monasca-thresh"
|
||||
monasca_thresh_git_install_branch: master
|
||||
monasca_thresh_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_thresh_requirements_git_install_branch: master
|
||||
|
||||
monasca_transform_git_repo: "https://git.openstack.org/openstack/monasca-transform"
|
||||
monasca_transform_git_install_branch: master
|
||||
monasca_transform_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_transform_requirements_git_install_branch: master
|
||||
|
||||
monasca_notification_git_repo: "https://git.openstack.org/openstack/monasca-notification"
|
||||
monasca_notification_git_install_branch: master
|
||||
monasca_notification_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_notification_requirements_git_install_branch: master
|
||||
|
||||
monasca_persister_git_repo: "https://git.openstack.org/openstack/monasca-persister"
|
||||
monasca_persister_git_install_branch: master
|
||||
monasca_persister_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_persister_requirements_git_install_branch: master
|
||||
|
||||
monasca_python_client_git_repo: "https://git.openstack.org/openstack/python-monascaclient"
|
||||
monasca_python_client_git_install_branch: master
|
||||
monasca_python_client_requirements_git_repo: https://git.openstack.org/openstack/requirements
|
||||
monasca_python_client_requirements_git_install_branch: master
|
||||
|
||||
monasca_developer_constraints:
|
||||
- "git+{{ monasca_api_git_repo }}@{{ monasca_api_git_install_branch }}#egg=monasca-api"
|
||||
- "git+{{ monasca_events_api_git_repo }}@{{ monasca_events_api_git_install_branch }}#egg=monasca-events-api"
|
||||
- "git+{{ monasca_log_api_git_repo }}@{{ monasca_log_api_git_install_branch }}#egg=monasca-log-api"
|
||||
- "git+{{ monasca_ceilometer_git_repo }}@{{ monasca_ceilometer_git_install_branch }}#egg=monasca-ceilometer"
|
||||
- "git+{{ monasca_common_git_repo }}@{{ monasca_common_git_install_branch }}#egg=monasca-common"
|
||||
- "git+{{ monasca_transform_git_repo }}@{{ monasca_transform_git_install_branch }}#egg=monasca-transform"
|
||||
- "git+{{ monasca_notification_git_repo }}@{{ monasca_notification_git_install_branch }}#egg=monasca-notification"
|
||||
- "git+{{ monasca_persister_git_repo }}@{{ monasca_persister_git_install_branch }}#egg=monasca-persister"
|
||||
- "git+{{ monasca_python_client_git_repo }}@{{ monasca_python_client_git_install_branch }}#egg=python-monascaclient"
|
||||
|
||||
# Name of the virtual env to deploy into
|
||||
monasca_venv_tag: untagged
|
||||
monasca_venv_download_url: http://127.0.0.1/venvs/untagged/ubuntu/monasca.tgz
|
||||
|
||||
monasca_grafana_galera_database: grafana
|
||||
monasca_grafana_galera_username: grafana
|
||||
|
||||
pip_install_options: ""
|
||||
|
||||
monasca_required_pip_packages:
|
||||
monasca_services:
|
||||
monasca-api:
|
||||
group: monasca_api
|
||||
service_name: monasca-api
|
||||
service_init_bin: "{{ monasca_bin }}/gunicorn"
|
||||
service_init_options: "-n monasca-api -k eventlet --worker-connections=2000 --backlog=1000 --paste /etc/monasca/api-config.ini"
|
||||
monasca-log-api:
|
||||
group: monasca_log_api
|
||||
service_name: monasca-log-api
|
||||
service_init_bin: "{{ monasca_bin }}/gunicorn"
|
||||
service_init_options: "-n monasca-log-api -k eventlet --worker-connections=2000 --backlog=1000 --paste /etc/monasca/log-api-config.ini"
|
||||
|
||||
monasca_requires_pip_packages:
|
||||
- httplib2
|
||||
- python-glanceclient
|
||||
- python-keystoneclient
|
||||
- python-monascaclient
|
||||
- python-memcached
|
||||
- virtualenv
|
||||
- virtualenv-tools
|
||||
- httplib2
|
||||
|
||||
# Common pip packages
|
||||
monasca_pip_packages:
|
||||
- python-keystoneclient
|
||||
- keystoneauth1
|
||||
- simport
|
||||
- gunicorn
|
||||
- monasca-common
|
||||
- monasca-api
|
||||
- monasca-log-api
|
||||
- monasca-persister
|
||||
- monasca-transform
|
||||
- monasca-notification
|
||||
- influxdb
|
||||
|
||||
monasca_api_paste_ini_overrides: {}
|
||||
monasca_api_config_overrides: {}
|
||||
monasca_log_api_paste_ini_overrides: {}
|
||||
monasca_log_api_config_overrides: {}
|
||||
monasca_log_api_logging_overrides: {}
|
||||
monasca_notification_yml_overrides: {}
|
||||
monasca_persister_yml_overrides: {}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
# The infra nodes that will be running the monasca services
|
||||
monasca-infra_hosts:
|
||||
infra1:
|
||||
ip: 172.20.236.111
|
||||
infra2:
|
||||
ip: 172.20.236.112
|
||||
infra3:
|
||||
ip: 172.20.236.113
|
||||
monasca-zookeeper_hosts:
|
||||
infra1:
|
||||
ip: 172.20.236.111
|
||||
infra2:
|
||||
ip: 172.20.236.112
|
||||
infra3:
|
||||
ip: 172.20.236.113
|
||||
monasca-kafka_hosts:
|
||||
infra1:
|
||||
ip: 172.20.236.111
|
||||
infra2:
|
||||
ip: 172.20.236.112
|
||||
infra3:
|
||||
ip: 172.20.236.113
|
||||
monasca-storm_hosts:
|
||||
infra1:
|
||||
ip: 172.20.236.111
|
||||
infra2:
|
||||
ip: 172.20.236.112
|
||||
infra3:
|
||||
ip: 172.20.236.113
|
||||
monasca-influxdb_hosts:
|
||||
infra1:
|
||||
ip: 172.20.236.111
|
||||
infra2:
|
||||
ip: 172.20.236.112
|
||||
infra3:
|
||||
ip: 172.20.236.113
|
|
@ -0,0 +1,131 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
|
||||
component_skel:
|
||||
monasca_api:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
monasca_events_api:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
monasca_log_api:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
|
||||
monasca_zookeeper:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
monasca_kafka:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
monasca_storm:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
monasca_influxdb:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
monasca_grafana:
|
||||
belongs_to:
|
||||
- monasca_all
|
||||
|
||||
container_skel:
|
||||
monasca_api_container:
|
||||
belongs_to:
|
||||
- monasca-infra_containers
|
||||
contains:
|
||||
- monasca_api
|
||||
- monasca_common
|
||||
properties:
|
||||
service_name: monasca
|
||||
monasca_events_api_container:
|
||||
belongs_to:
|
||||
- monasca-infra_containers
|
||||
contains:
|
||||
- monasca_events_api
|
||||
- monasca_common
|
||||
properties:
|
||||
service_name: monasca
|
||||
monasca_log_api_container:
|
||||
belongs_to:
|
||||
- monasca-infra_containers
|
||||
contains:
|
||||
- monasca_log_api
|
||||
- monasca_common
|
||||
properties:
|
||||
service_name: monasca
|
||||
|
||||
monasca_zookeeper_container:
|
||||
belongs_to:
|
||||
- monasca-zookeeper_containers
|
||||
contains:
|
||||
- monasca_zookeeper
|
||||
properties:
|
||||
service_name: monasca
|
||||
monasca_kafka_container:
|
||||
belongs_to:
|
||||
- monasca-kafka_containers
|
||||
contains:
|
||||
- monasca_kafka
|
||||
properties:
|
||||
service_name: monasca
|
||||
monasca_influxdb_container:
|
||||
belongs_to:
|
||||
- monasca-influxdb_containers
|
||||
contains:
|
||||
- monasca_influxdb
|
||||
properties:
|
||||
service_name: monasca
|
||||
monasca_grafana_container:
|
||||
belongs_to:
|
||||
- monasca-infra_containers
|
||||
contains:
|
||||
- monasca_grafana
|
||||
properties:
|
||||
service_name: monasca
|
||||
|
||||
physical_skel:
|
||||
monasca-zookeeper_containers:
|
||||
belongs_to:
|
||||
- all_containers
|
||||
monasca-kafka_containers:
|
||||
belongs_to:
|
||||
- all_containers
|
||||
monasca-storm_containers:
|
||||
belongs_to:
|
||||
- all_containers
|
||||
monasca-influxdb_containers:
|
||||
belongs_to:
|
||||
- all_containers
|
||||
monasca-infra_containers:
|
||||
belongs_to:
|
||||
- all_containers
|
||||
monasca-infra_hosts:
|
||||
belongs_to:
|
||||
- hosts
|
||||
monasca-zookeeper_hosts:
|
||||
belongs_to:
|
||||
- hosts
|
||||
monasca-kafka_hosts:
|
||||
belongs_to:
|
||||
- hosts
|
||||
monasca-storm_hosts:
|
||||
belongs_to:
|
||||
- hosts
|
||||
monasca-influxdb_hosts:
|
||||
belongs_to:
|
||||
- hosts
|
|
@ -0,0 +1,16 @@
|
|||
- service:
|
||||
haproxy_service_name: monasca-api
|
||||
haproxy_backend_nodes: "{{ groups['monasca_api'] | default([]) }}"
|
||||
haproxy_ssl: "{{ haproxy_ssl }}"
|
||||
haproxy_port: "{{ monasca_api_service_port }}"
|
||||
haproxy_balance_type: http
|
||||
haproxy_backend_options:
|
||||
- "httpchk HEAD /"
|
||||
- service:
|
||||
haproxy_service_name: monasca-log-api
|
||||
haproxy_backend_nodes: "{{ groups['monasca_log_api'] | default([]) }}"
|
||||
haproxy_ssl: "{{ haproxy_ssl }}"
|
||||
haproxy_port: "{{ monasca_log_api_service_port }}"
|
||||
haproxy_balance_type: http
|
||||
haproxy_backend_options:
|
||||
- "httpchk HEAD /"
|
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
|
||||
- name: Install monasca server
|
||||
hosts: monasca_all
|
||||
max_fail_percentage: 20
|
||||
user: root
|
||||
pre_tasks:
|
||||
- include: common-tasks/os-lxc-container-setup.yml
|
||||
- include: common-tasks/os-log-dir-setup.yml
|
||||
vars:
|
||||
log_dirs:
|
||||
- src: "/openstack/log/{{ inventory_hostname }}-monasca"
|
||||
dest: "/var/log/monasca"
|
||||
- include: common-tasks/rabbitmq-vhost-user.yml
|
||||
vars:
|
||||
user: "{{ monasca_rabbitmq_userid }}"
|
||||
password: "{{ monasca_rabbitmq_password }}"
|
||||
vhost: "{{ monasca_rabbitmq_vhost }}"
|
||||
when:
|
||||
- inventory_hostname == groups['monasca_all'][0]
|
||||
- groups['rabbitmq_all'] | length > 0
|
||||
- include: common-tasks/mysql-db-user.yml
|
||||
vars:
|
||||
user_name: "{{ monasca_galera_user }}"
|
||||
password: "{{ monasca_galera_password }}"
|
||||
login_host: "{{ monasca_galera_address }}"
|
||||
db_name: "{{ monasca_galera_database }}"
|
||||
when: inventory_hostname == groups['monasca_all'][0]
|
||||
roles:
|
||||
- role: "os_monasca"
|
||||
monasca_venv_tag: "{{ openstack_release }}"
|
||||
monasca_venv_download_url: "{{ openstack_repo_url }}/venvs/{{ openstack_release }}/{{ ansible_distribution | lower }}/monasca-{{ openstack_release }}.tgz"
|
||||
pip_lock_to_internal_repo: "{{ (pip_links | length) >= 1 }}"
|
||||
tags:
|
||||
- "os-monasca"
|
||||
- { role: "openstack_openrc", tags: [ "openstack-openrc" ] }
|
||||
- role: "rsyslog_client"
|
||||
rsyslog_client_log_rotate_file: monasca_log_rotate
|
||||
rsyslog_client_log_dir: "/var/log/monasca"
|
||||
rsyslog_client_config_name: "99-monasca-rsyslog-client.conf"
|
||||
tags:
|
||||
- "monasca-rsyslog-client"
|
||||
- role: "system_crontab_coordination"
|
||||
tags:
|
||||
- "system-crontab-coordination"
|
||||
vars:
|
||||
is_metal: "{{ properties.is_metal|default(false) }}"
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
monasca_api_git_repo: "https://git.openstack.org/openstack/monasca-api"
|
||||
monasca_api_git_install_branch: 1e56736bba2e0e70f35e3ac69967872276e6ebcc # master as of 23/09/2016
|
||||
monasca_api_git_dest: "/opt/monasca_{{ monasca_api_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_events_api_git_repo: "https://git.openstack.org/openstack/monasca-events-api"
|
||||
monasca_events_api_git_install_branch: dba30614943d6a003620336540a2774e238a567b # master as of 25/09/2016
|
||||
monasca_events_api_git_dest: "/opt/monasca_{{ monasca_events_api_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_log_api_git_repo: "https://git.openstack.org/openstack/monasca-log-api"
|
||||
monasca_log_api_git_install_branch: 7175ff0c5595b2f119eb4b7cac1cf204dec175f4 # master as of 25/09/2016
|
||||
monasca_log_api_git_dest: "/opt/monasca_{{ monasca_log_api_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_ceilometer_git_repo: "https://git.openstack.org/openstack/monasca-ceilometer"
|
||||
monasca_ceilometer_git_install_branch: c0f807294919cf6add64ec1f99f1b82e5a6330c3 # master as of 23/09/2016
|
||||
monasca_ceilometer_git_dest: "/opt/monasca_{{ monasca_ceilometer_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_common_git_repo: "https://git.openstack.org/openstack/monasca-common"
|
||||
monasca_common_git_install_branch: da9fa8ca015efbac2248f017704c33cf83f6be5d # master as of 23/09/2016
|
||||
monasca_common_git_dest: "/opt/monasca_{{ monasca_api_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_thresh_git_repo: "https://git.openstack.org/openstack/monasca-thresh"
|
||||
monasca_thresh_git_install_branch: a62c27a165e61d350fc96432878bec81c09a1587 # master as of 23/09/2016
|
||||
monasca_thresh_git_dest: "/opt/monasca_{{ monasca_thresh_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_transform_git_repo: "https://git.openstack.org/openstack/monasca-transform"
|
||||
monasca_transform_git_install_branch: 87a89604675f93028b9c4e985aba9f6a9a1e53a6 # master as of 23/09/2016
|
||||
monasca_transform_git_dest: "/opt/monasca_{{ monasca_transform_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_notification_git_repo: "https://git.openstack.org/openstack/monasca-notification"
|
||||
monasca_notification_git_install_branch: 4c39e3ad678cf117252f304fc8507020a7e98c2a # master as of 23/09/2016
|
||||
monasca_notification_git_dest: "/opt/monasca_{{ monasca_notification_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_analytics_git_repo: "https://git.openstack.org/openstack/monasca-analytics"
|
||||
monasca_analytics_git_install_branch: ecfc9d6b955032d46eef02bcb1326869b820b626 # master as of 23/09/2016
|
||||
monasca_analytics_git_dest: "/opt/monasca_{{ monasca_analytics_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_persister_git_repo: "https://git.openstack.org/openstack/monasca-persister"
|
||||
monasca_persister_git_install_branch: 96fbd64a146f89b60317418d0aedb9bfafc14f0e # master as of 23/09/2016
|
||||
monasca_persister_git_dest: "/opt/monasca_{{ monasca_persister_git_install_branch | replace('/', '_') }}"
|
||||
|
||||
monasca_python_client_git_repo: "https://git.openstack.org/openstack/python-monascaclient"
|
||||
monasca_python_client_git_install_branch: 4146e7e433d7c88ab5655625085ac21dfb994291 # master as of 25/09/2016
|
||||
monasca_python_client_git_dest: "/opt/monasca_{{ monasca_python_client_git_install_branch | replace('/', '_') }}"
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
monasca_galera_password:
|
||||
monasca_rabbitmq_password:
|
||||
monasca_service_password:
|
||||
monasca_admin_user_password:
|
||||
monasca_regular_user_password:
|
|
@ -15,24 +15,24 @@
|
|||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Download Apache Storm
|
||||
get_url:
|
||||
url: "https://github.com/apache/storm/archive/{{ storm_version }}.tar.gz"
|
||||
dest: "/root/apache-storm-{{ storm_version }}.tar.gz"
|
||||
mode: 0600
|
||||
register: download_storm
|
||||
until: download_storm | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Extract Apache Storm
|
||||
unarchive:
|
||||
src: "/root/apache-storm-{{ storm_version }}.tar.gz"
|
||||
dest: "/opt"
|
||||
creates: "/opt/apache-storm-{{ storm_version }}"
|
||||
copy: "no"
|
||||
register: extract_storm
|
||||
until: extract_storm | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
- name: Reload systemd daemon
|
||||
command: "systemctl daemon-reload"
|
||||
notify:
|
||||
- Restart monasca services
|
||||
|
||||
- name: Reload upstart init scripts
|
||||
shell: |
|
||||
initctl reload-configuration
|
||||
notify:
|
||||
- Restart monasca services
|
||||
|
||||
- name: Restart monasca services
|
||||
service:
|
||||
name: "{{ item.value.service_name }}"
|
||||
state: "restarted"
|
||||
pattern: "{{ item.value.service_name }}"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when:
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- "{{ item.value.condition | default(True) }}"
|
|
@ -20,15 +20,31 @@ allow_duplicates: yes
|
|||
|
||||
galaxy_info:
|
||||
author: "Donovan Francesco, Paul Stevens"
|
||||
description: "Apache Kafka for ECS"
|
||||
description: "Openstack Monasca"
|
||||
company: "Internet Solutions"
|
||||
license: "license (Apache)"
|
||||
min_ansible_install: 1.9
|
||||
platforms:
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- all
|
||||
- trusty
|
||||
- xenial
|
||||
categories:
|
||||
- system
|
||||
- cloud
|
||||
- python
|
||||
- development
|
||||
- openstack
|
||||
|
||||
dependencies: []
|
||||
dependencies:
|
||||
- pip_install
|
||||
- galera_client
|
||||
- openstack_openrc
|
||||
- role: apt_package_pinning
|
||||
when:
|
||||
- ansible_pkg_mgr == 'apt'
|
||||
- ansible-zookeeper
|
||||
- ansible-kafka
|
||||
- ansible-storm
|
||||
- ansible-influxdb
|
||||
- ansible-grafana
|
||||
- ansible-monasca-schema
|
||||
|
|
|
@ -15,24 +15,3 @@
|
|||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Download Apache Kafka
|
||||
get_url:
|
||||
url: http://apache.is.co.za/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz
|
||||
dest: /root/{{ kafka_version }}
|
||||
mode: 0600
|
||||
register: download_kafka_binary
|
||||
until: download_kafka_binary | success
|
||||
retries: 5
|
||||
delay: 5
|
||||
|
||||
- name: Extract Apache Kafka archive
|
||||
unarchive:
|
||||
src: "/root/{{ kafka_version }}"
|
||||
dest: "/opt"
|
||||
creates: "/opt/kafka"
|
||||
copy: "no"
|
||||
register: extract_binary
|
||||
until: extract_binary | success
|
||||
retries: 5
|
||||
delay: 3
|
|
@ -1,51 +0,0 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Copy Graphana Templates
|
||||
template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ item.owner }}"
|
||||
group: "{{ item.group }}"
|
||||
mode: "0644"
|
||||
register: configure_graphana
|
||||
until: configure_graphana | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
with_items:
|
||||
- src: "grafana/grafana-server.j2"
|
||||
dest: "/etc/init.d/grafana-server"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
mode: "0775"
|
||||
- src: "grafana/grafana.ini.j2"
|
||||
dest: "/etc/grafana/grafana.ini"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
|
||||
- name: Setup Graphana to run at boot
|
||||
command: update-rc.d graphana-server defaults 95 10
|
||||
|
||||
- name: Start the Graphana Service
|
||||
service:
|
||||
name: graphana-server
|
||||
state: restarted
|
||||
register: start_graphana
|
||||
until: start_graphana | success
|
||||
retries: 5
|
||||
delay: 3
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Copy InfluxDB Templates
|
||||
template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ item.owner }}"
|
||||
group: "{{ item.group }}"
|
||||
mode: "0644"
|
||||
with_items:
|
||||
- src: "influxdb/influxdb.conf.j2"
|
||||
dest: "/etc/influxdb/influxdb.conf"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
- src: "influxdb/influxdb.j2"
|
||||
dest: "/etc/default/influxdb"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
register: configure_influxdb
|
||||
until: configure_influxdb | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Restart influxdb
|
||||
service:
|
||||
name: "influxdb"
|
||||
state: "restarted"
|
||||
when: influxdb_config.changed
|
||||
|
||||
- name: Sleep for 60 seconds to let Influxdb elect a leader
|
||||
pause:
|
||||
minutes: 1
|
||||
when: influxdb_config.changed
|
|
@ -1,57 +0,0 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Copy Kafka templates
|
||||
template:
|
||||
src: "{{ item.name }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ item.owner }}"
|
||||
group: "{{ item.group }}"
|
||||
mode: "{{ item.mode | default('0644') }}"
|
||||
with_items:
|
||||
- src: "kafka/kafka-server-start.sh.j2"
|
||||
dest: "/opt/kafka/bin/kafka-server-start.sh"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
mode: "0755"
|
||||
- src: "kafka/kafka.j2"
|
||||
dest: "/etc/init/kafka"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
- src: "kafka/log4j.properties.j2"
|
||||
dest: "/opt/kafka/config/log4j.properties"
|
||||
owner: "kafka"
|
||||
group: "kafka"
|
||||
- src: "kafka/server.properties.j2"
|
||||
dest: "/opt/kafka/config/server.properties"
|
||||
owner: "kafka"
|
||||
group: "kafka"
|
||||
register: copy_templates
|
||||
until: copy_templates | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Start Kafka
|
||||
service:
|
||||
name: "kafka"
|
||||
state: "restarted"
|
||||
when: kafka.config.changed
|
||||
register: restart_kafka
|
||||
until: restart_kafka | success
|
||||
retries: 5
|
||||
delay: 3
|
|
@ -1,47 +0,0 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Copy Apache Storm Templates
|
||||
template:
|
||||
src: "{{ item.name }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ item.owner }}"
|
||||
group: "{{ item.group }}"
|
||||
mode: "{{ item.mode | default('0644') }}"
|
||||
with_items:
|
||||
- src: "storm/cluster.xml.j2"
|
||||
dest: "/opt/storm/{{ storm_logback_dir }}/cluster.xml"
|
||||
owner: "storm"
|
||||
group: "storm"
|
||||
mode: "0644"
|
||||
- src: "storm/storm.yaml.j2"
|
||||
dest: "/opt/apache-storm-{{ storm_version }}/conf/storm.yaml"
|
||||
owner: "storm"
|
||||
group: "storm"
|
||||
- src: "storm/storm-nimbus.conf.j2"
|
||||
dest: "/etc/init/storm-nimbus.conf"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
- src: "storm/storm-supervisor.conf.j2"
|
||||
dest: "/etc/init/storm-supervisor.conf"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
register: storm_config_templates
|
||||
until: storm_config_templates | success
|
||||
retries: 5
|
||||
delay: 3
|
|
@ -1,56 +0,0 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Copy Zookeeper Templates
|
||||
template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ item.owner }}"
|
||||
group: "{{ item.group }}"
|
||||
mode: "0644"
|
||||
with_items:
|
||||
- src: "zookeeper/zoo.cfg.j2"
|
||||
dest: "/etc/zookeeper/conf/zoo.cfg"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
- src: "zookeeper/myid.j2"
|
||||
dest: "/etc/zookeeper/conf/myid"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
- src: "zookeeper/environment.j2"
|
||||
dest: "/etc/zookeeper/conf/environment"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
- src: "zookeeper/log4j.properties.j2"
|
||||
dest: "/etc/zookeeper/conf/log4j.properties"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
register: configure_zookeeper
|
||||
until: configure_zookeeper | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Restart zookeeper
|
||||
service:
|
||||
name: "zookeeper"
|
||||
state: "restarted"
|
||||
when: zookeeper_config.changed
|
||||
register: restart_zookeeper
|
||||
until: restart_zookeeper | success
|
||||
retries: 5
|
||||
delay: 3
|
|
@ -0,0 +1,160 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
|
||||
- name: Create developer mode constraint file
|
||||
copy:
|
||||
dest: "/opt/developer-pip-constraints.txt"
|
||||
content: |
|
||||
{% for item in monasca_developer_constraints %}
|
||||
{{ item }}
|
||||
{% endfor %}
|
||||
when:
|
||||
- monasca_developer_mode | bool
|
||||
|
||||
- name: Clone requirements git repository
|
||||
git:
|
||||
repo: "{{ item.repo }}"
|
||||
dest: "/opt/requirements"
|
||||
clone: yes
|
||||
update: yes
|
||||
version: "{{ item.version }}"
|
||||
when:
|
||||
- monasca_developer_mode | bool
|
||||
with_items:
|
||||
- repo: "{{ monasca_api_requirements_git_repo }}"
|
||||
version: "{{ monasca_api_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_log_api_requirements_git_repo }}"
|
||||
version: "{{ monasca_log_api_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_ceilometer_requirements_git_repo }}"
|
||||
version: "{{ monasca_ceilometer_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_common_requirements_git_repo }}"
|
||||
version: "{{ monasca_common_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_transform_requirements_git_repo }}"
|
||||
version: "{{ monasca_transform_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_notification_requirements_git_repo }}"
|
||||
version: "{{ monasca_notification_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_persister_requirements_git_repo }}"
|
||||
version: "{{ monasca_persister_requirements_git_install_branch }}"
|
||||
- repo: "{{ monasca_python_client_requirements_git_repo }}"
|
||||
version: "{{ monasca_python_client_requirements_git_install_branch }}"
|
||||
|
||||
- name: Add constraints to pip_install_options fact for developer mode
|
||||
set_fact:
|
||||
pip_install_options_fact: "{{ pip_install_options|default('') }} --constraint /opt/developer-pip-constraints.txt --constraint /opt/requirements/upper-constraints.txt"
|
||||
when:
|
||||
- monasca_developer_mode | bool
|
||||
|
||||
- name: Set pip_install_options_fact when not in developer mode
|
||||
set_fact:
|
||||
pip_install_options_fact: "{{ pip_install_options|default('') }}"
|
||||
when:
|
||||
- not monasca_developer_mode | bool
|
||||
|
||||
- name: Install requires pip packages
|
||||
pip:
|
||||
name: "{{ monasca_requires_pip_packages | join(' ') }}"
|
||||
state: latest
|
||||
extra_args: "{{ pip_install_options_fact }}"
|
||||
register: install_packages
|
||||
until: install_packages|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
|
||||
- name: Get local venv checksum
|
||||
stat:
|
||||
path: "/var/cache/{{ monasca_venv_download_url | basename }}"
|
||||
get_md5: False
|
||||
when:
|
||||
- not monasca_developer_mode | bool
|
||||
register: local_venv_stat
|
||||
|
||||
- name: Get remote venv checksum
|
||||
uri:
|
||||
url: "{{ monasca_venv_download_url | replace('tgz', 'checksum') }}"
|
||||
return_content: True
|
||||
when:
|
||||
- not monasca_developer_mode | bool
|
||||
register: remote_venv_checksum
|
||||
|
||||
# TODO: When project moves to ansible 2 we can pass this a sha256sum which will:
|
||||
# a) allow us to remove force: yes
|
||||
# b) allow the module to calculate the checksum of dest file which would
|
||||
# result in file being downloaded only if provided and dest sha256sum
|
||||
# checksums differ
|
||||
- name: Attempt venv download
|
||||
get_url:
|
||||
url: "{{ monasca_venv_download_url }}"
|
||||
dest: "/var/cache/{{ monasca_venv_download_url | basename }}"
|
||||
force: yes
|
||||
ignore_errors: true
|
||||
register: get_venv
|
||||
when:
|
||||
- not monasca_developer_mode | bool
|
||||
- (local_venv_stat.stat.exists == False or
|
||||
{{ local_venv_stat.stat.checksum is defined and local_venv_stat.stat.checksum != remote_venv_checksum.content | trim }})
|
||||
|
||||
- name: Set monasca get_venv fact
|
||||
set_fact:
|
||||
monasca_get_venv: "{{ get_venv }}"
|
||||
|
||||
- name: Remove existing venv
|
||||
file:
|
||||
path: "{{ monasca_bin | dirname }}"
|
||||
state: absent
|
||||
when:
|
||||
- monasca_get_venv | changed
|
||||
|
||||
- name: Create monasca venv dir
|
||||
file:
|
||||
path: "{{ monasca_bin | dirname }}"
|
||||
state: directory
|
||||
register: monasca_venv_dir
|
||||
|
||||
- name: Unarchive pre-built venv
|
||||
unarchive:
|
||||
src: "/var/cache/{{ monasca_venv_download_url | basename }}"
|
||||
dest: "{{ monasca_bin | dirname }}"
|
||||
copy: "no"
|
||||
when:
|
||||
- not monasca_developer_mode | bool
|
||||
- monasca_get_venv | changed or monasca_venv_dir | changed
|
||||
notify:
|
||||
- Restart monasca services
|
||||
|
||||
- name: Install pip packages
|
||||
pip:
|
||||
name: "{{ monasca_pip_packages | join(' ') }}"
|
||||
state: latest
|
||||
virtualenv: "{{ monasca_bin | dirname }}"
|
||||
virtualenv_site_packages: "no"
|
||||
extra_args: "{{ pip_install_options_fact }}"
|
||||
register: install_packages
|
||||
until: install_packages|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
when:
|
||||
- monasca_get_venv | failed or monasca_developer_mode | bool
|
||||
notify:
|
||||
- Restart monasca services
|
||||
|
||||
- name: Update virtualenv path
|
||||
command: >
|
||||
virtualenv-tools --update-path=auto {{ monasca_bin | dirname }}
|
||||
when:
|
||||
- not monasca_developer_mode | bool
|
||||
- monasca_get_venv | success
|
|
@ -1,73 +0,0 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Download Go
|
||||
get_url:
|
||||
url: "https://storage.googleapis.com/golang/{{ graphana_golang_version }}.tar.gz"
|
||||
dest: "/root/{{ graphana_golang_version }}.tar.gz"
|
||||
mode: 0440
|
||||
register: download_go
|
||||
until: download_go | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Install Go
|
||||
unarchive:
|
||||
src: "/root/{{ graphana_golang_version }}.tar.gz"
|
||||
dest: "/usr/local"
|
||||
creates: "/usr/local/go"
|
||||
copy: "no"
|
||||
register: install_go
|
||||
until: install_go | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Setup Graphana Wheezy Repository
|
||||
apt_repository:
|
||||
repo: "deb https://packagecloud.io/grafana/stable/debian/ wheezy main"
|
||||
state: "present"
|
||||
register: add_graphana_apt
|
||||
until: add_graphana_apt | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Install Graphana Apt Key
|
||||
apt_key:
|
||||
url: "deb https://packagecloud.io/grafana/stable/debian/ wheezy main"
|
||||
state: present
|
||||
register: add_graphana_apt_key
|
||||
until: add_graphana_apt_key | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Update Apt repos
|
||||
apt:
|
||||
update_cache: yes
|
||||
register: update_cache
|
||||
until: update_cache | success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Install Graphana
|
||||
apt:
|
||||
pkg: graphana
|
||||
state: latest
|
||||
register: install_graphana
|
||||
until: install_graphana | success
|
||||
retries: 5
|
||||
delay: 3
|
|
@ -27,46 +27,43 @@
|
|||
tags:
|
||||
- always
|
||||
|
||||
- name: Check init system
|
||||
command: cat /proc/1/comm
|
||||
register: _pid1_name
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Set the name of pid1
|
||||
set_fact:
|
||||
pid1_name: "{{ _pid1_name.stdout }}"
|
||||
tags:
|
||||
- always
|
||||
|
||||
- include: pre-install.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: configure_zookeeper.yml
|
||||
- include: install.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: install_kafka.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: configure_kafka.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: install_influxdb.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: configure_influxdb.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: install_graphana.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: configure_graphana.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: install_storm.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: configure_storm.yml
|
||||
- include: configure.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: post-install.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- include: monasca_service_setup.yml
|
||||
static: no
|
||||
when: inventory_hostname == groups['monasca_api'][0]
|
||||
tags:
|
||||
- monasca-install
|
||||
|
||||
- include: monasca_init_common.yml
|
||||
tags:
|
||||
- os_monasca
|
||||
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
|
||||
- include: monasca_init_upstart.yml
|
||||
when: pid1_name == "init"
|
||||
|
||||
- include: monasca_init_systemd.yml
|
||||
when: pid1_name == "systemd"
|
||||
|
||||
- name: Load service
|
||||
service:
|
||||
name: "{{ item.value.service_name }}"
|
||||
enabled: "yes"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when: inventory_hostname in groups[item.value.group]
|
||||
notify:
|
||||
- Restart monasca services
|
|
@ -0,0 +1,56 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
|
||||
- name: Create TEMP run dir
|
||||
file:
|
||||
path: "/var/run/{{ item.value.service_name }}"
|
||||
state: directory
|
||||
owner: "{{ monasca_system_user_name }}"
|
||||
group: "{{ monasca_system_group_name }}"
|
||||
mode: "02755"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when: inventory_hostname in groups[item.value.group]
|
||||
|
||||
- name: Create TEMP lock dir
|
||||
file:
|
||||
path: "/var/lock/{{ item.value.service_name }}"
|
||||
state: directory
|
||||
owner: "{{ monasca_system_user_name }}"
|
||||
group: "{{ monasca_system_group_name }}"
|
||||
mode: "02755"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when: inventory_hostname in groups[item.value.group]
|
||||
|
||||
- name: Create tempfile.d entry
|
||||
template:
|
||||
src: "monasca-systemd-tempfiles.j2"
|
||||
dest: "/etc/tmpfiles.d/monasca.conf"
|
||||
mode: "0644"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when: inventory_hostname in groups[item.value.group]
|
||||
|
||||
- name: Place the systemd init script
|
||||
template:
|
||||
src: "monasca-systemd-init.j2"
|
||||
dest: "/etc/systemd/system/{{ item.value.service_name }}.service"
|
||||
mode: "0644"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when: inventory_hostname in groups[item.value.group]
|
||||
notify:
|
||||
- Reload systemd daemon
|
|
@ -1,30 +1,26 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
# 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.
|
||||
#
|
||||
# Startup script for Storm Nimbus
|
||||
|
||||
description "Storm Nimbus daemon"
|
||||
start on runlevel [2345]
|
||||
|
||||
console log
|
||||
respawn
|
||||
|
||||
kill timeout 240
|
||||
respawn limit 25 5
|
||||
|
||||
setgid storm
|
||||
setuid storm
|
||||
chdir /opt/storm
|
||||
exec /opt/storm/bin/storm nimbus
|
||||
- name: Place the init script
|
||||
template:
|
||||
src: "monasca-upstart-init.j2"
|
||||
dest: "/etc/init/{{ item.value.service_name }}.conf"
|
||||
mode: "0644"
|
||||
owner: "root"
|
||||
group: "root"
|
||||
with_dict: "{{ monasca_services }}"
|
||||
when: inventory_hostname in groups[item.value.group]
|
||||
notify:
|
||||
- Reload upstart init scripts
|
|
@ -0,0 +1,141 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
- name: Ensure the monasca tenant exists
|
||||
keystone:
|
||||
command: "ensure_tenant"
|
||||
endpoint: "{{ keystone_service_adminurl }}"
|
||||
login_user: "{{ keystone_admin_user_name }}"
|
||||
login_password: "{{ keystone_auth_admin_password }}"
|
||||
login_project_name: "{{ keystone_admin_tenant_name }}"
|
||||
insecure: "{{ keystone_service_adminuri_insecure }}"
|
||||
tenant_name: "{{ monasca_service_tenant_name }}"
|
||||
project_name: "{{ monasca_service_project_name }}"
|
||||
description: "{{ monasca_service_description }}"
|
||||
register: add_monasca_tenant
|
||||
until: add_monasca_tenant |success
|
||||
retries: 5
|
||||
delay: 2
|
||||
tags:
|
||||
- monasca-api-setup
|
||||
- monasca-service-add
|
||||
- monasca-setup
|
||||
|
||||
- name: Ensure the service for monasca exists
|
||||
keystone:
|
||||
command: "ensure_service"
|
||||
endpoint: "{{ keystone_service_adminurl }}"
|
||||
login_user: "{{ keystone_admin_user_name }}"
|
||||
login_password: "{{ keystone_auth_admin_password }}"
|
||||
login_project_name: "{{ keystone_admin_tenant_name }}"
|
||||
insecure: "{{ keystone_service_adminuri_insecure }}"
|
||||
service_name: "{{ monasca_service_name }}"
|
||||
service_type: "{{ monasca_service_type }}"
|
||||
description: "{{ monasca_service_description }}"
|
||||
register: add_monasca_service
|
||||
until: add_monasca_service |success
|
||||
retries: 5
|
||||
delay: 2
|
||||
tags:
|
||||
- monasca-api-setup
|
||||
- monasca-service-add
|
||||
- monasca-setup
|
||||
|
||||
- name: Ensure the monasca-agent user exists
|
||||
keystone:
|
||||
command: "ensure_user"
|
||||
endpoint: "{{ keystone_service_adminurl }}"
|
||||
login_user: "{{ keystone_admin_user_name }}"
|
||||
login_password: "{{ keystone_auth_admin_password }}"
|
||||
login_project_name: "{{ keystone_admin_tenant_name }}"
|
||||
insecure: "{{ keystone_service_adminuri_insecure }}"
|
||||
user_name: "{{ monasca_agent_user_name }}"
|
||||
tenant_name: "{{ monasca_service_tenant_name }}"
|
||||
password: "{{ monasca_agent_user_password }}"
|
||||
project_name: "{{ monasca_service_project_name }}"
|
||||
register: add_monasca_agent_user
|
||||
until: add_monasca_agent_user |success
|
||||
retries: 5
|
||||
delay: 2
|
||||
tags:
|
||||
- monasca-api-setup
|
||||
- monasca-service-add
|
||||
- monasca-user-add
|
||||
- monasca-setup
|
||||
|
||||
- name: Ensure the monasca regular user exists
|
||||
keystone:
|
||||
command: "ensure_user"
|
||||
endpoint: "{{ keystone_service_adminurl }}"
|
||||
login_user: "{{ keystone_admin_user_name }}"
|
||||
login_password: "{{ keystone_auth_admin_password }}"
|
||||
login_project_name: "{{ keystone_admin_tenant_name }}"
|
||||
insecure: "{{ keystone_service_adminuri_insecure }}"
|
||||
user_name: "{{ monasca_regular_user_name }}"
|
||||
tenant_name: "{{ monasca_service_tenant_name }}"
|
||||
password: "{{ monasca_regular_user_password }}"
|
||||
project_name: "{{ monasca_service_project_name }}"
|
||||
register: add_monasca_regular_user
|
||||
until: add_monasca_regular_user |success
|
||||
retries: 5
|
||||
delay: 2
|
||||
tags:
|
||||
- monasca-api-setup
|
||||
- monasca-service-add
|
||||
- monasca-user-add
|
||||
- monasca-setup
|
||||
|
||||
- name: Ensure the monasca-agent user has the admin role
|
||||
keystone:
|
||||
command: "ensure_user_role"
|
||||
endpoint: "{{ keystone_service_adminurl }}"
|
||||
login_user: "{{ keystone_admin_user_name }}"
|
||||
login_password: "{{ keystone_auth_admin_password }}"
|
||||
login_project_name: "{{ keystone_admin_tenant_name }}"
|
||||
user_name: "{{ monasca_agent_user_name }}"
|
||||
tenant_name: "{{ monasca_service_tenant_name }}"
|
||||
role_name: "{{ item }}"
|
||||
insecure: "{{ keystone_service_adminuri_insecure }}"
|
||||
project_name: "{{ monasca_service_project_name }}"
|
||||
register: ensure_monasca_agent_roles
|
||||
until: ensure_monasca_agent_roles |success
|
||||
retries: 5
|
||||
delay: 2
|
||||
with_items: "{{ monasca_service_admin_role_names }}"
|
||||
|
||||
- name: Ensure the monasca endpoint is registered
|
||||
keystone:
|
||||
command: "ensure_endpoint"
|
||||
endpoint: "{{ keystone_service_adminurl }}"
|
||||
login_user: "{{ keystone_admin_user_name }}"
|
||||
login_password: "{{ keystone_auth_admin_password }}"
|
||||
login_project_name: "{{ keystone_admin_tenant_name }}"
|
||||
insecure: "{{ keystone_service_adminuri_insecure }}"
|
||||
region_name: "{{ monasca_service_region }}"
|
||||
service_name: "{{ monasca_service_name }}"
|
||||
service_type: "{{ monasca_service_type }}"
|
||||
endpoint_list:
|
||||
- url: "{{ monasca_service_publicurl }}"
|
||||
interface: "public"
|
||||
- url: "{{ monasca_service_internalurl }}"
|
||||
interface: "internal"
|
||||
- url: "{{ monasca_service_adminurl }}"
|
||||
interface: "admin"
|
||||
register: add_monasca_endpoints
|
||||
until: add_monasca_endpoints |success
|
||||
retries: 5
|
||||
delay: 2
|
|
@ -15,4 +15,54 @@
|
|||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Drop monasca api Config(s)
|
||||
config_template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ monasca_system_user_name }}"
|
||||
group: "{{ monasca_system_group_name }}"
|
||||
mode: "0644"
|
||||
config_overrides: "{{ item.config_overrides }}"
|
||||
config_type: "{{ item.config_type }}"
|
||||
with_items:
|
||||
- src: "monasca-api-paste.ini.j2"
|
||||
dest: "/etc/monasca/api-config.ini"
|
||||
config_overrides: "{{ monasca_api_paste_ini_overrides }}"
|
||||
config_type: "ini"
|
||||
- src: "monasca-api.conf.j2"
|
||||
dest: "/etc/monasca/api-config.conf"
|
||||
config_overrides: "{{ monasca_api_config_overrides }}"
|
||||
config_type: "ini"
|
||||
- src: "monasca-api-logging.conf.j2"
|
||||
dest: "/etc/monasca/api-logging.conf"
|
||||
config_overrides: "{{ monasca_api_config_overrides }}"
|
||||
config_type: "ini"
|
||||
notify:
|
||||
- Restart monasca services
|
||||
when: inventory_hostname in groups['monasca_api']
|
||||
|
||||
- name: Drop monasca-log-api Config(s)
|
||||
config_template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: "{{ monasca_system_user_name }}"
|
||||
group: "{{ monasca_system_group_name }}"
|
||||
mode: "0644"
|
||||
config_overrides: "{{ item.config_overrides }}"
|
||||
config_type: "{{ item.config_type }}"
|
||||
with_items:
|
||||
- src: "monasca-log-api-paste.ini.j2"
|
||||
dest: "/etc/monasca/log-api-config.ini"
|
||||
config_overrides: "{{ monasca_log_api_paste_ini_overrides }}"
|
||||
config_type: "ini"
|
||||
- src: "monasca-log-api.conf.j2"
|
||||
dest: "/etc/monasca/log-api-config.conf"
|
||||
config_overrides: "{{ monasca_log_api_config_overrides }}"
|
||||
config_type: "ini"
|
||||
- src: "monasca-log-api-logging.conf.j2"
|
||||
dest: "/etc/monasca/log-api-logging.conf"
|
||||
config_overrides: "{{ monasca_log_api_logging_overrides }}"
|
||||
config_type: "ini"
|
||||
notify:
|
||||
- Restart monasca services
|
||||
when: inventory_hostname in groups['monasca_log_api']
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
- name: Update Apt sources
|
||||
apt:
|
||||
update_cache: yes
|
||||
|
@ -34,26 +33,7 @@
|
|||
delay: 2
|
||||
with_items: "{{ monasca_distro_packages }}"
|
||||
|
||||
- name: Add a kafka user with temp sudo permissions # sudo removed in post-install.yml
|
||||
user:
|
||||
name: kafka
|
||||
comment: "Apache Kafka Service"
|
||||
groups: sudo
|
||||
append: yes
|
||||
generate_ssh_key: yes
|
||||
ssh_key_bits: 2048
|
||||
ssh_key_file: .ssh/id_rsa.pub
|
||||
register: create_kafka_user
|
||||
until: create_kafka_user | success
|
||||
retries: 5
|
||||
delay: 2
|
||||
|
||||
- name: Create Kafka directory
|
||||
file:
|
||||
path: /opt/kafka
|
||||
state: directory
|
||||
mode: 0755
|
||||
register: create_install_dir
|
||||
until: create_install_dir | success
|
||||
retries: 5
|
||||
delay: 2
|
||||
- include: pre-monasca-install.yml
|
||||
when:
|
||||
- inventory_hostname in groups['monasca_api']
|
||||
- inventory_hostname in groups['monasca_log_api']
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
|
||||
- name: Create the monasca system group
|
||||
group:
|
||||
name: "{{ monasca_system_group_name }}"
|
||||
state: "present"
|
||||
system: "yes"
|
||||
|
||||
- name: Create the monasca system user
|
||||
user:
|
||||
name: "{{ monasca_system_user_name }}"
|
||||
group: "{{ monasca_system_group_name }}"
|
||||
groups: sudo
|
||||
shell: "{{ monasca_system_user_shell }}"
|
||||
system: "yes"
|
||||
createhome: "yes"
|
||||
home: "{{ monasca_system_user_home }}"
|
||||
register: create_monasca_user
|
||||
until: create_monasca_user | success
|
||||
retries: 5
|
||||
delay: 2
|
||||
|
||||
- name: Create monasca's directories
|
||||
file:
|
||||
path: "{{ item.path }}"
|
||||
state: "directory"
|
||||
owner: "{{ item.owner |default(monasca_system_user_name) }}"
|
||||
group: "{{ item.group |default(monasca_system_group_name) }}"
|
||||
mode: "{{ item.mode |default('0750') }}"
|
||||
with_items:
|
||||
- path: "{{ monasca_conf_directory }}"
|
||||
- path: "{{ monasca_system_user_home }}"
|
||||
|
||||
- name: Test for monasca log directory or link
|
||||
shell: |
|
||||
if [ -h "{{ monasca_log_directory }}" ]; then
|
||||
chown -h {{ monasca_system_user_name }}:{{ monasca_system_group_name }} {{ monasca_log_directory }}
|
||||
chown -R {{ monasca_system_user_name }}:{{ monasca_system_group_name }} "$(readlink {{ monasca_log_directory }})"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
register: log_dir
|
||||
failed_when: false
|
||||
changed_when: log_dir.rc != 0
|
||||
|
||||
- name: Create monasca log directory
|
||||
file:
|
||||
path: "{{ monasca_log_directory }}"
|
||||
state: "directory"
|
||||
owner: "{{ monasca_system_user_name }}"
|
||||
group: "{{ monasca_system_group_name }}"
|
||||
mode: "0750"
|
||||
when: log_dir.rc != 0
|
|
@ -1,144 +0,0 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
# chkconfig: 2345 80 05
|
||||
# description: Grafana web server & backend
|
||||
# processname: grafana
|
||||
# config: /etc/grafana/grafana.ini
|
||||
# pidfile: /var/run/grafana.pid
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: grafana
|
||||
# Required-Start: $all
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start grafana at boot time
|
||||
### END INIT INFO
|
||||
|
||||
# tested on
|
||||
# 1. New lsb that define start-stop-daemon
|
||||
# 3. Centos with initscripts package installed
|
||||
|
||||
PATH=/bin:/usr/bin:/sbin:/opt/grafana-build/src/github.com/grafana/grafana/bin
|
||||
NAME=grafana-server
|
||||
DESC="Grafana Server"
|
||||
DEFAULT=/etc/default/$NAME
|
||||
|
||||
GRAFANA_USER=grafana
|
||||
GRAFANA_GROUP=grafana
|
||||
GRAFANA_HOME=/opt/grafana-build/src/github.com/grafana/grafana
|
||||
CONF_DIR=/etc/grafana
|
||||
WORK_DIR=$GRAFANA_HOME
|
||||
DATA_DIR=/var/lib/grafana
|
||||
LOG_DIR=/var/log/grafana
|
||||
CONF_FILE=$CONF_DIR/grafana.ini
|
||||
MAX_OPEN_FILES=10000
|
||||
PID_FILE=/var/run/$NAME.pid
|
||||
DAEMON=/opt/grafana-build/src/github.com/grafana/grafana/bin/$NAME
|
||||
|
||||
umask 0027
|
||||
|
||||
if [ `id -u` -ne 0 ]; then
|
||||
echo "You need root privileges to run this script"
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ ! -x $DAEMON ]; then
|
||||
echo "Program not installed or not executable"
|
||||
exit 5
|
||||
fi
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
if [ -r /etc/default/rcS ]; then
|
||||
. /etc/default/rcS
|
||||
fi
|
||||
|
||||
# overwrite settings from default file
|
||||
if [ -f "$DEFAULT" ]; then
|
||||
. "$DEFAULT"
|
||||
fi
|
||||
|
||||
DAEMON_OPTS="--pidfile=${PID_FILE} --config=${CONF_FILE} cfg:default.paths.data=${DATA_DIR} cfg:default.paths.logs=${LOG_DIR}"
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
|
||||
log_daemon_msg "Starting $DESC"
|
||||
|
||||
pid=`pidofproc -p $PID_FILE grafana`
|
||||
if [ -n "$pid" ] ; then
|
||||
log_begin_msg "Already running."
|
||||
log_end_msg 0
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Prepare environment
|
||||
mkdir -p "$LOG_DIR" "$DATA_DIR" && chown "$GRAFANA_USER":"$GRAFANA_GROUP" "$LOG_DIR" "$DATA_DIR"
|
||||
touch "$PID_FILE" && chown "$GRAFANA_USER":"$GRAFANA_GROUP" "$PID_FILE"
|
||||
|
||||
if [ -n "$MAX_OPEN_FILES" ]; then
|
||||
ulimit -n $MAX_OPEN_FILES
|
||||
fi
|
||||
|
||||
# Start Daemon
|
||||
start-stop-daemon --start -b --chdir "$WORK_DIR" --user "$GRAFANA_USER" -c "$GRAFANA_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
|
||||
return=$?
|
||||
if [ $return -eq 0 ]; then
|
||||
sleep 1
|
||||
|
||||
# check if pid file has been written two
|
||||
if ! [[ -s $PID_FILE ]]; then
|
||||
log_end_msg 1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
i=0
|
||||
timeout=10
|
||||
# Wait for the process to be properly started before exiting
|
||||
until { cat "$PID_FILE" | xargs kill -0; } >/dev/null 2>&1; do
|
||||
sleep 1
|
||||
i=$(($i + 1))
|
||||
if [ $i -gt $timeout ]; then
|
||||
log_end_msg 1
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
log_end_msg $return
|
||||
;;
|
||||
stop)
|
||||
log_daemon_msg "Stopping $DESC"
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
start-stop-daemon --stop --pidfile "$PID_FILE" \
|
||||
--user "$GRAFANA_USER" \
|
||||
--retry=TERM/20/KILL/5 >/dev/null
|
||||
if [ $? -eq 1 ]; then
|
||||
log_progress_msg "$DESC is not running but pid file exists, cleaning up"
|
||||
elif [ $? -eq 3 ]; then
|
||||
PID="`cat $PID_FILE`"
|
||||
log_failure_msg "Failed to stop $DESC (pid $PID)"
|
||||
exit 1
|
||||
fi
|
||||
rm -f "$PID_FILE"
|
||||
else
|
||||
log_progress_msg "(not running)"
|
||||
fi
|
||||
log_end_msg 0
|
||||
;;
|
||||
status)
|
||||
status_of_proc -p $PID_FILE grafana grafana && exit 0 || exit $?
|
||||
;;
|
||||
restart|force-reload)
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
$0 stop
|
||||
sleep 1
|
||||
fi
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}"
|
||||
exit 3
|
||||
;;
|
||||
esac
|
|
@ -1,13 +0,0 @@
|
|||
[auth.keystone]
|
||||
enabled = true
|
||||
auth_url = http://{{ internal_lb_vip_address }}:5000
|
||||
[database]
|
||||
type = mysql
|
||||
host = {{ internal_lb_vip_address }}:3306
|
||||
name = graphana
|
||||
user = graphana
|
||||
password = {{ graphana_mysql_password }}
|
||||
ssl_mode = skip-verify
|
||||
[security]
|
||||
admin_user = admin
|
||||
admin_password = {{ graphana_admin_password }}
|
|
@ -1,322 +0,0 @@
|
|||
### Welcome to the InfluxDB configuration file.
|
||||
|
||||
# Once every 24 hours InfluxDB will report anonymous data to m.influxdb.com
|
||||
# The data includes raft id (random 8 bytes), os, arch, version, and metadata.
|
||||
# We don't track ip addresses of servers reporting. This is only used
|
||||
# to track the number of instances running and the versions, which
|
||||
# is very helpful for us.
|
||||
# Change this option to true to disable reporting.
|
||||
reporting-disabled = false
|
||||
|
||||
###
|
||||
### Enterprise registration control
|
||||
###
|
||||
|
||||
[registration]
|
||||
# enabled = true
|
||||
# url = "https://enterprise.influxdata.com" # The Enterprise server URL
|
||||
# token = "" # Registration token for Enterprise server
|
||||
|
||||
###
|
||||
### [meta]
|
||||
###
|
||||
### Controls the parameters for the Raft consensus group that stores metadata
|
||||
### about the InfluxDB cluster.
|
||||
###
|
||||
|
||||
[meta]
|
||||
dir = "/var/lib/influxdb/meta"
|
||||
hostname = "{{ ansible_default_ipv4.address }}"
|
||||
bind-address = ":8089"
|
||||
retention-autocreate = true
|
||||
election-timeout = "1s"
|
||||
heartbeat-timeout = "1s"
|
||||
leader-lease-timeout = "500ms"
|
||||
commit-timeout = "50ms"
|
||||
cluster-tracing = false
|
||||
|
||||
# If enabled, when a Raft cluster loses a peer due to a `DROP SERVER` command,
|
||||
# the leader will automatically ask a non-raft peer node to promote to a raft
|
||||
# peer. This only happens if there is a non-raft peer node available to promote.
|
||||
# This setting only affects the local node, so to ensure if operates correctly, be sure to set
|
||||
# it in the config of every node.
|
||||
raft-promotion-enabled = true
|
||||
|
||||
###
|
||||
### [data]
|
||||
###
|
||||
### Controls where the actual shard data for InfluxDB lives and how it is
|
||||
### flushed from the WAL. "dir" may need to be changed to a suitable place
|
||||
### for your system, but the WAL settings are an advanced configuration. The
|
||||
### defaults should work for most systems.
|
||||
###
|
||||
|
||||
[data]
|
||||
dir = "/var/lib/influxdb/data"
|
||||
|
||||
# Controls the engine type for new shards. Options are b1, bz1, or tsm1.
|
||||
# b1 is the 0.9.2 storage engine, bz1 is the 0.9.3 and 0.9.4 engine.
|
||||
# tsm1 is the 0.9.5 engine and is currently EXPERIMENTAL. Until 0.9.5 is
|
||||
# actually released data written into a tsm1 engine may be need to be wiped
|
||||
# between upgrades.
|
||||
# engine ="bz1"
|
||||
|
||||
# The following WAL settings are for the b1 storage engine used in 0.9.2. They won't
|
||||
# apply to any new shards created after upgrading to a version > 0.9.3.
|
||||
max-wal-size = 104857600 # Maximum size the WAL can reach before a flush. Defaults to 100MB.
|
||||
wal-flush-interval = "10m" # Maximum time data can sit in WAL before a flush.
|
||||
wal-partition-flush-delay = "2s" # The delay time between each WAL partition being flushed.
|
||||
|
||||
# These are the WAL settings for the storage engine >= 0.9.3
|
||||
wal-dir = "/var/lib/influxdb/wal"
|
||||
wal-enable-logging = true
|
||||
|
||||
# When a series in the WAL in-memory cache reaches this size in bytes it is marked as ready to
|
||||
# flush to the index
|
||||
# wal-ready-series-size = 25600
|
||||
|
||||
# Flush and compact a partition once this ratio of series are over the ready size
|
||||
# wal-compaction-threshold = 0.6
|
||||
|
||||
# Force a flush and compaction if any series in a partition gets above this size in bytes
|
||||
# wal-max-series-size = 2097152
|
||||
|
||||
# Force a flush of all series and full compaction if there have been no writes in this
|
||||
# amount of time. This is useful for ensuring that shards that are cold for writes don't
|
||||
# keep a bunch of data cached in memory and in the WAL.
|
||||
# wal-flush-cold-interval = "10m"
|
||||
|
||||
# Force a partition to flush its largest series if it reaches this approximate size in
|
||||
# bytes. Remember there are 5 partitions so you'll need at least 5x this amount of memory.
|
||||
# The more memory you have, the bigger this can be.
|
||||
# wal-partition-size-threshold = 20971520
|
||||
|
||||
# Whether queries should be logged before execution. Very useful for troubleshooting, but will
|
||||
# log any sensitive data contained within a query.
|
||||
# query-log-enabled = true
|
||||
|
||||
###
|
||||
### [hinted-handoff]
|
||||
###
|
||||
### Controls the hinted handoff feature, which allows nodes to temporarily
|
||||
### store queued data when one node of a cluster is down for a short period
|
||||
### of time.
|
||||
###
|
||||
|
||||
[hinted-handoff]
|
||||
enabled = true
|
||||
dir = "/var/lib/influxdb/hh"
|
||||
max-size = 1073741824
|
||||
max-age = "168h"
|
||||
retry-rate-limit = 0
|
||||
|
||||
# Hinted handoff will start retrying writes to down nodes at a rate of once per second.
|
||||
# If any error occurs, it will backoff in an exponential manner, until the interval
|
||||
# reaches retry-max-interval. Once writes to all nodes are successfully completed the
|
||||
# interval will reset to retry-interval.
|
||||
retry-interval = "1s"
|
||||
retry-max-interval = "1m"
|
||||
|
||||
# Interval between running checks for data that should be purged. Data is purged from
|
||||
# hinted-handoff queues for two reasons. 1) The data is older than the max age, or
|
||||
# 2) the target node has been dropped from the cluster. Data is never dropped until
|
||||
# it has reached max-age however, for a dropped node or not.
|
||||
purge-interval = "1h"
|
||||
|
||||
###
|
||||
### [cluster]
|
||||
###
|
||||
### Controls non-Raft cluster behavior, which generally includes how data is
|
||||
### shared across shards.
|
||||
###
|
||||
|
||||
[cluster]
|
||||
shard-writer-timeout = "10s" # The time within which a shard must respond to write.
|
||||
write-timeout = "5s" # The time within which a write operation must complete on the cluster.
|
||||
|
||||
###
|
||||
### [retention]
|
||||
###
|
||||
### Controls the enforcement of retention policies for evicting old data.
|
||||
###
|
||||
|
||||
[retention]
|
||||
enabled = true
|
||||
check-interval = "30m"
|
||||
|
||||
###
|
||||
### [shard-precreation]
|
||||
###
|
||||
### Controls the precreation of shards, so they are created before data arrives.
|
||||
### Only shards that will exist in the future, at time of creation, are precreated.
|
||||
|
||||
[shard-precreation]
|
||||
enabled = true
|
||||
check-interval = "10m"
|
||||
advance-period = "30m"
|
||||
|
||||
###
|
||||
### Controls the system self-monitoring, statistics and diagnostics.
|
||||
###
|
||||
### The internal database for monitoring data is created automatically if
|
||||
### if it does not already exist. The target retention within this database
|
||||
### is called 'monitor' and is also created with a retention period of 7 days
|
||||
### and a replication factor of 1, if it does not exist. In all cases the
|
||||
### this retention policy is configured as the default for the database.
|
||||
|
||||
[monitor]
|
||||
store-enabled = true # Whether to record statistics internally.
|
||||
store-database = "_internal" # The destination database for recorded statistics
|
||||
store-interval = "10s" # The interval at which to record statistics
|
||||
|
||||
###
|
||||
### [admin]
|
||||
###
|
||||
### Controls the availability of the built-in, web-based admin interface. If HTTPS is
|
||||
### enabled for the admin interface, HTTPS must also be enabled on the [http] service.
|
||||
###
|
||||
|
||||
[admin]
|
||||
enabled = true
|
||||
bind-address = ":8083"
|
||||
https-enabled = false
|
||||
https-certificate = "/etc/ssl/influxdb.pem"
|
||||
|
||||
###
|
||||
### [http]
|
||||
###
|
||||
### Controls how the HTTP endpoints are configured. These are the primary
|
||||
### mechanism for getting data into and out of InfluxDB.
|
||||
###
|
||||
|
||||
[http]
|
||||
enabled = true
|
||||
bind-address = ":8086"
|
||||
auth-enabled = false
|
||||
log-enabled = true
|
||||
write-tracing = false
|
||||
pprof-enabled = false
|
||||
https-enabled = false
|
||||
https-certificate = "/etc/ssl/influxdb.pem"
|
||||
|
||||
###
|
||||
### [[graphite]]
|
||||
###
|
||||
### Controls one or many listeners for Graphite data.
|
||||
###
|
||||
|
||||
[[graphite]]
|
||||
enabled = false
|
||||
# database = "graphite"
|
||||
# bind-address = ":2003"
|
||||
# protocol = "tcp"
|
||||
# consistency-level = "one"
|
||||
# name-separator = "."
|
||||
|
||||
# These next lines control how batching works. You should have this enabled
|
||||
# otherwise you could get dropped metrics or poor performance. Batching
|
||||
# will buffer points in memory if you have many coming in.
|
||||
|
||||
# batch-size = 1000 # will flush if this many points get buffered
|
||||
# batch-pending = 5 # number of batches that may be pending in memory
|
||||
# batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
|
||||
# udp-read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
|
||||
|
||||
## "name-schema" configures tag names for parsing the metric name from graphite protocol;
|
||||
## separated by `name-separator`.
|
||||
## The "measurement" tag is special and the corresponding field will become
|
||||
## the name of the metric.
|
||||
## e.g. "type.host.measurement.device" will parse "server.localhost.cpu.cpu0" as
|
||||
## {
|
||||
## measurement: "cpu",
|
||||
## tags: {
|
||||
## "type": "server",
|
||||
## "host": "localhost,
|
||||
## "device": "cpu0"
|
||||
## }
|
||||
## }
|
||||
# name-schema = "type.host.measurement.device"
|
||||
|
||||
## If set to true, when the input metric name has more fields than `name-schema` specified,
|
||||
## the extra fields will be ignored.
|
||||
## Otherwise an error will be logged and the metric rejected.
|
||||
# ignore-unnamed = true
|
||||
|
||||
###
|
||||
### [collectd]
|
||||
###
|
||||
### Controls the listener for collectd data.
|
||||
###
|
||||
|
||||
[collectd]
|
||||
enabled = false
|
||||
# bind-address = ""
|
||||
# database = ""
|
||||
# typesdb = ""
|
||||
|
||||
# These next lines control how batching works. You should have this enabled
|
||||
# otherwise you could get dropped metrics or poor performance. Batching
|
||||
# will buffer points in memory if you have many coming in.
|
||||
|
||||
# batch-size = 1000 # will flush if this many points get buffered
|
||||
# batch-pending = 5 # number of batches that may be pending in memory
|
||||
# batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
|
||||
# read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
|
||||
|
||||
###
|
||||
### [opentsdb]
|
||||
###
|
||||
### Controls the listener for OpenTSDB data.
|
||||
###
|
||||
|
||||
[opentsdb]
|
||||
enabled = false
|
||||
# bind-address = ":4242"
|
||||
# database = "opentsdb"
|
||||
# retention-policy = ""
|
||||
# consistency-level = "one"
|
||||
# tls-enabled = false
|
||||
# certificate= ""
|
||||
|
||||
# These next lines control how batching works. You should have this enabled
|
||||
# otherwise you could get dropped metrics or poor performance. Only points
|
||||
# metrics received over the telnet protocol undergo batching.
|
||||
|
||||
# batch-size = 1000 # will flush if this many points get buffered
|
||||
# batch-pending = 5 # number of batches that may be pending in memory
|
||||
# batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
|
||||
|
||||
###
|
||||
### [[udp]]
|
||||
###
|
||||
### Controls the listeners for InfluxDB line protocol data via UDP.
|
||||
###
|
||||
|
||||
[[udp]]
|
||||
enabled = false
|
||||
# bind-address = ""
|
||||
# database = "udp"
|
||||
# retention-policy = ""
|
||||
|
||||
# These next lines control how batching works. You should have this enabled
|
||||
# otherwise you could get dropped metrics or poor performance. Batching
|
||||
# will buffer points in memory if you have many coming in.
|
||||
|
||||
# batch-size = 1000 # will flush if this many points get buffered
|
||||
# batch-pending = 5 # number of batches that may be pending in memory
|
||||
# batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
|
||||
# read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
|
||||
|
||||
###
|
||||
### [continuous_queries]
|
||||
###
|
||||
### Controls how continuous queries are run within InfluxDB.
|
||||
###
|
||||
|
||||
[continuous_queries]
|
||||
log-enabled = true
|
||||
enabled = true
|
||||
recompute-previous-n = 2
|
||||
recompute-no-older-than = "10m"
|
||||
compute-runs-per-interval = 10
|
||||
compute-no-more-than = "2m"
|
|
@ -1,38 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You 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.
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "USAGE: $0 [-daemon] server.properties"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
base_dir=$(dirname $0)
|
||||
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties"
|
||||
export KAFKA_HEAP_OPTS="-Xms256m -Xmx256m"
|
||||
|
||||
EXTRA_ARGS="-name kafkaServer -loggc"
|
||||
|
||||
COMMAND=$1
|
||||
case $COMMAND in
|
||||
-daemon)
|
||||
EXTRA_ARGS="-daemon "$EXTRA_ARGS
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka $@
|
|
@ -1,34 +0,0 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
description "Kafka"
|
||||
|
||||
start on runlevel [2345]
|
||||
stop on runlevel [!2345]
|
||||
|
||||
respawn
|
||||
|
||||
limit nofile 32768 32768
|
||||
|
||||
# If zookeeper is running on this box also give it time to start up properly
|
||||
pre-start script
|
||||
if [ -e /etc/init.d/zookeeper ]; then
|
||||
/etc/init.d/zookeeper start || true
|
||||
fi
|
||||
end script
|
||||
|
||||
# Rather than using setuid/setgid sudo is used because the pre-start task must run as root
|
||||
exec sudo -Hu kafka -g kafka KAFKA_HEAP_OPTS="-Xmx128m" /opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties
|
|
@ -1,71 +0,0 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You 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.
|
||||
log4j.rootLogger=WARN, stdout
|
||||
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
|
||||
|
||||
log4j.appender.kafkaAppender=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.kafkaAppender.MaxFileSize=50MB
|
||||
log4j.appender.kafkaAppender.MaxBackupIndex=4
|
||||
log4j.appender.kafkaAppender.File=/var/log/kafka/server.log
|
||||
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
|
||||
|
||||
log4j.appender.stateChangeAppender=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.stateChangeAppender.MaxFileSize=50MB
|
||||
log4j.appender.stateChangeAppender.MaxBackupIndex=4
|
||||
log4j.appender.stateChangeAppender.File=/var/log/kafka/state-change.log
|
||||
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
|
||||
|
||||
log4j.appender.controllerAppender=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.controllerAppender.MaxFileSize=50MB
|
||||
log4j.appender.controllerAppender.MaxBackupIndex=4
|
||||
log4j.appender.controllerAppender.File=/var/log/kafka/controller.log
|
||||
log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
|
||||
|
||||
# Turn on all our debugging info
|
||||
#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG, kafkaAppender
|
||||
#log4j.logger.kafka.client.ClientUtils=DEBUG, kafkaAppender
|
||||
#log4j.logger.kafka.perf=DEBUG, kafkaAppender
|
||||
#log4j.logger.kafka.perf.ProducerPerformance$ProducerThread=DEBUG, kafkaAppender
|
||||
#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUG
|
||||
log4j.logger.kafka=WARN, kafkaAppender
|
||||
|
||||
# Tracing requests results in large logs
|
||||
#log4j.appender.requestAppender=org.apache.log4j.RollingFileAppender
|
||||
#log4j.appender.requestAppender.MaxFileSize=50MB
|
||||
#log4j.appender.requestAppender.MaxBackupIndex=4
|
||||
#log4j.appender.requestAppender.File=/var/log/kafka/kafka-request.log
|
||||
#log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout
|
||||
#log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
|
||||
#
|
||||
#log4j.logger.kafka.network.RequestChannel$=TRACE, requestAppender
|
||||
#log4j.additivity.kafka.network.RequestChannel$=false
|
||||
#
|
||||
#log4j.logger.kafka.network.Processor=TRACE, requestAppender
|
||||
#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender
|
||||
#log4j.additivity.kafka.server.KafkaApis=false
|
||||
#log4j.logger.kafka.request.logger=TRACE, requestAppender
|
||||
#log4j.additivity.kafka.request.logger=false
|
||||
|
||||
log4j.logger.kafka.controller=TRACE, controllerAppender
|
||||
log4j.additivity.kafka.controller=false
|
||||
|
||||
log4j.logger.state.change.logger=TRACE, stateChangeAppender
|
||||
log4j.additivity.state.change.logger=false
|
|
@ -1,118 +0,0 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You 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.
|
||||
# see kafka.server.KafkaConfig for additional details and defaults
|
||||
|
||||
############################# Server Basics #############################
|
||||
|
||||
# The id of the broker. This must be set to a unique integer for each broker.
|
||||
broker.id=0
|
||||
|
||||
############################# Socket Server Settings #############################
|
||||
|
||||
# The address the socket server listens on. It will get the value returned from
|
||||
# java.net.InetAddress.getCanonicalHostName() if not configured.
|
||||
# FORMAT:
|
||||
# listeners = security_protocol://host_name:port
|
||||
# EXAMPLE:
|
||||
# listeners = PLAINTEXT://your.host.name:9092
|
||||
#listeners=PLAINTEXT://:9092
|
||||
|
||||
# Hostname and port the broker will advertise to producers and consumers. If not set,
|
||||
# it uses the value for "listeners" if configured. Otherwise, it will use the value
|
||||
# returned from java.net.InetAddress.getCanonicalHostName().
|
||||
#advertised.listeners=PLAINTEXT://your.host.name:9092
|
||||
|
||||
# The number of threads handling network requests
|
||||
num.network.threads=3
|
||||
|
||||
# The number of threads doing disk I/O
|
||||
num.io.threads=8
|
||||
|
||||
# The send buffer (SO_SNDBUF) used by the socket server
|
||||
socket.send.buffer.bytes=102400
|
||||
|
||||
# The receive buffer (SO_RCVBUF) used by the socket server
|
||||
socket.receive.buffer.bytes=102400
|
||||
|
||||
# The maximum size of a request that the socket server will accept (protection against OOM)
|
||||
socket.request.max.bytes=104857600
|
||||
|
||||
########################### Queue Basics #############################
|
||||
|
||||
delete.topic.enable=true
|
||||
|
||||
############################# Log Basics #############################
|
||||
|
||||
# A comma seperated list of directories under which to store log files
|
||||
log.dirs=/tmp/kafka-logs
|
||||
|
||||
# The default number of log partitions per topic. More partitions allow greater
|
||||
# parallelism for consumption, but this will also result in more files across
|
||||
# the brokers.
|
||||
num.partitions=1
|
||||
|
||||
# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
|
||||
# This value is recommended to be increased for installations with data dirs located in RAID array.
|
||||
num.recovery.threads.per.data.dir=1
|
||||
|
||||
############################# Log Flush Policy #############################
|
||||
|
||||
# Messages are immediately written to the filesystem but by default we only fsync() to sync
|
||||
# the OS cache lazily. The following configurations control the flush of data to disk.
|
||||
# There are a few important trade-offs here:
|
||||
# 1. Durability: Unflushed data may be lost if you are not using replication.
|
||||
# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush.
|
||||
# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to exceessive seeks.
|
||||
# The settings below allow one to configure the flush policy to flush data after a period of time or
|
||||
# every N messages (or both). This can be done globally and overridden on a per-topic basis.
|
||||
|
||||
# The number of messages to accept before forcing a flush of data to disk
|
||||
log.flush.interval.messages=10000
|
||||
|
||||
# The maximum amount of time a message can sit in a log before we force a flush
|
||||
log.flush.interval.ms=1000
|
||||
|
||||
############################# Log Retention Policy #############################
|
||||
|
||||
# The following configurations control the disposal of log segments. The policy can
|
||||
# be set to delete segments after a period of time, or after a given size has accumulated.
|
||||
# A segment will be deleted whenever *either* of these criteria are met. Deletion always happens
|
||||
# from the end of the log.
|
||||
|
||||
# The minimum age of a log file to be eligible for deletion
|
||||
log.retention.hours=168
|
||||
|
||||
# A size-based retention policy for logs. Segments are pruned from the log as long as the remaining
|
||||
# segments don't drop below log.retention.bytes.
|
||||
#log.retention.bytes=1073741824
|
||||
|
||||
# The maximum size of a log segment file. When this size is reached a new log segment will be created.
|
||||
log.segment.bytes=1073741824
|
||||
|
||||
# The interval at which log segments are checked to see if they can be deleted according
|
||||
# to the retention policies
|
||||
log.retention.check.interval.ms=300000
|
||||
|
||||
############################# Zookeeper #############################
|
||||
|
||||
# Zookeeper connection string (see zookeeper docs for details).
|
||||
# This is a comma separated host:port pairs, each corresponding to a zk
|
||||
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
|
||||
# You can also append an optional chroot string to the urls to specify the
|
||||
# root directory for all kafka znodes.
|
||||
zookeeper.connect=localhost:2181
|
||||
|
||||
# Timeout in ms for connecting to zookeeper
|
||||
zookeeper.connection.timeout.ms=6000
|
|
@ -0,0 +1,46 @@
|
|||
[loggers]
|
||||
keys = root, sqlalchemy, kafka
|
||||
|
||||
[handlers]
|
||||
keys = console, file
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = DEBUG
|
||||
formatter = default
|
||||
handlers = console, file
|
||||
|
||||
[logger_sqlalchemy]
|
||||
qualname = sqlalchemy.engine
|
||||
# "level = INFO" logs SQL queries.
|
||||
# "level = DEBUG" logs SQL queries and results.
|
||||
# "level = WARN" logs neither. (Recommended for production systems.)
|
||||
level = DEBUG
|
||||
formatter = default
|
||||
handlers = console, file
|
||||
propagate=0
|
||||
|
||||
[logger_kafka]
|
||||
qualname = kafka
|
||||
level = DEBUG
|
||||
formatter = default
|
||||
handlers = console, file
|
||||
propagate = 0
|
||||
|
||||
[handler_console]
|
||||
class = logging.StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = DEBUG
|
||||
formatter = generic
|
||||
|
||||
[handler_file]
|
||||
class = logging.handlers.RotatingFileHandler
|
||||
level = DEBUG
|
||||
formatter = generic
|
||||
# store up to 5*100MB of logs
|
||||
args = ('/var/log/{{ monasca_service_name }}/monasca-api.log', 'a', 104857600, 5)
|
||||
|
||||
[formatter_generic]
|
||||
format = %(asctime)s %(levelname)s [%(name)s][%(threadName)s] %(message)s
|
|
@ -0,0 +1,22 @@
|
|||
[DEFAULT]
|
||||
name = monasca_api
|
||||
|
||||
[pipeline:main]
|
||||
# Add validator in the pipeline so the metrics messages can be validated.
|
||||
pipeline = auth keystonecontext api
|
||||
|
||||
[app:api]
|
||||
paste.app_factory = monasca_api.api.server:launch
|
||||
|
||||
[filter:auth]
|
||||
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
||||
|
||||
[filter:keystonecontext]
|
||||
paste.filter_factory = monasca_api.middleware.keystone_context_filter:filter_factory
|
||||
|
||||
[server:main]
|
||||
use = egg:gunicorn#main
|
||||
host = 0.0.0.0
|
||||
port = {{ monasca_api_service_port }}
|
||||
workers = 1
|
||||
proc_name = monasca_api
|
|
@ -0,0 +1,83 @@
|
|||
[DEFAULT]
|
||||
debug={{ debug }}
|
||||
log_config_append=/etc/monasca/api-logging.conf
|
||||
region = {{ keystone_service_region }}
|
||||
|
||||
[dispatcher]
|
||||
versions = monasca_api.v2.reference.versions:Versions
|
||||
version_2_0 = monasca_api.v2.reference.version_2_0:Version2
|
||||
metrics = monasca_api.v2.reference.metrics:Metrics
|
||||
metrics_measurements = monasca_api.v2.reference.metrics:MetricsMeasurements
|
||||
metrics_statistics = monasca_api.v2.reference.metrics:MetricsStatistics
|
||||
metrics_names = monasca_api.v2.reference.metrics:MetricsNames
|
||||
alarm_definitions = monasca_api.v2.reference.alarm_definitions:AlarmDefinitions
|
||||
alarms = monasca_api.v2.reference.alarms:Alarms
|
||||
alarms_count = monasca_api.v2.reference.alarms:AlarmsCount
|
||||
alarms_state_history = monasca_api.v2.reference.alarms:AlarmsStateHistory
|
||||
notification_methods = monasca_api.v2.reference.notifications:Notifications
|
||||
dimension_values = monasca_api.v2.reference.metrics:DimensionValues
|
||||
dimension_names = monasca_api.v2.reference.metrics:DimensionNames
|
||||
notification_method_types = monasca_api.v2.reference.notificationstype:NotificationsType
|
||||
|
||||
[security]
|
||||
default_authorized_roles = user, domainuser, domainadmin, {{ monasca_regular_user_name }}
|
||||
agent_authorized_roles = {{ monasca_agent_user_name }}
|
||||
read_only_authorized_roles = monasca-read-only-user
|
||||
delegate_authorized_roles = admin
|
||||
|
||||
[messaging]
|
||||
driver = monasca_api.common.messaging.kafka_publisher:KafkaPublisher
|
||||
|
||||
[repositories]
|
||||
metrics_driver = {{ monasca_api_metrics_driver }}
|
||||
alarm_definitions_driver = monasca_api.common.repositories.sqla.alarm_definitions_repository:AlarmDefinitionsRepository
|
||||
alarms_driver = monasca_api.common.repositories.sqla.alarms_repository:AlarmsRepository
|
||||
notifications_driver = monasca_api.common.repositories.sqla.notifications_repository:NotificationsRepository
|
||||
notification_method_type_driver = monasca_api.common.repositories.sqla.notification_method_type_repository:NotificationMethodTypeRepository
|
||||
|
||||
[dispatcher]
|
||||
driver = v2_reference
|
||||
|
||||
[kafka]
|
||||
uri = {{ kafka_hosts }}
|
||||
metrics_topic = metrics
|
||||
group = api
|
||||
max_retry = 1
|
||||
wait_time = 1
|
||||
async = False
|
||||
compact = False
|
||||
partitions = 0
|
||||
|
||||
{% if monasca_backend_database == 'influxdb' %}
|
||||
[influxdb]
|
||||
ip_address = {{ influxdb_host }}
|
||||
port = {{ influxdb_port }}
|
||||
user = {{ influxdb_admin }}
|
||||
password = {{ influxdb_admin_password }}
|
||||
database_name = {{ influxdb_dbname }}
|
||||
{% elif monasca_backend_database == 'cassandra' %}
|
||||
[cassandra]
|
||||
cluster_ip_addresses: 127.0.0.1
|
||||
keyspace: monasca
|
||||
{% else %}
|
||||
[mysql]
|
||||
database_name = {{ monasca_galera_database }}
|
||||
hostname = {{ monasca_galera_address }}
|
||||
username = {{ monasca_galera_user }}
|
||||
password = {{ monasca_galera_password }}
|
||||
{% endif %}
|
||||
|
||||
[database]
|
||||
url = "mysql+pymysql://{{ monasca_galera_user }}:{{ monasca_galera_password }}@{{ monasca_galera_address }}/{{ monasca_galera_database }}"
|
||||
|
||||
[keystone_authtoken]
|
||||
insecure = {{ keystone_service_internaluri_insecure | bool }}
|
||||
auth_plugin = {{ monasca_keystone_auth_plugin }}
|
||||
auth_url = {{ keystone_service_adminuri }}
|
||||
auth_uri = {{ keystone_service_internaluri }}
|
||||
project_domain_id = {{ monasca_service_project_domain_id }}
|
||||
user_domain_id = {{ monasca_service_user_domain_id }}
|
||||
project_name = {{ monasca_service_project_name }}
|
||||
username = {{ monasca_service_user_name }}
|
||||
password = {{ monasca_service_password }}
|
||||
region_name = {{ keystone_service_region }}
|
|
@ -0,0 +1,36 @@
|
|||
[loggers]
|
||||
keys = root, kafka
|
||||
|
||||
[handlers]
|
||||
keys = console, file
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = DEBUG
|
||||
formatter = default
|
||||
handlers = console, file
|
||||
|
||||
[logger_kafka]
|
||||
qualname = kafka
|
||||
level = DEBUG
|
||||
formatter = default
|
||||
handlers = console, file
|
||||
propagate = 0
|
||||
|
||||
[handler_console]
|
||||
class = logging.StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = DEBUG
|
||||
formatter = generic
|
||||
|
||||
[handler_file]
|
||||
class = logging.handlers.RotatingFileHandler
|
||||
level = DEBUG
|
||||
formatter = generic
|
||||
# store up to 5*100MB of logs
|
||||
args = ('/var/log/{{ monasca_service_name }}/monasca-log-api.log', 'a', 104857600, 5)
|
||||
|
||||
[formatter_generic]
|
||||
format = %(asctime)s %(levelname)s [%(name)s][%(threadName)s] %(message)s
|
|
@ -0,0 +1,21 @@
|
|||
[DEFAULT]
|
||||
name = monasca_log_api
|
||||
|
||||
[pipeline:main]
|
||||
pipeline = auth roles api
|
||||
|
||||
[app:api]
|
||||
paste.app_factory = monasca_log_api.server:launch
|
||||
|
||||
[filter:auth]
|
||||
paste.filter_factory = monasca_log_api.healthcheck.keystone_protocol:filter_factory
|
||||
|
||||
[filter:roles]
|
||||
paste.filter_factory = monasca_log_api.middleware.role_middleware:RoleMiddleware.factory
|
||||
|
||||
[server:main]
|
||||
use = egg:gunicorn#main
|
||||
host = 0.0.0.0
|
||||
port = {{ monasca_log_api_service_port }}
|
||||
workers = 1
|
||||
proc_name = monasca_log_api
|
|
@ -0,0 +1,38 @@
|
|||
[DEFAULT]
|
||||
log_config_append=/etc/monasca/log-api-logging.conf
|
||||
debug={{ debug }}
|
||||
[service]
|
||||
max_log_size = 1048576
|
||||
region = {{ keystone_service_region }}
|
||||
|
||||
[log_publisher]
|
||||
topics = logs
|
||||
kafka_url = {{ kafka_hosts }}
|
||||
|
||||
[keystone_authtoken]
|
||||
insecure = {{ keystone_service_internaluri_insecure | bool }}
|
||||
auth_plugin = {{ monasca_keystone_auth_plugin }}
|
||||
auth_url = {{ keystone_service_adminuri }}
|
||||
auth_uri = {{ keystone_service_internaluri }}
|
||||
project_domain_id = {{ monasca_service_project_domain_id }}
|
||||
user_domain_id = {{ monasca_service_user_domain_id }}
|
||||
project_name = {{ monasca_service_project_name }}
|
||||
username = {{ monasca_service_user_name }}
|
||||
password = {{ monasca_service_password }}
|
||||
region_name = {{ keystone_service_region }}
|
||||
|
||||
[kafka_healthcheck]
|
||||
kafka_url = {{ kafka_hosts }}
|
||||
kafka_topics = log
|
||||
|
||||
[roles_middleware]
|
||||
path = /v2.0/log
|
||||
path = /v3.0/logs
|
||||
default_roles = user, domainuser, domainadmin, {{ monasca_regular_user_name }}
|
||||
agent_roles = {{ monasca_agent_user_name }}, admin
|
||||
|
||||
[dispatcher]
|
||||
logs = monasca_log_api.reference.v2.logs:Logs
|
||||
logs_v3 = monasca_log_api.reference.v3.logs:Logs
|
||||
versions = monasca_log_api.reference.versions:Versions
|
||||
healthchecks = monasca_log_api.reference.healthchecks:HealthChecks
|
|
@ -0,0 +1,25 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
[Unit]
|
||||
Description=monasca openstack service
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User={{ monasca_system_user_name }}
|
||||
Group={{ monasca_system_group_name }}
|
||||
|
||||
{% if item.value.service_init_bin is defined %}
|
||||
ExecStart={{ item.value.service_init_bin }} {{ item.value.service_init_options |default('') }} --log-file=/var/log/monasca/{{ item.value.service_name }}.log
|
||||
{% else %}
|
||||
ExecStart={{ monasca_bin }}/{{ item.value.service_name }} {{ program_config_options|default('') }} --log-file=/var/log/monasca/{{ item.value.service_name }}.log
|
||||
{% endif %}
|
||||
|
||||
# Give a reasonable amount of time for the server to start up/shut down
|
||||
TimeoutSec=300
|
||||
Restart=on-failure
|
||||
RestartSec=150
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,4 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
D /var/lock/{{ item.value.service_name }} 2755 {{ monasca_system_user_name }} {{ monasca_system_group_name }}
|
||||
D /var/run/{{ item.value.service_name }} 2755 {{ monasca_system_user_name }} {{ monasca_system_group_name }}
|
|
@ -0,0 +1,42 @@
|
|||
# {{ ansible_managed }}
|
||||
|
||||
|
||||
description "{{ item.value.service_name }}"
|
||||
author "Kevin Carter <kevin.carter@rackspace.com>"
|
||||
|
||||
start on runlevel [2345]
|
||||
stop on runlevel [016]
|
||||
|
||||
respawn
|
||||
respawn limit 10 5
|
||||
|
||||
# Set the RUNBIN environment variable
|
||||
env RUNBIN="{{ monasca_bin }}/{{ item.value.service_name }}"
|
||||
# Change directory to service users home
|
||||
chdir "{{ monasca_system_user_home }}"
|
||||
|
||||
# Pre start actions
|
||||
pre-start script
|
||||
mkdir -p "/var/run/{{ item.value.service_name }}"
|
||||
chown {{ monasca_system_user_name }}:{{ monasca_system_group_name }} "/var/run/{{ item.value.service_name }}"
|
||||
|
||||
mkdir -p "/var/lock/{{ item.value.service_name }}"
|
||||
chown {{ monasca_system_user_name }}:{{ monasca_system_group_name }} "/var/lock/{{ item.value.service_name }}"
|
||||
|
||||
. {{ monasca_bin }}/activate
|
||||
|
||||
end script
|
||||
|
||||
# Post stop actions
|
||||
post-stop script
|
||||
rm "/var/run/{{ item.value.service_name }}/{{ item.value.service_name }}.pid"
|
||||
end script
|
||||
|
||||
# Run the start up job
|
||||
exec start-stop-daemon --start \
|
||||
--chuid {{ monasca_system_user_name }} \
|
||||
--make-pidfile \
|
||||
--pidfile /var/run/{{ item.value.service_name }}/{{ item.value.service_name }}.pid \
|
||||
--exec "{{ item.value.service_init_bin|default('$RUNBIN') }}" \
|
||||
-- {{ item.value.service_init_options|default('') }} \
|
||||
--log-file=/var/log/{{ monasca_service_name }}/{{ item.value.service_name }}.log
|
|
@ -1,85 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You 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.
|
||||
-->
|
||||
|
||||
<configuration scan="true" scanPeriod="60 seconds">
|
||||
<appender name="A1" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${storm.home}/logs/${logfile.name}</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
|
||||
<fileNamePattern>${storm.home}/logs/${logfile.name}.%i</fileNamePattern>
|
||||
<minIndex>1</minIndex>
|
||||
<maxIndex>9</maxIndex>
|
||||
</rollingPolicy>
|
||||
|
||||
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
</triggeringPolicy>
|
||||
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${storm.home}/logs/access.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
|
||||
<fileNamePattern>${storm.home}/logs/access.log.%i</fileNamePattern>
|
||||
<minIndex>1</minIndex>
|
||||
<maxIndex>9</maxIndex>
|
||||
</rollingPolicy>
|
||||
|
||||
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
</triggeringPolicy>
|
||||
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="METRICS" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${storm.home}/logs/metrics.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
|
||||
<fileNamePattern>${storm.home}/logs/metrics.log.%i</fileNamePattern>
|
||||
<minIndex>1</minIndex>
|
||||
<maxIndex>9</maxIndex>
|
||||
</rollingPolicy>
|
||||
|
||||
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
||||
<maxFileSize>2MB</maxFileSize>
|
||||
</triggeringPolicy>
|
||||
|
||||
<encoder>
|
||||
<pattern>%d %-8r %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<root level="WARN">
|
||||
<appender-ref ref="A1"/>
|
||||
</root>
|
||||
|
||||
<logger name="backtype.storm.security.auth.authorizer" additivity="false">
|
||||
<level value="INFO" />
|
||||
<appender-ref ref="ACCESS" />
|
||||
</logger>
|
||||
|
||||
<logger name="backtype.storm.metric.LoggingMetricsConsumer" additivity="false" >
|
||||
<level value="INFO"/>
|
||||
<appender-ref ref="METRICS"/>
|
||||
</logger>
|
||||
|
||||
</configuration>
|
|
@ -1,58 +0,0 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
### base
|
||||
java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"
|
||||
storm.local.dir: "/var/storm"
|
||||
|
||||
### zookeeper.*
|
||||
storm.zookeeper.servers:
|
||||
- "{{ ansible_default_ipv4.address }}"
|
||||
storm.zookeeper.port: 2181
|
||||
storm.zookeeper.retry.interval: 5000
|
||||
storm.zookeeper.retry.times: 60
|
||||
storm.zookeeper.root: /storm
|
||||
storm.zookeeper.session.timeout: 3000
|
||||
|
||||
### supervisor.* configs are for node supervisors
|
||||
supervisor.slots.ports:
|
||||
- 6701
|
||||
- 6702
|
||||
supervisor.childopts: -Xmx256m
|
||||
|
||||
### worker.* configs are for task workers
|
||||
worker.childopts: -Xmx1280m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote
|
||||
|
||||
### nimbus.* configs are for the master
|
||||
nimbus.host: "{{ ansible_default_ipv4.address }}"
|
||||
nimbus.thrift.port: 6627
|
||||
nimbus.childopts: -Xmx256m
|
||||
|
||||
### ui.* configs are for the master
|
||||
ui.host: {{ ansible_default_ipv4.address }}
|
||||
ui.port: 8088
|
||||
ui.childopts: -Xmx768m
|
||||
|
||||
### drpc.* configs
|
||||
|
||||
### transactional.* configs
|
||||
transactional.zookeeper.servers:
|
||||
- "{{ ansible_default_ipv4.address }}"
|
||||
transactional.zookeeper.port: 2181
|
||||
transactional.zookeeper.root: /storm-transactional
|
||||
|
||||
### topology.* configs are for specific executing storms
|
||||
topology.acker.executors: 1
|
||||
topology.debug: False
|
|
@ -1,35 +0,0 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
# Modified from http://packages.ubuntu.com/saucy/zookeeperd
|
||||
NAME=zookeeper
|
||||
ZOOCFGDIR=/etc/zookeeper/conf
|
||||
|
||||
# seems, that log4j requires the log4j.properties file to be in the classpath
|
||||
CLASSPATH="$ZOOCFGDIR:/usr/share/java/jline.jar:/usr/share/java/log4j-1.2.jar:/usr/share/java/xercesImpl.jar:/usr/share/java/xmlParserAPIs.jar:/usr/share/java/netty.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-log4j12.jar:/usr/share/java/zookeeper.jar"
|
||||
|
||||
ZOOCFG="$ZOOCFGDIR/zoo.cfg"
|
||||
ZOO_LOG_DIR=/var/log/zookeeper
|
||||
USER=$NAME
|
||||
GROUP=$NAME
|
||||
PIDDIR=/var/run/$NAME
|
||||
PIDFILE=$PIDDIR/$NAME.pid
|
||||
SCRIPTNAME=/etc/init.d/$NAME
|
||||
JAVA=/usr/bin/java
|
||||
ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain"
|
||||
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
|
||||
JMXLOCALONLY=false
|
||||
JAVA_OPTS=""
|
|
@ -1,68 +0,0 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
# From http://packages.ubuntu.com/saucy/zookeeperd
|
||||
|
||||
# ZooKeeper Logging Configuration
|
||||
#
|
||||
|
||||
# Format is "<default threshold> (, <appender>)+
|
||||
|
||||
log4j.rootLogger=${zookeeper.root.logger}
|
||||
|
||||
# Example: console appender only
|
||||
# log4j.rootLogger=INFO, CONSOLE
|
||||
|
||||
# Example with rolling log file
|
||||
#log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE
|
||||
|
||||
# Example with rolling log file and tracing
|
||||
#log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE
|
||||
|
||||
#
|
||||
# Log INFO level and above messages to the console
|
||||
#
|
||||
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.CONSOLE.Threshold=INFO
|
||||
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n
|
||||
|
||||
#
|
||||
# Add ROLLINGFILE to rootLogger to get log file output
|
||||
# Log DEBUG level and above messages to a log file
|
||||
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.ROLLINGFILE.Threshold=WARN
|
||||
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/zookeeper.log
|
||||
|
||||
# Max log file size of 10MB
|
||||
log4j.appender.ROLLINGFILE.MaxFileSize=10MB
|
||||
# uncomment the next line to limit number of backup files
|
||||
#log4j.appender.ROLLINGFILE.MaxBackupIndex=10
|
||||
|
||||
log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n
|
||||
|
||||
|
||||
#
|
||||
# Add TRACEFILE to rootLogger to get log file output
|
||||
# Log DEBUG level and above messages to a log file
|
||||
log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
|
||||
log4j.appender.TRACEFILE.Threshold=TRACE
|
||||
log4j.appender.TRACEFILE.File=${zookeeper.log.dir}/zookeeper_trace.log
|
||||
|
||||
log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
|
||||
### Notice we are including log4j's NDC here (%x)
|
||||
log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n
|
|
@ -1,73 +0,0 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# http://hadoop.apache.org/zookeeper/docs/current/zookeeperAdmin.html
|
||||
|
||||
# The number of milliseconds of each tick
|
||||
tickTime=2000
|
||||
# The number of ticks that the initial
|
||||
# synchronization phase can take
|
||||
initLimit=10
|
||||
# The number of ticks that can pass between
|
||||
# sending a request and getting an acknowledgement
|
||||
syncLimit=5
|
||||
# the directory where the snapshot is stored.
|
||||
dataDir=/var/lib/zookeeper
|
||||
# Place the dataLogDir to a separate physical disc for better performance
|
||||
# dataLogDir=/disk2/zookeeper
|
||||
|
||||
# the port at which the clients will connect
|
||||
clientPort=2181
|
||||
|
||||
# Maximum number of clients that can connect from one client
|
||||
maxClientCnxns=60
|
||||
|
||||
# specify all zookeeper servers
|
||||
# The fist port is used by followers to connect to the leader
|
||||
# The second one is used for leader election
|
||||
|
||||
server.0={{ ansible_default_ipv4.address }}:2888:3888
|
||||
|
||||
# To avoid seeks ZooKeeper allocates space in the transaction log file in
|
||||
# blocks of preAllocSize kilobytes. The default block size is 64M. One reason
|
||||
# for changing the size of the blocks is to reduce the block size if snapshots
|
||||
# are taken more often. (Also, see snapCount).
|
||||
#preAllocSize=65536
|
||||
|
||||
# Clients can submit requests faster than ZooKeeper can process them,
|
||||
# especially if there are a lot of clients. To prevent ZooKeeper from running
|
||||
# out of memory due to queued requests, ZooKeeper will throttle clients so that
|
||||
# there is no more than globalOutstandingLimit outstanding requests in the
|
||||
# system. The default limit is 1,000.ZooKeeper logs transactions to a
|
||||
# transaction log. After snapCount transactions are written to a log file a
|
||||
# snapshot is started and a new transaction log file is started. The default
|
||||
# snapCount is 10,000.
|
||||
#snapCount=1000
|
||||
|
||||
# If this option is defined, requests will be will logged to a trace file named
|
||||
# traceFile.year.month.day.
|
||||
#traceFile=
|
||||
|
||||
# Leader accepts client connections. Default value is "yes". The leader machine
|
||||
# coordinates updates. For higher update throughput at thes slight expense of
|
||||
# read throughput the leader can be configured to not accept clients and focus
|
||||
# on coordination.
|
||||
#leaderServes=yes
|
||||
|
||||
# Autopurge every hour to avoid using lots of disk in bursts
|
||||
# Order of the next 2 properties matters.
|
||||
# autopurge.snapRetainCount must be before autopurge.purgeInterval.
|
||||
autopurge.snapRetainCount=3
|
||||
autopurge.purgeInterval=1
|
|
@ -1,4 +1,3 @@
|
|||
---
|
||||
- name: apt_package_pinning
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-apt_package_pinning
|
||||
scm: git
|
||||
|
@ -11,6 +10,10 @@
|
|||
src: https://git.openstack.org/openstack/openstack-ansible-memcached_server
|
||||
scm: git
|
||||
version: master
|
||||
- name: openstack_hosts
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-openstack_hosts
|
||||
scm: git
|
||||
version: master
|
||||
- name: lxc_hosts
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-lxc_hosts
|
||||
scm: git
|
||||
|
@ -19,6 +22,10 @@
|
|||
src: https://git.openstack.org/openstack/openstack-ansible-lxc_container_create
|
||||
scm: git
|
||||
version: master
|
||||
- name: memcached_server
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-memcached_server
|
||||
scm: git
|
||||
version: master
|
||||
- name: galera_client
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-galera_client
|
||||
scm: git
|
||||
|
@ -31,3 +38,39 @@
|
|||
src: https://git.openstack.org/openstack/openstack-ansible-rabbitmq_server
|
||||
scm: git
|
||||
version: master
|
||||
- name: openstack_openrc
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-openstack_openrc
|
||||
scm: git
|
||||
version: master
|
||||
- name: os_keystone
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-os_keystone
|
||||
scm: git
|
||||
version: master
|
||||
- name: openstack_hosts
|
||||
src: https://github.com/openstack/openstack-ansible-openstack_hosts
|
||||
scm: git
|
||||
version: master
|
||||
- name: ansible-zookeeper
|
||||
src: https://github.com/Chillisystems/ansible-zookeeper
|
||||
scm: git
|
||||
version: master
|
||||
- name: ansible-kafka
|
||||
src: https://github.com/Chillisystems/ansible-kafka
|
||||
scm: git
|
||||
version: master
|
||||
- name: ansible-storm
|
||||
src: https://github.com/Chillisystems/ansible-storm
|
||||
scm: git
|
||||
version: master
|
||||
- name: ansible-influxdb
|
||||
src: https://github.com/Chillisystems/ansible-influxdb
|
||||
scm: git
|
||||
version: master
|
||||
- name: ansible-grafana
|
||||
src: https://github.com/Chillisystems/ansible-grafana
|
||||
scm: git
|
||||
version: master
|
||||
- name: ansible-monasca-schema
|
||||
src: https://github.com/Chillisystems/ansible-monasca-schema
|
||||
scm: git
|
||||
version: master
|
||||
|
|
|
@ -1,30 +1,26 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
---
|
||||
# Copyright 2016, Rackspace US, Inc.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
# 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.
|
||||
#
|
||||
# Startup script for Storm Supervisor
|
||||
|
||||
description "Storm Supervisor daemon"
|
||||
start on runlevel [2345]
|
||||
|
||||
console log
|
||||
respawn
|
||||
|
||||
kill timeout 240
|
||||
respawn limit 25 5
|
||||
|
||||
setgid storm
|
||||
setuid storm
|
||||
chdir /opt/storm
|
||||
exec /opt/storm/bin/storm supervisor
|
||||
container_name: "{{ inventory_hostname }}"
|
||||
container_networks:
|
||||
management_address:
|
||||
address: "{{ ansible_host }}"
|
||||
bridge: "br-mgmt"
|
||||
interface: "eth1"
|
||||
netmask: "255.255.255.0"
|
||||
type: "veth"
|
||||
physical_host: localhost
|
||||
properties:
|
||||
service_name: "{{ inventory_hostname }}"
|
|
@ -1,18 +1,19 @@
|
|||
# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP
|
||||
---
|
||||
# Copyright 2016, Rackspace US, Inc.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
# 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.
|
||||
#
|
||||
|
||||
# Logging
|
||||
STDERR="/var/log/influxdb/influxd.log"
|
||||
bridges:
|
||||
- "br-mgmt"
|
||||
|
||||
ansible_python_interpreter: "/usr/bin/python2"
|
|
@ -0,0 +1,38 @@
|
|||
[all]
|
||||
localhost ansible_become=True
|
||||
infra1 ansible_host=10.100.100.2 ansible_become=True ansible_user=root
|
||||
openstack1 ansible_host=10.100.100.3 ansible_become=True ansible_user=root
|
||||
|
||||
[all_containers]
|
||||
infra1
|
||||
openstack1
|
||||
|
||||
[rabbitmq_all]
|
||||
infra1
|
||||
|
||||
[galera_all]
|
||||
infra1
|
||||
|
||||
[memcached_all]
|
||||
infra1
|
||||
|
||||
[service_all:children]
|
||||
rabbitmq_all
|
||||
galera_all
|
||||
memcached_all
|
||||
|
||||
[keystone_all]
|
||||
openstack1
|
||||
|
||||
[monasca_api]
|
||||
openstack1
|
||||
|
||||
[monasca_events_api]
|
||||
openstack1
|
||||
|
||||
[monasca_log_api]
|
||||
openstack1
|
||||
|
||||
[monasca_all:children]
|
||||
monasca_api
|
||||
monasca_log_api
|
|
@ -0,0 +1,106 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
|
||||
- name: Install monasca server
|
||||
hosts: monasca_all
|
||||
max_fail_percentage: 20
|
||||
user: root
|
||||
gather_facts: true
|
||||
pre_tasks:
|
||||
- name: Ensure rabbitmq vhost
|
||||
rabbitmq_vhost:
|
||||
name: "{{ monasca_rabbitmq_vhost }}"
|
||||
state: "present"
|
||||
delegate_to: "{{ hostvars[groups['rabbitmq_all'][0]]['ansible_host'] }}"
|
||||
when: inventory_hostname == groups['monasca_all'][0]
|
||||
- name: Ensure rabbitmq user
|
||||
rabbitmq_user:
|
||||
user: "{{ monasca_rabbitmq_userid }}"
|
||||
password: "{{ monasca_rabbitmq_password }}"
|
||||
vhost: "{{ monasca_rabbitmq_vhost }}"
|
||||
configure_priv: ".*"
|
||||
read_priv: ".*"
|
||||
write_priv: ".*"
|
||||
state: "present"
|
||||
delegate_to: "{{ hostvars[groups['rabbitmq_all'][0]]['ansible_host'] }}"
|
||||
when: inventory_hostname == groups['monasca_all'][0]
|
||||
- name: Create DB for service
|
||||
mysql_db:
|
||||
login_user: "{{ galera_root_user }}"
|
||||
login_password: "{{ galera_root_password }}"
|
||||
login_host: "{{ monasca_galera_address }}"
|
||||
name: "{{ item }}"
|
||||
state: "present"
|
||||
with_items:
|
||||
- "{{ monasca_galera_database }}"
|
||||
- "{{ monasca_grafana_galera_database }}"
|
||||
delegate_to: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}"
|
||||
when: inventory_hostname == groups['monasca_all'][0]
|
||||
- name: Grant access to the DB for the monasca service
|
||||
mysql_user:
|
||||
login_user: "{{ galera_root_user }}"
|
||||
login_password: "{{ galera_root_password }}"
|
||||
login_host: "{{ monasca_galera_address }}"
|
||||
name: "{{ monasca_galera_database }}"
|
||||
password: "{{ monasca_galera_password }}"
|
||||
host: "{{ item }}"
|
||||
state: "present"
|
||||
priv: "{{ monasca_galera_database }}.*:ALL"
|
||||
with_items:
|
||||
- "localhost"
|
||||
- "%"
|
||||
delegate_to: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}"
|
||||
when: inventory_hostname == groups['monasca_all'][0]
|
||||
- name: Grant access to the DB for the monasca grafana service
|
||||
mysql_user:
|
||||
login_user: "{{ galera_root_user }}"
|
||||
login_password: "{{ galera_root_password }}"
|
||||
login_host: "{{ monasca_galera_address }}"
|
||||
name: "{{ monasca_grafana_galera_username }}"
|
||||
password: "{{ monasca_grafana_galera_password }}"
|
||||
host: "{{ item }}"
|
||||
state: "present"
|
||||
priv: "{{ monasca_grafana_galera_database }}.*:ALL"
|
||||
with_items:
|
||||
- "localhost"
|
||||
- "%"
|
||||
delegate_to: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}"
|
||||
when: inventory_hostname == groups['monasca_all'][0]
|
||||
roles:
|
||||
- role: ansible-zookeeper
|
||||
tags: zookeeper
|
||||
- role: ansible-kafka
|
||||
tags: kafka
|
||||
- role: ansible-storm
|
||||
tags: storm
|
||||
- role: ansible-influxdb
|
||||
tags: influxdb
|
||||
- role: ansible-grafana
|
||||
grafana_mysql_host: "{{ monasca_galera_address }}"
|
||||
grafana_admin_password: "{{ monasca_grafana_admin_password }}"
|
||||
grafana_mysql_db: "{{ monasca_grafana_galera_database }}"
|
||||
grafana_mysql_user: "{{ monasca_grafana_galera_username }}"
|
||||
grafana_mysql_password: "{{ monasca_grafana_galera_password }}"
|
||||
grafana_keystone_url: "{{ keystone_service_internaluri }}"
|
||||
tags: grafana-server
|
||||
- role: ansible-monasca-schema
|
||||
tags: monasca-schema
|
||||
- role: "os_monasca"
|
||||
vars_files:
|
||||
- common/test-vars.yml
|
||||
- test-vars.yml
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
# Reference: https://github.com/openstack/monasca-api/blob/master/docs/monasca-api-spec.md
|
||||
|
||||
- name: Playbook for functional testing monasca
|
||||
hosts: monasca_api
|
||||
user: root
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Install httplib2 so we can use the uri module
|
||||
pip:
|
||||
name: httplib2
|
||||
- name: Check the monasca-api
|
||||
uri:
|
||||
url: "http://localhost:8070"
|
||||
status_code: 401
|
||||
register: result
|
||||
until:
|
||||
- result is defined
|
||||
- result.status is defined
|
||||
- result.status == 401
|
||||
retries: 5
|
||||
delay: 10
|
||||
vars_files:
|
||||
- common/test-vars.yml
|
||||
- test-vars.yml
|
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
monasca_developer_mode: True
|
||||
monasca_galera_address: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}"
|
||||
monasca_galera_database: monasca
|
||||
monasca_galera_user: monasca
|
||||
monasca_galera_password: "secrete"
|
||||
monasca_keystone_auth_plugin: password
|
||||
monasca_rabbitmq_port: "{{ rabbitmq_port }}"
|
||||
monasca_rabbitmq_servers: "{{ rabbitmq_servers }}"
|
||||
monasca_rabbitmq_use_ssl: "{{ rabbitmq_use_ssl }}"
|
||||
monasca_rabbitmq_password: "secrete"
|
||||
monasca_rabbitmq_userid: monasca
|
||||
monasca_rabbitmq_vhost: /monasca
|
||||
monasca_api_requirements_git_install_branch: master
|
||||
monasca_events_api_requirements_git_install_branch: master
|
||||
monasca_log_api_requirements_git_install_branch: master
|
||||
monasca_ceilometer_requirements_git_install_branch: master
|
||||
monasca_common_requirements_git_install_branch: master
|
||||
monasca_transform_requirements_git_install_branch: master
|
||||
monasca_notification_requirements_git_install_branch: master
|
||||
monasca_analytics_requirements_git_install_branch: master
|
||||
monasca_persister_requirements_git_install_branch: master
|
||||
monasca_python_client_requirements_git_install_branch: master
|
||||
monasca_service_password: "secrete"
|
||||
monasca_regular_user_password: "secrete"
|
||||
monasca_agent_user_password: "secrete"
|
||||
monasca_service_project_domain_id: default
|
||||
monasca_service_project_name: service
|
||||
monasca_service_region: RegionOne
|
||||
monasca_service_user_domain_id: default
|
||||
monasca_service_user_name: monasca
|
||||
monasca_service_port: 8070
|
||||
monasca_venv_tag: untagged
|
||||
monasca_bin: "/openstack/venvs/monasca-{{ monasca_venv_tag }}/bin"
|
||||
storm_nimbus_enabled: true
|
||||
storm_supervisor_enabled: true
|
||||
nimbus_host: "{{ zookeeper_hosts }}"
|
||||
monasca_mysql_host: "{{ monasca_galera_address }}"
|
||||
monasca_mysql_admin: "{{ monasca_galera_user }}"
|
||||
monasca_mysql_admin_password: "{{ monasca_galera_password }}"
|
||||
monasca_mysql_db: "{{ monasca_galera_database }}"
|
||||
influxdb_admin: "monasca"
|
||||
influxdb_admin_password: "secrete"
|
||||
monasca_grafana_admin_password: "secrete"
|
||||
monasca_grafana_galera_password: "secrete"
|
||||
monasca_grafana_galera_database: grafana
|
||||
monasca_grafana_galera_username: grafana
|
|
@ -1,16 +1,32 @@
|
|||
---
|
||||
# Copyright 2016, Comcast Corp.
|
||||
# Copyright 2016 Internet Solutions (Pty) Ltd
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
- name: Gate stub
|
||||
hosts: localhost
|
||||
#
|
||||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
|
||||
# Setup the host
|
||||
- include: common/test-setup-host.yml
|
||||
|
||||
# Install RabbitMQ/MariaDB
|
||||
- include: common/test-install-infra.yml
|
||||
|
||||
# Install keystone
|
||||
- include: common/test-install-keystone.yml
|
||||
|
||||
# Install monasca
|
||||
- include: test-install-monasca.yml
|
||||
|
||||
# Test monasca
|
||||
- include: test-monasca-functional.yml
|
||||
|
|
13
tox.ini
13
tox.ini
|
@ -102,20 +102,7 @@ commands =
|
|||
bash -c "{toxinidir}/tests/common/test-ansible-lint.sh"
|
||||
|
||||
|
||||
[testenv:func_base]
|
||||
# NOTE(odyssey4me): this target does not use constraints because
|
||||
# it doesn't work in OpenStack-CI yet. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command =
|
||||
pip install -U --force-reinstall {opts} {packages}
|
||||
|
||||
|
||||
[testenv:functional]
|
||||
# NOTE(odyssey4me): this target does not use constraints because
|
||||
# it doesn't work in OpenStack-CI yet. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command =
|
||||
{[testenv:func_base]install_command}
|
||||
deps =
|
||||
{[testenv:ansible]deps}
|
||||
commands =
|
||||
|
|
|
@ -16,20 +16,10 @@
|
|||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
# Originally obtained from https://github.com/elastic/ansible-elasticsearch
|
||||
#
|
||||
monasca_distro_packages:
|
||||
- build-essential
|
||||
- chrony
|
||||
- git
|
||||
- libmysqlclient-dev
|
||||
- mailutils
|
||||
- mariadb-client
|
||||
- maven
|
||||
- nodejs
|
||||
- openjdk-7-jdk
|
||||
- python-software-properties
|
||||
- python-dev
|
||||
- python-mysqldb
|
||||
- python-pip
|
||||
- zookeeperd
|
||||
|
|
|
@ -16,21 +16,10 @@
|
|||
# (c) 2016 Donovan Francesco <donovan.francesco@is.co.za>
|
||||
# (c) 2016 Paul Stevens <paul.stevens@is.co.za>
|
||||
#
|
||||
|
||||
- name: Download InfluxDB
|
||||
get_url:
|
||||
url: https://dl.influxdata.com/influxdb/releases/{{ influxdb_version }}.deb
|
||||
dest: /root/{{ influxdb_version }}.deb
|
||||
mode: 0600
|
||||
register: download_influxdb_deb
|
||||
until: download_influxdb_deb | success
|
||||
retries: 5
|
||||
delay: 5
|
||||
|
||||
- name: Install InfluxDB
|
||||
apt:
|
||||
deb: /root/{{ influxdb_version }}.deb
|
||||
register: install_influxdb
|
||||
until: install_influxdb | success
|
||||
retries: 3
|
||||
delay: 2
|
||||
monasca_distro_packages:
|
||||
- build-essential
|
||||
- openjdk-8-jdk
|
||||
- python-software-properties
|
||||
- python-dev
|
||||
- python-mysqldb
|
||||
- python-pip
|
Loading…
Reference in New Issue