Skip to content
Snippets Groups Projects
  1. Jan 09, 2022
    • Stig Telfer's avatar
      OpenID Connect certifiate file is optional · 78f29fdc
      Stig Telfer authored
      Some ID provider configurations do not require a certificate file.
      Change the logic to allow this, and update documentation accordingly.
      
      Change-Id: I2c34a6b5894402bbebeb3fb96768789bc3c7fe84
      78f29fdc
  2. Dec 31, 2021
    • Pierre Riteau's avatar
      Move project_name and kolla_role_name to role vars · 56fc74f2
      Pierre Riteau authored
      Role vars have a higher precedence than role defaults. This allows to
      import default vars from another role via vars_files without overriding
      project_name (see related bug for details).
      
      Change-Id: I3d919736e53d6f3e1a70d1267cf42c8d2c0ad221
      Related-Bug: #1951785
      56fc74f2
  3. Oct 07, 2021
  4. Sep 28, 2021
    • Niklas Hagman's avatar
      Transition Keystone admin user to system scope · 2e933dce
      Niklas Hagman authored
      A system-scoped token implies the user has authorization to act on the
      deployment system. These tokens are useful for interacting with
      resources that affect the deployment as a whole, or exposes resources
      that may otherwise violate project or domain isolation.
      
      Since Queens, the keystone-manage bootstrap command assigns the admin
      role to the admin user with system scope, as well as in the admin
      project. This patch transitions the Keystone admin user from
      authenticating using project scoped tokens to system scoped tokens.
      This is a necessary step towards being able to enable the updated oslo
      policies in services that allow finer grained access to system-level
      resources and APIs.
      
      An etherpad with discussion about the transition to the new oslo
      service policies is:
      
      https://etherpad.opendev.org/p/enabling-system-scope-in-kolla-ansible
      
      
      
      Change-Id: Ib631e2211682862296cce9ea179f2661c90fa585
      Signed-off-by: default avatarNiklas Hagman <ubuntu@post.blinkiz.com>
      2e933dce
  5. Aug 17, 2021
    • Michal Arbet's avatar
      Use Docker healthchecks for keystone-fernet container · 90fd9152
      Michal Arbet authored
      This change enables the use of Docker healthchecks for
      keystone-fernet container. It checks if "key 0" has
      right permissions, and if rsync is able to distribute
      keys to other keystones.
      
      Implements: blueprint container-health-check
      Change-Id: I17bea723d4109e869cd05d211f6f8e4653f46e17
      90fd9152
  6. Aug 10, 2021
    • Radosław Piliszek's avatar
      Refactor and optimise image pulling · 9ff2ecb0
      Radosław Piliszek authored
      We get a nice optimisation by using a filtered loop instead
      of task skipping per service with 'when'.
      
      Partially-Implements: blueprint performance-improvements
      Change-Id: I8f68100870ab90cb2d6b68a66a4c97df9ea4ff52
      9ff2ecb0
  7. Jul 15, 2021
  8. Jun 23, 2021
    • Mark Goddard's avatar
      Use ansible_facts to reference facts · ade5bfa3
      Mark Goddard authored
      By default, Ansible injects a variable for every fact, prefixed with
      ansible_. This can result in a large number of variables for each host,
      which at scale can incur a performance penalty. Ansible provides a
      configuration option [0] that can be set to False to prevent this
      injection of facts. In this case, facts should be referenced via
      ansible_facts.<fact>.
      
      This change updates all references to Ansible facts within Kolla Ansible
      from using individual fact variables to using the items in the
      ansible_facts dictionary. This allows users to disable fact variable
      injection in their Ansible configuration, which may provide some
      performance improvement.
      
      This change disables fact variable injection in the ansible
      configuration used in CI, to catch any attempts to use the injected
      variables.
      
      [0] https://docs.ansible.com/ansible/latest/reference_appendices/config.html#inject-facts-as-vars
      
      Change-Id: I7e9d5c9b8b9164d4aee3abb4e37c8f28d98ff5d1
      Partially-Implements: blueprint performance-improvements
      ade5bfa3
  9. May 13, 2021
  10. Mar 13, 2021
  11. Mar 04, 2021
    • Doug Szumski's avatar
      Add variable for changing Apache HTTP timeout · 647ff667
      Doug Szumski authored
      In services which use the Apache HTTP server to service HTTP requests,
      there exists a TimeOut directive [1] which defaults to 60 seconds. APIs
      which come under heavy load, such as Cinder, can sometimes exceed this
      which results in a HTTP 504 Gateway timeout, or similar. However, the
      request can still be serviced without error. For example, if Nova calls
      the Cinder API to detach a volume, and this operation takes longer
      than the shortest of the two timeouts, Nova will emit a stack trace
      with a 504 Gateway timeout. At some time later, the request to detach
      the volume will succeed. The Nova and Cinder DBs then become
      out-of-sync with each other, and frequently DB surgery is required.
      
      Although strictly this category of bugs should be fixed in OpenStack
      services, it is not realistic to expect this to happen in the short
      term. Therefore, this change makes it easier to set the Apache HTTP
      timeout via a new variable.
      
      An example of a related bug is here:
      
      https://bugs.launchpad.net/nova/+bug/1888665
      
      Whilst this timeout can currently be set by overriding the WSGI
      config for individual services, this change makes it much easier.
      
      Change-Id: Ie452516655cbd40d63bdad3635fd66693e40ce34
      Closes-Bug: #1917648
      647ff667
  12. Feb 15, 2021
    • Pedro Henrique's avatar
      Add support to OpenID Connect Authentication flow · f3fbe837
      Pedro Henrique authored
      
      This pull request adds support for the OpenID Connect authentication
      flow in Keystone and enables both ID and access token authentication
      flows. The ID token configuration is designed to allow users to
      authenticate via Horizon using an identity federation; whereas the
      Access token is used to allow users to authenticate in the OpenStack CLI
      using a federated user.
      
      Without this PR, if one wants to configure OpenStack to use identity
      federation, he/she needs to do a lot of configurations in the keystone,
      Horizon, and register quite a good number of different parameters using
      the CLI such as mappings, identity providers, federated protocols, and
      so on. Therefore, with this PR, we propose a method for operators to
      introduce/present the IdP's metadata to Kolla-ansible, and based on the
      presented metadata, Kolla-ansible takes care of all of the
      configurations to prepare OpenStack to work in a federated environment.
      
      Implements: blueprint add-openid-support
      Co-Authored-By: default avatarJason Anderson <jasonanderson@uchicago.edu>
      Change-Id: I0203a3470d7f8f2a54d5e126d947f540d93b8210
      f3fbe837
  13. Dec 14, 2020
    • Mark Goddard's avatar
      Revert "Performance: Use import_tasks in the main plays" · db4fc85c
      Mark Goddard authored
      This reverts commit 9cae59be.
      
      Reason for revert: This patch was found to introduce issues with fluentd customisation. The underlying issue is not currently fully understood, but could be a sign of other obscure issues.
      
      Change-Id: Ia4859c23d85699621a3b734d6cedb70225576dfc
      Closes-Bug: #1906288
      db4fc85c
  14. Oct 27, 2020
    • Radosław Piliszek's avatar
      Do not set 'always' tag where unnecessary · 71e9c603
      Radosław Piliszek authored
      Makes 'import_tasks' not change behaviour compared to
      'include_tasks'.
      
      Change-Id: I600be7c3bd763b3b924bd4a45b4e7b4dca7a33e3
      71e9c603
    • Radosław Piliszek's avatar
      Performance: Use import_tasks in the main plays · 9cae59be
      Radosław Piliszek authored
      Main plays are action-redirect-stubs, ideal for import_tasks.
      
      This avoids 'include' penalty and makes logs/ara look nicer.
      
      Fixes haproxy and rabbitmq not to check the host group as well.
      
      Change-Id: I46136fc40b815e341befff80b54a91ef431eabc0
      Partially-Implements: blueprint performance-improvements
      9cae59be
  15. Oct 22, 2020
    • Mark Goddard's avatar
      Fix permission denied during Fernet key rotation · b45679f1
      Mark Goddard authored
      During a deploy, if keystone Fernet key rotation happens before the
      keystone container starts, the rotation may fail with 'permission
      denied'. This happens because config.json for Keystone sets the
      permissions for /etc/keystone/fernet-keys.
      
      This change fixes the issue by also setting the permissions for
      /etc/keystone/fernet-keys in config.json for keystone-fernet and
      keystone-ssh.
      
      Change-Id: I561e4171d14dcaad8a2a9a36ccab84a670daa904
      Closes-Bug: #1888512
      b45679f1
    • Mark Goddard's avatar
      Fix keystone-startup.sh - remove Fernet key age check · ba8c27f5
      Mark Goddard authored
      Currently we check the age of the primary Fernet key on Keystone
      startup, and fail if it is older than the rotation interval. While this
      may seem sensible, there are various reasons why the key may be older
      than this:
      
      * if the rotation interval is not a factor of the number of seconds in a
        week, the rotation schedule will be lumpy, with the last rotation
        being up to twice the nominal rotation interval
      * if a keystone host is unavailable at its scheduled rotation time,
        rotation will not happen. This may happen multiple times
      
      We could do several things to avoid this issue:
      
      1. remove the check on the age of the key
      2. multiply the rotation interval by some factor to determine the
         allowed key age
      
      This change goes for the more simple option 1. It also cleans up some
      terminology in the keystone-startup.sh script.
      
      Closes-Bug: #1895723
      
      Change-Id: I2c35f59ae9449cb1646e402e0a9f28ad61f918a8
      ba8c27f5
  16. Oct 19, 2020
  17. Oct 16, 2020
  18. Oct 12, 2020
    • Radosław Piliszek's avatar
      Performance: optimize genconfig · 3411b9e4
      Radosław Piliszek authored
      Config plays do not need to check containers. This avoids skipping
      tasks during the genconfig action.
      
      Ironic and Glance rolling upgrades are handled specially.
      
      Swift and Bifrost do not use the handlers at all.
      
      Partially-Implements: blueprint performance-improvements
      Change-Id: I140bf71d62e8f0932c96270d1f08940a5ba4542a
      3411b9e4
  19. Oct 05, 2020
    • Michal Nasiadka's avatar
      Use Docker healthchecks for core services · c52a89ae
      Michal Nasiadka authored
      This change enables the use of Docker healthchecks for core OpenStack
      services.
      Also check-failures.sh has been updated to treat containers with
      unhealthy status as failed.
      
      Implements: blueprint container-health-check
      Change-Id: I79c6b11511ce8af70f77e2f6a490b59b477fefbb
      c52a89ae
  20. Sep 25, 2020
    • Michal Nasiadka's avatar
      Fix keystone-startup.sh · d78673e7
      Michal Nasiadka authored
      keystone-startup.sh is using fernet_token_expiry instead of
      fernet_key_rotation_interval - which effects in restart loop of keystone
      containers - when restarted after 2-3 days.
      
      Closes-Bug: #1895723
      
      Change-Id: Ifff77af3d25d9dc659fff34f2ae3c6f2670df0f4
      d78673e7
  21. Sep 22, 2020
    • Pierre Riteau's avatar
      Reduce the use of SQLAlchemy connection pooling · c8177202
      Pierre Riteau authored
      When the internal VIP is moved in the event of a failure of the active
      controller, OpenStack services can become unresponsive as they try to
      talk with MariaDB using connections from the SQLAlchemy pool.
      
      It has been argued that OpenStack doesn't really need to use connection
      pooling with MariaDB [1]. This commit reduces the use of connection
      pooling via two configuration options:
      
      - max_pool_size is set to 1 to allow only a single connection in the
        pool (it is not possible to disable connection pooling entirely via
        oslo.db, and max_pool_size = 0 means unlimited pool size)
      - lower connection_recycle_time from the default of one hour to 10
        seconds, which means the single connection in the pool will be
        recreated regularly
      
      These settings have shown better reactivity of the system in the event
      of a failover.
      
      [1] http://lists.openstack.org/pipermail/openstack-dev/2015-April/061808.html
      
      Change-Id: Ib6a62d4428db9b95569314084090472870417f3d
      Closes-Bug: #1896635
      c8177202
  22. Sep 17, 2020
    • Mark Goddard's avatar
      Support TLS encryption of RabbitMQ client-server traffic · 761ea9a3
      Mark Goddard authored
      This change adds support for encryption of communication between
      OpenStack services and RabbitMQ. Server certificates are supported, but
      currently client certificates are not.
      
      The kolla-ansible certificates command has been updated to support
      generating certificates for RabbitMQ for development and testing.
      
      RabbitMQ TLS is enabled in the all-in-one source CI jobs, or when
      The Zuul 'tls_enabled' variable is true.
      
      Change-Id: I4f1d04150fb2b5af085b762890092f87ae6076b5
      Implements: blueprint message-queue-ssl-support
      761ea9a3
  23. Aug 28, 2020
  24. Aug 25, 2020
    • wu.chunyang's avatar
      add region name for tasks · 60dc0128
      wu.chunyang authored
      when use multiple regions, those tasks always get a wrong endpoint.
      
      Change-Id: Ie164687b2ffd80cedf8a00e7f705b73fccd416e2
      60dc0128
  25. Aug 24, 2020
  26. Aug 19, 2020
    • Rafael Weingärtner's avatar
      Standardize use and construction of endpoint URLs · f425c067
      Rafael Weingärtner authored
      
      The goal for this push request is to normalize the construction and use
       of internal, external, and admin URLs. While extending Kolla-ansible
       to enable a more flexible method to manage external URLs, we noticed
       that the same URL was constructed multiple times in different parts
       of the code. This can make it difficult for people that want to work
       with these URLs and create inconsistencies in a large code base with
       time. Therefore, we are proposing here the use of
       "single Kolla-ansible variable" per endpoint URL, which facilitates
       for people that are interested in overriding/extending these URLs.
      
      As an example, we extended Kolla-ansible to facilitate the "override"
      of public (external) URLs with the following standard
      "<component/serviceName>.<companyBaseUrl>".
      Therefore, the "NAT/redirect" in the SSL termination system (HAproxy,
      HTTPD or some other) is done via the service name, and not by the port.
      This allows operators to easily and automatically create more friendly
       URL names. To develop this feature, we first applied this patch that
       we are sending now to the community. We did that to reduce the surface
        of changes in Kolla-ansible.
      
      Another example is the integration of Kolla-ansible and Consul, which
      we also implemented internally, and also requires URLs changes.
      Therefore, this PR is essential to reduce code duplicity, and to
      facility users/developers to work/customize the services URLs.
      
      Change-Id: I73d483e01476e779a5155b2e18dd5ea25f514e93
      Signed-off-by: default avatarRafael Weingärtner <rafael@apache.org>
      f425c067
  27. Aug 13, 2020
    • Mark Goddard's avatar
      Prevent overwriting existing Keystone Fernet keys · 8389140f
      Mark Goddard authored
      Steps to reproduce:
      
      * Deploy a cloud
      * Add another controller to the inventory
      * Deploy to the new controller using --limit:
      
      kolla-ansible deploy --limit new-controller
      
      Expected results:
      
      The new controller uses the cluster's existing fernet keys.
      
      Actual results:
      
      New fernet keys are generated on the new controller, and pushed out to
      the existing controllers. This invalidates tokens created from those
      keys.
      
      This change prevents the above scenario from happening, by failing the
      deployment if there are no hosts with existing Ferney keys to
      distribute, and not all Keystone hosts are in the target host list.
      
      Closes-Bug: #1891364
      
      Change-Id: If0c0e038b77fc010a3a017f9841a674d53b16457
      8389140f
    • James Kirsch's avatar
      Add Keep Alive Timeout for httpd · 19b028e6
      James Kirsch authored
      This patch introduces a global keep alive timeout value for services
      that leverage httpd + wsgi to handle http/https requests. The default
      value is one minute.
      
      Change-Id: Icf7cb0baf86b428a60a7e9bbed642999711865cd
      Partially-Implements: blueprint add-ssl-internal-network
      19b028e6
  28. Aug 10, 2020
    • Mark Goddard's avatar
      Mount /etc/timezone based on host OS · 146b00ef
      Mark Goddard authored
      Previously we mounted /etc/timezone if the kolla_base_distro is debian
      or ubuntu. This would fail prechecks if debian or ubuntu images were
      deployed on CentOS. While this is not a supported combination, for
      correctness we should fix the condition to reference the host OS rather
      than the container OS, since that is where the /etc/timezone file is
      located.
      
      Change-Id: Ifc252ae793e6974356fcdca810b373f362d24ba5
      Closes-Bug: #1882553
      146b00ef
  29. Aug 06, 2020
  30. Jul 28, 2020
    • Mark Goddard's avatar
      Performance: use import_tasks for check-containers.yml · 9702d4c3
      Mark Goddard authored
      Including tasks has a performance penalty when compared with importing
      tasks. If the include has a condition associated with it, then the
      overhead of the include may be lower than the overhead of skipping all
      imported tasks. In the case of the check-containers.yml include, the
      included file only has a single task, so the overhead of skipping this
      task will not be greater than the overhead of the task import. It
      therefore makes sense to switch to use import_tasks there.
      
      Partially-Implements: blueprint performance-improvements
      
      Change-Id: I65d911670649960708b9f6a4c110d1a7df1ad8f7
      9702d4c3
  31. Jul 07, 2020
    • Mark Goddard's avatar
      Performance: Run common role in a separate play · 56ae2db7
      Mark Goddard authored
      The common role was previously added as a dependency to all other roles.
      It would set a fact after running on a host to avoid running twice. This
      had the nice effect that deploying any service would automatically pull
      in the common services for that host. When using tags, any services with
      matching tags would also run the common role. This could be both
      surprising and sometimes useful.
      
      When using Ansible at large scale, there is a penalty associated with
      executing a task against a large number of hosts, even if it is skipped.
      The common role introduces some overhead, just in determining that it
      has already run.
      
      This change extracts the common role into a separate play, and removes
      the dependency on it from all other roles. New groups have been added
      for cron, fluentd, and kolla-toolbox, similar to other services. This
      changes the behaviour in the following ways:
      
      * The common role is now run for all hosts at the beginning, rather than
        prior to their first enabled service
      * Hosts must be in the necessary group for each of the common services
        in order to have that service deployed. This is mostly to avoid
        deploying on localhost or the deployment host
      * If tags are specified for another service e.g. nova, the common role
        will *not* automatically run for matching hosts. The common tag must
        be specified explicitly
      
      The last of these is probably the largest behaviour change. While it
      would be possible to determine which hosts should automatically run the
      common role, it would be quite complex, and would introduce some
      overhead that would probably negate the benefit of splitting out the
      common role.
      
      Partially-Implements: blueprint performance-improvements
      
      Change-Id: I6a4676bf6efeebc61383ec7a406db07c7a868b2a
      56ae2db7
  32. Jun 07, 2020
  33. Jun 02, 2020
  34. May 15, 2020
  35. May 14, 2020
    • generalfuzz's avatar
      Fix Keystone Centos 8 mod_ssl · 783bbfdd
      generalfuzz authored
      Keystone was not loading the correct mod_ssl library in centos 8
      deployment.
      
      Change-Id: I604d675ba7ad28922f360fdc729746f99c1507b4
      Partially-Implements: blueprint add-ssl-internal-network
      783bbfdd
  36. Apr 16, 2020
Loading