kolla-ansible/ansible/roles
Rafael Weingärtner 97cb30cdd8 Cloudkitty InfluxDB Storage backend via Kolla-ansible
This proposal will add support to Kolla-Ansible for Cloudkitty
 InfluxDB storage system deployment. The feature of InfluxDB as the
 storage backend for Cloudkitty was created with the following commit
 https://github.com/openstack/cloudkitty/commit/
 c4758e78b49386145309a44623502f8095a2c7ee

Problem Description
===================

With the addition of support for InfluxDB in Cloudkitty, which is
achieving general availability via Stein release, we need a method to
easily configure/support this storage backend system via Kolla-ansible.

Kolla-ansible is already able to deploy and configure an InfluxDB
system. Therefore, this proposal will use the InfluxDB deployment
configured via Kolla-ansible to connect to CloudKitty and use it as a
storage backend.

If we do not provide a method for users (operators) to manage
Cloudkitty storage backend via Kolla-ansible, the user has to execute
these changes/configurations manually (or via some other set of
automated scripts), which creates distributed set of configuration
files, "configurations" scripts that have different versioning schemas
and life cycles.

Proposed Change
===============

Architecture
------------

We propose a flag that users can use to make Kolla-ansible configure
CloudKitty to use InfluxDB as the storage backend system. When
enabling this flag, Kolla-ansible will also enable the deployment of
the InfluxDB via Kolla-ansible automatically.

CloudKitty will be configured accordingly to [1] and [2]. We will also
externalize the "retention_policy", "use_ssl", and "insecure", to
allow fine granular configurations to operators. All of these
configurations will only be used when configured; therefore, when they
are not set, the default value/behavior defined in Cloudkitty will be
used. Moreover, when we configure "use_ssl" to "true", the user will
be able to set "cafile" to a custom trusted CA file. Again, if these
variables are not set, the default ones in Cloudkitty will be used.

Implementation
--------------
We need to introduce a new variable called
`cloudkitty_storage_backend`. Valid options are `sqlalchemy` or
`influxdb`. The default value in Kolla-ansible is `sqlalchemy` for
backward compatibility. Then, the first step is to change the
definition for the following variable:
`/ansible/group_vars/all.yml:enable_influxdb: "{{ enable_monasca |
bool }}"`

We also need to enable InfluxDB when CloudKitty is configured to use
it as the storage backend. Afterwards, we need to create tasks in
CloudKitty configurations to create the InfluxDB schema and configure
the configuration files accordingly.

Alternatives
------------
The alternative would be to execute the configurations manually or
handle it via a different set of scripts and configurations files,
which can become cumbersome with time.

Security Impact
---------------
None identified by the author of this spec

Notifications Impact
--------------------
Operators that are already deploying CloudKitty with InfluxDB as
storage backend would need to convert their configurations to
Kolla-ansible (if they wish to adopt Kolla-ansible to execute these
tasks).

Also, deployments (OpenStack environments) that were created with
Cloudkitty using storage v1 will need to migrate all of their data to
V2 before enabling InfluxDB as the storage system.

Other End User Impact
---------------------
None.

Performance Impact
------------------
None.

Other Deployer Impact
---------------------
New configuration options will be available for CloudKitty.
* cloudkitty_storage_backend
* cloudkitty_influxdb_retention_policy
* cloudkitty_influxdb_use_ssl
* cloudkitty_influxdb_cafile
* cloudkitty_influxdb_insecure_connections
* cloudkitty_influxdb_name

Developer Impact
----------------
None

Implementation
==============

Assignee
--------
* `Rafael Weingärtner <rafaelweingartne>`

Work Items
----------
 * Extend InfluxDB "enable/disable" variable
 * Add new tasks to configure Cloudkitty accordingly to these new
 variables that are presented above
 * Write documentation and release notes

Dependencies
============
None

Documentation Impact
====================
New documentation for the feature.

References
==========
[1] `https://docs.openstack.org/cloudkitty/latest/admin/configuration/storage.html#influxdb-v2`
[2] `https://docs.openstack.org/cloudkitty/latest/admin/configuration/collector.html#metric-collection`

