Skip to content
Snippets Groups Projects
  1. Aug 16, 2019
  2. Aug 15, 2019
    • Rafael Weingärtner's avatar
      Standardize the configuration of "oslo_messaging" section · 22a6223b
      Rafael Weingärtner authored
      After all of the discussions we had on
      "https://review.opendev.org/#/c/670626/2", I studied all projects that
      have an "oslo_messaging" section. Afterwards, I applied the same method
      that is already used in "oslo_messaging" section in Nova, Cinder, and
      others. This guarantees that we have a consistent method to
      enable/disable notifications across projects based on components (e.g.
      Ceilometer) being enabled or disabled. Here follows the list of
      components, and the respective changes I did.
      
      * Aodh:
      The section is declared, but it is not used. Therefore, it will
      be removed in an upcomming PR.
      
      * Congress:
      The section is declared, but it is not used. Therefore, it will
      be removed in an upcomming PR.
      
      * Cinder:
      It was already properly configured.
      
      * Octavia:
      The section is declared, but it is not used. Therefore, it will
      be removed in an upcomming PR.
      
      * Heat:
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Ceilometer:
      Ceilometer publishes some messages in the rabbitMQ. However, the
      default driver is "messagingv2", and not ''(empty) as defined in Oslo;
      these configurations are defined in ceilometer/publisher/messaging.py.
      Therefore, we do not need to do anything for the
      "oslo_messaging_notifications" section in Ceilometer
      
      * Tacker:
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Neutron:
      It was already properly configured.
      
      * Nova
      It was already properly configured. However, we found another issue
      with its configuration. Kolla-ansible does not configure nova
      notifications as it should. If 'searchlight' is not installed (enabled)
      the 'notification_format' should be 'unversioned'. The default is
      'both'; so nova will send a notification to the queue
      versioned_notifications; but that queue has no consumer when
      'searchlight' is disabled. In our case, the queue got 511k messages.
      The huge amount of "stuck" messages made the Rabbitmq cluster
      unstable.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1478274
      https://bugs.launchpad.net/ceilometer/+bug/1665449
      
      * Nova_hyperv:
      I added the same configurations as in Nova project.
      
      * Vitrage
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Searchlight
      I created a mechanism similar to what we have in AODH, Cinder, Nova,
      and others.
      
      * Ironic
      I created a mechanism similar to what we have in AODH, Cinder, Nova,
      and others.
      
      * Glance
      It was already properly configured.
      
      * Trove
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Blazar
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Sahara
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Watcher
      I created a mechanism similar to what we have in AODH, Cinder, Nova,
      and others.
      
      * Barbican
      I created a mechanism similar to what we have in Cinder, Nova,
      and others. I also added a configuration to 'keystone_notifications'
      section. Barbican needs its own queue to capture events from Keystone.
      Otherwise, it has an impact on Ceilometer and other systems that are
      connected to the "notifications" default queue.
      
      * Keystone
      Keystone is the system that triggered this work with the discussions
      that followed on https://review.opendev.org/#/c/670626/2
      
      . After a long
      discussion, we agreed to apply the same approach that we have in Nova,
      Cinder and other systems in Keystone. That is what we did. Moreover, we
      introduce a new topic "barbican_notifications" when barbican is
      enabled. We also removed the "variable" enable_cadf_notifications, as
      it is obsolete, and the default in Keystone is CADF.
      
      * Mistral:
      It was hardcoded "noop" as the driver. However, that does not seem a
      good practice. Instead, I applied the same standard of using the driver
      and pushing to "notifications" queue if Ceilometer is enabled.
      
      * Cyborg:
      I created a mechanism similar to what we have in AODH, Cinder, Nova,
      and others.
      
      * Murano
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Senlin
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Manila
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Zun
      The section is declared, but it is not used. Therefore, it will
      be removed in an upcomming PR.
      
      * Designate
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      * Magnum
      It was already using a similar scheme; I just modified it a little bit
      to be the same as we have in all other components
      
      Closes-Bug: #1838985
      
      Change-Id: I88bdb004814f37c81c9a9c4e5e491fac69f6f202
      Signed-off-by: default avatarRafael Weingärtner <rafael@apache.org>
      22a6223b
    • Kien Nguyen's avatar
      Add Masakari Ansible role · 577bb50a
      Kien Nguyen authored
      Masakari provides Instances High Availability Service for
      OpenStack clouds by automatically recovering failed Instances.
      
      Depends-On: https://review.openstack.org/#/c/615469/
      
      
      Change-Id: I0b3457232ee86576022cff64eb2e227ff9bbf0aa
      Implements: blueprint ansible-masakari
      Co-Authored-By: default avatarGaëtan Trellu <gaetan.trellu@incloudus.com>
      577bb50a
  3. Aug 14, 2019
    • Scott Solkhon's avatar
      Add missing when condition for swift config files · 8acbb32b
      Scott Solkhon authored
      Change-Id: If5bba855a6e34c971fdb1ceb6f10dba62e54b811
      8acbb32b
    • Scott Solkhon's avatar
      Fix idempotency of fluentd customisations · dcaa5f0b
      Scott Solkhon authored
      Fix fluentd config from overwriting custom config with the same filename
      
      Closes-Bug: #1840166
      Change-Id: I42c5446381033015f590901b2120950d602f847f
      dcaa5f0b
    • Scott Solkhon's avatar
      Add missing Octavia policy file to Horizon · b3d07a4b
      Scott Solkhon authored
      This commit adds the missing policy file for Octavia
      in Horizon, thus enabling the panel where appropriate.
      
      Change-Id: I60f1a52de71519f2d8bd84baa8aba5700fa75b1c
      b3d07a4b
    • Scott Solkhon's avatar
      Add support for Swift S3 API · d72b27f2
      Scott Solkhon authored
      This feature is disabled by default, and can be enabled by setting
      'enable_swift_s3api' to 'true' in globals.yml.
      
      Two middlewares are required for Swift S3 - s3api and s3token. Additionally, we
      need to configure the authtoken middleware to delay auth decisions to give
      s3token a chance to authorise requests using EC2 credentials.
      
      Change-Id: Ib8e8e3a1c2ab383100f3c60ec58066e588d3b4db
      d72b27f2
  4. Aug 13, 2019
  5. Aug 08, 2019
    • Radosław Piliszek's avatar
      Fix FWaaS service provider (v2, Stein issue) · 85a5fb55
      Radosław Piliszek authored
      Because we merged both [1] and [2] in master,
      we got broken FWaaS.
      This patch unbreaks it and is required to backport
      to Stein due to [2] backport waiting for merge,
      while [1] is already backported.
      
      [1] https://review.opendev.org/661704
      [2] https://review.opendev.org/668406
      
      
      
      Change-Id: I74427ce9b937c42393d86574614603bd788606af
      Signed-off-by: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>
      85a5fb55
    • Doug Szumski's avatar
      Support namespacing RabbitMQ logs · 339ea2bd
      Doug Szumski authored
      The RabbitMQ role supports namespacing the service via the
      project_name. For example, if you change the project_name, the
      container name and config directory will be renamed accordingly. However
      the log folder is currently fixed, even though the service tries to
      write to one named after the project_name. This change fixes that.
      
      Whilst you might generally use vhosts, running multiple RabbitMQ
      services on a single node is useful at the very least for testing,
      or for running 'outward RabbitMQ' on the same node.
      
      This change is part of the work to support Cells v2.
      
      Partially Implements: blueprint support-nova-cells
      Change-Id: Ied2c24c01571327ea532ba0aaf2fc5e89de8e1fb
      339ea2bd
  6. Aug 07, 2019
    • Michal Nasiadka's avatar
      Add support for sha256 in ceph key distribution · ad9e8786
      Michal Nasiadka authored
      - add support for sha256 in bslurp module
      - change sha1 to sha256 in ceph-mon ansible role
      
      Depends-On: https://review.opendev.org/655623
      Change-Id: I25e28d150f2a8d4a7f87bb119d9fb1c46cfe926f
      Closes-Bug: #1826327
      ad9e8786
    • Marcin Juszkiewicz's avatar
      Stop using MountFlags=shared in Docker configuration · 35941738
      Marcin Juszkiewicz authored
      According to Docker upstream release notes [1] MountFlags should be
      empty.
      
      1. https://docs.docker.com/engine/release-notes/#18091
      
      "Important notes about this release
      
      In Docker versions prior to 18.09, containerd was managed by the Docker
      engine daemon. In Docker Engine 18.09, containerd is managed by systemd.
      Since containerd is managed by systemd, any custom configuration to the
      docker.service systemd configuration which changes mount settings (for
      example, MountFlags=slave) breaks interactions between the Docker Engine
      daemon and containerd, and you will not be able to start containers.
      
      Run the following command to get the current value of the MountFlags
      property for the docker.service:
      
      sudo systemctl show --property=MountFlags docker.service
      MountFlags=
      
      Update your configuration if this command prints a non-empty value for
      MountFlags, and restart the docker service."
      
      Closes-bug: #1833835
      
      Change-Id: I4f4cbb09df752d00073a606463c62f0a6ca6c067
      35941738
    • Mark Goddard's avatar
      Enable iscsid on cinder-backup hosts · ec075240
      Mark Goddard authored
      
      Without this we may see the following error in cinder-backup when using
      the LVM backend:
      
          Could not login to any iSCSI portal
      
      Enabling the iscsid container on hosts in the cinder-backup group fixes
      this.
      
      Closes-Bug: #1838624
      
      Change-Id: If373c002b0744ce9dbdffed50a02bab55dd0acb9
      Co-Authored-By: default avatardmitry-a-grachev <dmitry.a.grachev@gmail.com>
      ec075240
  7. Aug 06, 2019
  8. Aug 05, 2019
    • wangwei's avatar
      Support mon and osd to be named with hostname · cd519db1
      wangwei authored
      In the current deployment of ceph, the node name of osd and the name
      of mon are both IP, and other daemons use hostname.
      
      This commit adds support for naming mon and osd nodes using hostname,
      and does not change the default ip-named way.
      
      Change-Id: I22bef72dcd8fc8bcd391ae30e4643520250fd556
      cd519db1
    • pangliye's avatar
      Add Kafka input to telegraf config · 93e86836
      pangliye authored
      Change-Id: I9a8d3dc5f311d4ea4e5d9b03d522632abc66a7ac
      93e86836
    • Radosław Piliszek's avatar
      Do not require EPEL repo on RHEL-based target hosts · 67cedb7a
      Radosław Piliszek authored
      This change makes kolla-ansible more compatible with
      RHEL which does not provide epel-release package.
      
      EPEL was required to install simplejson from rpm
      which was an ansible requirement when used python
      version was below 2.5 ([1]). This has been obsolete for
      quite a time so it's a good idea to get rid of it.
      
      This change includes update of docs to read more properly.
      
      [1] https://docs.ansible.com/ansible/2.3/intro_installation.html
      
      
      
      Change-Id: I825431d41fbceb824baff27130d64dabe4475d33
      Signed-off-by: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>
      67cedb7a
    • Radosław Piliszek's avatar
      ceph: fixes to deployment and upgrade · 826f6850
      Radosław Piliszek authored
      1) ceph-nfs (ganesha-ceph) - use NFSv4 only
      This is recommended upstream.
      v3 and UDP require portmapper (aka rpcbind) which we
      do not want, except where Ubuntu ganesha version (2.6)
      forces it by requiring enabled UDP, see [1].
      The issue has been fixed in 2.8, included in CentOS.
      Additionally disable v3 helper protocols and kerberos
      to avoid meaningless warnings.
      
      2) ceph-nfs (ganesha-ceph) - do not export host dbus
      It is not in use. This avoids the temptation to try
      handling it on host.
      
      3) Properly handle ceph services deploy and upgrade
      Upgrade runs deploy.
      The order has been corrected - nfs goes after mds.
      Additionally upgrade takes care of rgw for keystone
      (for swift emulation).
      
      4) Enhance ceph keyring module with error detection
      Now it does not blindly try to create a keyring after
      any failure. This used to hide real issue.
      
      5) Retry ceph admin keyring update until cluster works
      Reordering deployment caused issue with ceph cluster not being
      fully operational before taking actions on it.
      
      6) CI: Remove osd df from collected logs as it may hang CI
      Hangs are caused by healthy MON and no healthy MGR.
      A descriptive note is left in its place.
      
      7) CI: Add 5s timeout to ceph informational commands
      This decreases the timeout from the default 300s.
      
      [1] https://review.opendev.org/669315
      
      
      
      Change-Id: I1cf0ad10b80552f503898e723f0c4bd00a38f143
      Signed-off-by: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>
      826f6850
  9. Jul 30, 2019
  10. Jul 23, 2019
  11. Jul 18, 2019
    • Jason's avatar
      Do not recreate Blazar DB if using preconfigured · 7d284761
      Jason authored
      Most other services already gate the DB bootstrap operations with the
      'use_preconfigured_databases' variable; Blazar did not.
      
      Change-Id: I772b1cb92612c7e6936f052ed9947f93582f264c
      7d284761
    • Jason Anderson's avatar
      [gnocchi] Don't recursively modify file perms on start · 464fefb1
      Jason Anderson authored
      For deployments with a lot of Gnocchi data, this is a non-starter
      (literally... the service basically can't start.) There maybe needs to
      be a way to configure this, or only do it during deploy/bootstrap?
      Unclear, but disabling for now; users can `chown -R gnocchi:gnocchi`
      themselves in the meantime if need be.
      
      Change-Id: I0bae6dfbbee9f63506c89bd6b392e7be07fd5930
      464fefb1
    • Mark Goddard's avatar
      Fix glance bootstrap with file backend · 1abd15d4
      Mark Goddard authored
      Change https://review.opendev.org/#/c/670247/ attempted to fix glance
      deployment with the file backend. However, it added a new bug by being
      more strict about only generating configuration where the container will
      be deployed. This means that the current method of running the glance
      bootstrap container on any host in glance-api group could be broken,
      since it needs the container configuration.
      
      This change only runs the bootstrap container on hosts in the
      glance_api_hosts list, which in the case of the file backend typically
      only contains one host.
      
      This change also fixes up some logic during rolling upgrade, where we
      might not generate new configuration for the bootstrap host.
      
      Change-Id: I83547cd83b06ddefb3a9e1f39844537bdb32bd7f
      Related-Bug: #1836151
      1abd15d4
    • Radosław Piliszek's avatar
      Fix handling of docker restart policy · 6a737b19
      Radosław Piliszek authored
      Docker has no restart policy named 'never'. It has 'no'.
      This has bitten us already (see [1]) and might bite us again whenever
      we want to change the restart policy to 'no'.
      
      This patch makes our docker integration honor all valid restart policies
      and only valid restart policies.
      All relevant docker restart policy usages are patched as well.
      
      I added some FIXMEs around which are relevant to kolla-ansible docker
      integration. They are not fixed in here to not alter behavior.
      
      [1] https://review.opendev.org/667363
      
      
      
      Change-Id: I1c9764fb9bbda08a71186091aced67433ad4e3d6
      Signed-off-by: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>
      6a737b19
  12. Jul 16, 2019
    • Michal Nasiadka's avatar
      ceph-nfs: Add rpcbind to Ubuntu host bootstrap · efcaf400
      Michal Nasiadka authored
      * Ubuntu ships with nfs-ganesha 2.6.0, which requires to do an rpcbind
      udp test on startup (was fixed later)
      * Add rpcbind package to be installed by kolla-ansible bootstrap when
      ceph_nfs is enabled
      * Update Ceph deployment docs with a note
      
      Change-Id: Ic19264191a0ed418fa959fdc122cef543446fbe5
      efcaf400
  13. Jul 12, 2019
    • Mark Goddard's avatar
      Fix ironic inspector iPXE boot with UEFI · 7b939756
      Mark Goddard authored
      The ironic inspector iPXE configuration includes the following kernel
      argument:
      
      initrd=agent.ramdisk
      
      However, the ramdisk is actually called ironic-agent.initramfs, so the
      argument should be:
      
      initrd=ironic-agent.initramfs
      
      In BIOS boot mode this does not cause a problem, but for compute nodes
      with UEFI enabled, it seems to be more strict about this, and fails to
      boot.
      
      Change-Id: Ic84f3b79fdd3cd1730ca2fb79c11c7a4e4d824de
      Closes-Bug: #1836375
      7b939756
    • Mark Goddard's avatar
      During deploy, always sync DB · d5e5e885
      Mark Goddard authored
      A common class of problems goes like this:
      
      * kolla-ansible deploy
      * Hit a problem, often in ansible/roles/*/tasks/bootstrap.yml
      * Re-run kolla-ansible deploy
      * Service fails to start
      
      This happens because the DB is created during the first run, but for some
      reason we fail before performing the DB sync. This means that on the second run
      we don't include ansible/roles/*/tasks/bootstrap_service.yml because the DB
      already exists, and therefore still don't perform the DB sync. However this
      time, the command may complete without apparent error.
      
      We should be less careful about when we perform the DB sync, and do it whenever
      it is necessary. There is an argument for not doing the sync during a
      'reconfigure' command, although we will not change that here.
      
      This change only always performs the DB sync during 'deploy' and
      'reconfigure' commands.
      
      Change-Id: I82d30f3fcf325a3fdff3c59f19a1f88055b566cc
      Closes-Bug: #1823766
      Closes-Bug: #1797814
      d5e5e885
  14. Jul 11, 2019
    • Mark Goddard's avatar
      Fix glance with file backend · 602f89ba
      Mark Goddard authored
      Since https://review.opendev.org/647699/, we lost the logic to only
      deploy glance-api on a single host when using the file backend.
      
      This code was always a bit custom, and would be better supported by
      using the 'host_in_groups' pattern we have in a few other places where a
      single group name does not describe the placement of containers for a
      service.
      
      Change-Id: I21ce4a3b0beee0009ac69fecd0ce24efebaf158d
      Closes-Bug: #1836151
      602f89ba
  15. Jul 10, 2019
  16. Jul 08, 2019
    • Mark Goddard's avatar
      Fix nova deploy with Ansible<2.8 · 5be093ac
      Mark Goddard authored
      Due to a bug in ansible, kolla-ansible deploy currently fails in nova
      with the following error when used with ansible earlier than 2.8:
      
      TASK [nova : Waiting for nova-compute services to register themselves]
      *********
      task path:
      /home/zuul/src/opendev.org/openstack/kolla-ansible/ansible/roles/nova/tasks/discover_computes.yml:30
      fatal: [primary]: FAILED! => {
          "failed": true,
          "msg": "The field 'vars' has an invalid value, which
              includes an undefined variable. The error was:
              'nova_compute_services' is undefined\n\nThe error
              appears to have been in
              '/home/zuul/src/opendev.org/openstack/kolla-ansible/ansible/roles/nova/tasks/discover_computes.yml':
              line 30, column 3, but may\nbe elsewhere in the file
              depending on the exact syntax problem.\n\nThe
              offending line appears to be:\n\n\n- name: Waiting
              for nova-compute services to register themselves\n ^
                  here\n"
      }
      
      Example:
      http://logs.openstack.org/00/669700/1/check/kolla-ansible-centos-source/81b65b9/primary/logs/ansible/deploy
      
      This was caused by
      https://review.opendev.org/#/q/I2915e2610e5c0b8d67412e7ec77f7575b8fe9921,
      which hits upon an ansible bug described here:
      https://github.com/markgoddard/ansible-experiments/tree/master/05-referencing-registered-var-do-until.
      
      We can work around this by not using an intermediary variable.
      
      Change-Id: I58f8fd0a6e82cb614e02fef6e5b271af1d1ce9af
      Closes-Bug: #1835817
      5be093ac
    • Mariusz's avatar
      Handle more return codes from nova-status upgrade check · c68ed4dd
      Mariusz authored
      In a single controller scenario, the "Upgrade status check result"
      does nothing because the previous task can only succeed when
      `nova-status upgrade check` returns code 0. This change allows this
      command to fail, so that the value of returned code stored in
      `nova_upgrade_check_stdout` can then be analysed.
      
      This change also allows for warnings (rc 1) to pass.
      Closes-Bug: 1834647
      
      Change-Id: I6f5e37832f43f23604920b9d890cc505ca924ff9
      c68ed4dd
  17. Jul 05, 2019
    • Mark Goddard's avatar
      Fixes for MariaDB bootstrap and recovery · 86f373a1
      Mark Goddard authored
      * Fix wsrep sequence number detection. Log message format is
        'WSREP: Recovered position: <UUID>:<seqno>' but we were picking out
        the UUID rather than the sequence number. This is as good as random.
      
      * Add become: true to log file reading and removal since
        I4a5ebcedaccb9261dbc958ec67e8077d7980e496 added become: true to the
        'docker cp' command which creates it.
      
      * Don't run handlers during recovery. If the config files change we
        would end up restarting the cluster twice.
      
      * Wait for wsrep recovery container completion (don't detach). This
        avoids a potential race between wsrep recovery and the subsequent
        'stop_container'.
      
      * Finally, we now wait for the bootstrap host to report that it is in
        an OPERATIONAL state. Without this we can see errors where the
        MariaDB cluster is not ready when used by other services.
      
      Change-Id: Iaf7862be1affab390f811fc485fd0eb6879fd583
      Closes-Bug: #1834467
      86f373a1
    • Michal Nasiadka's avatar
      Add mon address to ceph release version check · b2c17d60
      Michal Nasiadka authored
      Change-Id: Ia4801d09ff1165c44561fd286fc57e903da2c602
      b2c17d60
  18. Jul 04, 2019
    • Mark Goddard's avatar
      Deprecate Ceph deployment · e6d0e610
      Mark Goddard authored
      There are now several good tools for deploying Ceph, including Ceph
      Ansible and ceph-deploy. Maintaining our own Ceph deployment is a
      significant maintenance burden, and we should focus on our core mission
      to deploy OpenStack. Given that this is a significant part of kolla
      ansible currently we will need a long deprecation period and a migration
      path to another tool.
      
      Change-Id: Ic603c85c04d8794580a19f9efaa7a8589565f4f6
      Partially-Implements: blueprint remove-ceph
      e6d0e610
    • Christian Berendt's avatar
      Add parameters to configure number of processes and threads of horizon · dc3489df
      Christian Berendt authored
      Change-Id: Ib5490d504a5b7c9a37dda7babf1257aa661c11de
      dc3489df
    • Mark Goddard's avatar
      Wait for all compute services before cell discovery · c38dd767
      Mark Goddard authored
      There is a race condition during nova deploy since we wait for at least
      one compute service to register itself before performing cells v2 host
      discovery.  It's quite possible that other compute nodes will not yet
      have registered and will therefore not be discovered. This leaves them
      not mapped into a cell, and results in the following error if the
      scheduler picks one when booting an instance:
      
      Host 'xyz' is not mapped to any cell
      
      The problem has been exacerbated by merging a fix [1][2] for a nova race
      condition, which disabled the dynamic periodic discovery mechanism in
      the nova scheduler.
      
      This change fixes the issue by waiting for all expected compute services
      to register themselves before performing host discovery. This includes
      both virtualised compute services and bare metal compute services.
      
      [1] https://bugs.launchpad.net/kolla-ansible/+bug/1832987
      [2] https://review.opendev.org/665554
      
      Change-Id: I2915e2610e5c0b8d67412e7ec77f7575b8fe9921
      Closes-Bug: #1835002
      c38dd767
  19. Jul 02, 2019
    • Rafael Weingärtner's avatar
      Cloudkitty InfluxDB Storage backend via Kolla-ansible · 97cb30cd
      Rafael Weingärtner authored
      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: default avatarRafael Weingärtner <rafael@apache.org>
      97cb30cd
Loading