Change-Id: I65670cb827f8ca5f8529e1786ece635fe44475b0
Signed-off-by: Rafael Weingärtner <rafael@apache.org>
2019-07-02 11:14:05 -03:00
..
aodh Use become for all docker tasks 2019-06-06 19:04:58 +01:00
barbican Use become for all docker tasks 2019-06-06 19:04:58 +01:00
baremetal Merge "link kolla_logs volume to docker_runtime_directory if docker_runtime_directory variable exists" 2019-06-24 13:35:45 +00:00
bifrost Use become for all docker tasks 2019-06-06 19:04:58 +01:00
blazar Merge "Use become for all docker tasks" 2019-06-07 10:47:23 +00:00
ceilometer Merge "Method to override the default ceilometer meters.yaml via Kolla-ansible" 2019-06-24 13:08:28 +00:00
ceph Make Ceph upgrade check Ceph release to avoid EPERM 2019-06-18 11:35:43 +02:00
certificates Removing '/certificates' entry in generate.yml as this causes an 2019-03-27 09:26:58 -06:00
chrony Support stop specific containers 2018-11-26 08:07:01 +00:00
cinder Merge "Remove `hnas_iscsi` from the supported storage backends list of Cinder" 2019-06-24 13:08:24 +00:00
cloudkitty Cloudkitty InfluxDB Storage backend via Kolla-ansible 2019-07-02 11:14:05 -03:00
collectd Support stop specific containers 2018-11-26 08:07:01 +00:00
common Merge "link kolla_logs volume to docker_runtime_directory if docker_runtime_directory variable exists" 2019-06-24 13:35:45 +00:00
congress Use become for all docker tasks 2019-06-06 19:04:58 +01:00
cyborg Use become for all docker tasks 2019-06-06 19:04:58 +01:00
designate Designate - remove obsolete task 2019-06-21 21:21:15 +02:00
destroy Add elasticsearch_datadir_volume 2019-02-25 19:30:33 +01:00
elasticsearch Use become for all docker tasks 2019-06-06 19:04:58 +01:00
etcd Use become for all docker tasks 2019-06-06 19:04:58 +01:00
freezer Fix default deployment of freezer, use mariadb. 2019-06-18 15:12:36 -04:00
glance Use become for all docker tasks 2019-06-06 19:04:58 +01:00
gnocchi Fix the redis_connection_string for osprofiler and make it generic 2019-06-18 21:52:52 +08:00
grafana Use become for all docker tasks 2019-06-06 19:04:58 +01:00
haproxy Use become for all docker tasks 2019-06-06 19:04:58 +01:00
haproxy-config Allow separate listen port in haproxy-config templates 2018-12-27 15:45:50 -05:00
heat Remove heat_watch_server_url configuration option 2019-06-13 17:58:46 +01:00
horizon Remove Neutron LBaaS support 2019-06-07 13:50:19 +01:00
influxdb Use become for all docker tasks 2019-06-06 19:04:58 +01:00
ironic Merge "Use become for all docker tasks" 2019-06-07 10:47:23 +00:00
iscsi Use become for all docker tasks 2019-06-06 19:04:58 +01:00
kafka Use become for all docker tasks 2019-06-06 19:04:58 +01:00
karbor Use become for all docker tasks 2019-06-06 19:04:58 +01:00
keystone Merge "Do not create Keystone domain-specific config directory if useless" 2019-06-18 17:02:08 +00:00
kibana Use become for all docker tasks 2019-06-06 19:04:58 +01:00
kuryr Use become for all docker tasks 2019-06-06 19:04:58 +01:00
magnum Use become for all docker tasks 2019-06-06 19:04:58 +01:00
manila Use become for all docker tasks 2019-06-06 19:04:58 +01:00
mariadb Use become for all docker tasks 2019-06-06 19:04:58 +01:00
memcached Use become for all docker tasks 2019-06-06 19:04:58 +01:00
mistral Fix the redis_connection_string for osprofiler and make it generic 2019-06-18 21:52:52 +08:00
module-load Load known, standard kernel modules from the host, not within containers 2018-10-11 10:26:34 +02:00
monasca Cloudkitty InfluxDB Storage backend via Kolla-ansible 2019-07-02 11:14:05 -03:00
mongodb Replace merge_configs with merge_yaml for merge mongodb.conf 2019-06-21 22:40:25 +08:00
multipathd Use become for all docker tasks 2019-06-06 19:04:58 +01:00
murano Use become for all docker tasks 2019-06-06 19:04:58 +01:00
neutron Merge "Update service_provider for FWaaS v2" 2019-06-13 19:24:21 +00:00
nova Merge "Avoid parallel discover_hosts (nova-related race condition)" 2019-06-24 13:08:23 +00:00
nova-hyperv Use keystone_*_url var in all configs 2019-03-06 15:08:26 -05:00
octavia Use become for all docker tasks 2019-06-06 19:04:58 +01:00
opendaylight Use become for all docker tasks 2019-06-06 19:04:58 +01:00
openvswitch Use become for all docker tasks 2019-06-06 19:04:58 +01:00
ovs-dpdk Use become for all docker tasks 2019-06-06 19:04:58 +01:00
panko Use become for all docker tasks 2019-06-06 19:04:58 +01:00
placement Fix placement log perms in config.json 2019-06-13 08:22:21 +00:00
prechecks Use become for all docker tasks 2019-06-06 19:04:58 +01:00
prometheus Use become for all docker tasks 2019-06-06 19:04:58 +01:00
qdrouterd Use become for all docker tasks 2019-06-06 19:04:58 +01:00
qinling Implement Apache WSGI for Qinling 2019-06-21 09:46:02 -04:00
rabbitmq Use become for all docker tasks 2019-06-06 19:04:58 +01:00
rally Use become for all docker tasks 2019-06-06 19:04:58 +01:00
redis Use become for all docker tasks 2019-06-06 19:04:58 +01:00
sahara Use become for all docker tasks 2019-06-06 19:04:58 +01:00
searchlight Use become for all docker tasks 2019-06-06 19:04:58 +01:00
senlin Use become for all docker tasks 2019-06-06 19:04:58 +01:00
service-stop/tasks Use become for all docker tasks 2019-06-06 19:04:58 +01:00
skydive Use become for all docker tasks 2019-06-06 19:04:58 +01:00
solum Use become for all docker tasks 2019-06-06 19:04:58 +01:00
storm Use become for all docker tasks 2019-06-06 19:04:58 +01:00
swift Use become for all docker tasks 2019-06-06 19:04:58 +01:00
tacker Use become for all docker tasks 2019-06-06 19:04:58 +01:00
telegraf Fix Telegraf configuration template 2019-01-04 12:11:39 +00:00
tempest Fix tempest.conf permissions 2019-03-07 15:50:41 +01:00
trove Use become for all docker tasks 2019-06-06 19:04:58 +01:00
vitrage Use become for all docker tasks 2019-06-06 19:04:58 +01:00
vmtp Fixes VMTP deploys. 2019-05-29 16:20:01 +03:00
watcher Use become for all docker tasks 2019-06-06 19:04:58 +01:00
zookeeper Use become for all docker tasks 2019-06-06 19:04:58 +01:00
zun Use become for all docker tasks 2019-06-06 19:04:58 +01:00
ceph_pools.yml Use become for all docker tasks 2019-06-06 19:04:58 +01:00