Skip to content
Snippets Groups Projects
  1. Oct 28, 2024
    • Roman Krček's avatar
      Rewrite kolla-ansible CLI to python · 9ea63dc3
      Roman Krček authored
      
      Moving the CLI to python allows for easier
      maintenance and larger feature-set.
      
      This patch introduces a few breaking changes!
      The changes stem the nature of the cliff package.
      - the order of parameters must be
        kolla-ansible <action> <arguments>
      - mariadb_backup and mariadb_recovery now are
        mariadb-backup and mariadb-recovery
      
      Closes-bug: #1589020
      Signed-off-by: default avatarRoman Krček <roman.krcek@tietoevry.com>
      Change-Id: I9749b320d4f5eeec601a055b597dfa7d8fb97ce2
      9ea63dc3
  2. Aug 05, 2024
  3. May 07, 2024
  4. Apr 08, 2024
  5. Nov 16, 2023
  6. Nov 07, 2023
  7. Oct 03, 2023
    • Célestin Matte's avatar
      kolla_address: check correct error return value · eec8b059
      Célestin Matte authored
      Unlike other methods such as resolve(), get() does not return an Undefined object, but None.
      This removes 4 ansible-lint warnings in various files calling kolla_address.
      
      Closes-Bug: #2038281
      
      Change-Id: I591a50512a954210f951c40a350ed4b9e1fc48ae
      eec8b059
  8. Jun 28, 2023
  9. May 31, 2023
    • Maksim Malchuk's avatar
      Fix passwords.yml permissions · 5fd81170
      Maksim Malchuk authored
      
      The kolla-genpwd, kolla-mergepwd, kolla-readpwd and kolla-writepwd
      commands now creates or updates passwords.yml with correct
      permissions. Also they display warning message about incorrect
      permissions.
      
      Closes-Bug: #2018338
      Change-Id: I4b50053ced9150499d1d09fd4a0ec2e243cf938b
      Signed-off-by: default avatarMaksim Malchuk <maksim.malchuk@gmail.com>
      5fd81170
  10. Sep 02, 2022
    • Scott Solkhon's avatar
      Fix Hashi login method for approles · 33008155
      Scott Solkhon authored
      Moves Hashi Vault client login to use `auth.approle.login` as
      current method is being deprecated in the next release.
      
      ```
      DeprecationWarning: Call to deprecated function 'auth_approle'.
      This method will be removed in version '0.12.0' Please use
      the 'login' method on the 'hvac.api.auth_methods.approle'
      class moving forward.
      client.auth_approle(vault_role_id, vault_secret_id)
      ```
      
      Change-Id: Ie5c1ebe99c8508336cc10944fdaa742ad7d1d85e
      33008155
  11. Aug 09, 2022
  12. Jul 29, 2022
  13. Jul 27, 2022
    • k-s-dean's avatar
      adds firewalld configuration based on enabled services · 8553e52a
      k-s-dean authored
      This change introduces automated configuration of firewalld and adds
      a new filter for extracting services from the project_services dict.
      the filter selects any enabled services and their haproxy element
      and returns them so they can be iterated over.
      This commit also enables automated configuration of firewalld from enabled
      openstack services and adds them to the defined zone and reloads the
      system firewall.
      
      Change-Id: Iea3680142711873984efff2b701347b6a56dd355
      8553e52a
  14. May 24, 2022
    • Marcin Juszkiewicz's avatar
      genpwd: handle lack of password file nicer · 333c74fe
      Marcin Juszkiewicz authored
      From:
      
      (kolla) 13:11 (s) marcin@puchatek:kolla-ansible$ kolla-genpwd
      Traceback (most recent call last):
        File "/home/marcin/.virtualenvs/kolla/bin/kolla-genpwd", line 8, in <module>
          sys.exit(main())
        File "/home/marcin/.virtualenvs/kolla/lib/python3.10/site-packages/kolla_ansible/cmd/genpwd.py", line 135, in main
          genpwd(passwords_file, length, uuid_keys, ssh_keys, blank_keys,
        File "/home/marcin/.virtualenvs/kolla/lib/python3.10/site-packages/kolla_ansible/cmd/genpwd.py", line 59, in genpwd
          with open(passwords_file, 'r') as f:
      FileNotFoundError: [Errno 2] No such file or directory: '/etc/kolla/passwords.yml'
      
      To:
      
      (kolla) 13:17 (s) marcin@puchatek:kolla-ansible$ kolla-genpwd
      ERROR: Passwords file "/etc/kolla/passwords.yml" is missing
      
      Change-Id: I18a9559daeb3d124a03dcb735ebb01a2cf24f617
      333c74fe
  15. Mar 30, 2022
    • Michal Nasiadka's avatar
      neutron: add ssh key · 7fcf3ca3
      Michal Nasiadka authored
      This key can be used by users in networking-generic-switch
      scenario instead of adding cleartext password in ml2_conf.ini.
      
      Change-Id: I10003e6526a55a97f22678ab81c411e4645c5157
      7fcf3ca3
  16. Mar 24, 2022
    • Sven Kieske's avatar
      re-add rabbitmq config for clustering interface · 15992524
      Sven Kieske authored
      this adds back the ability to configure
      the rabbitmq/erlang kernel network interface
      which was removed in https://review.opendev.org/#/c/584427/
      seemingly by accident.
      
      Closes-Bug: 1900160
      
      Change-Id: I6f00396495853e117429c17fadfafe809e322a31
      Unverified
      15992524
    • Mark Goddard's avatar
      Use jinja2.pass_context instead of contextfilter · fc2292b2
      Mark Goddard authored
      The contextfilter decorator was deprecated in jinja2 3.0.0, and has been
      dropped in 3.1.0. This results in the following warning, and failed
      attempts to use filters:
      
          [WARNING]: Skipping plugin (filters.py) as it seems to be invalid:
          module 'jinja2' has no attribute 'contextfilter'
      
      This change switches to use the pass_context decorator. The minimum
      version of Jinja2 is raised to 3 to ensure pass_context is present.
      
      Change-Id: I649dd6211d3ae72b9539bc44652ef8cf5d579777
      fc2292b2
  17. Nov 09, 2021
  18. Jun 30, 2021
  19. 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
  20. Dec 22, 2020
  21. Oct 02, 2020
    • wu.chunyang's avatar
      Implement automatic deploy of octavia · 4a58f423
      wu.chunyang authored
      
      this patchset has implemented:
        - network (lb-mgmt-net)
        - security groups and rules (used by amphora and health manager)
        - amphora flavor (used by amphora)
        - nova keypair (used by amphora at the time of debugging)
      
      Add a octavia_amp_listen_port variable which used by amphora
      Add amp_image_owner_id in octavia.conf
      
      Implements: blueprint implement-automatic-deploy-of-octavia
      Co-Authored-By: default avatarzhangchun <zhangchun@yovole.com>
      
      Depends-On: https://review.opendev.org/652030
      
      Change-Id: I67009d046925cfc02c1e0073c80085c1471975f6
      4a58f423
  22. Jul 28, 2020
    • Mark Goddard's avatar
      Performance: use a single config file for fluentd · 56a07702
      Mark Goddard authored
      Currently we generate multiple fluentd configuration files for inputs,
      filters, formatters and outputs.
      These are then included from the main td-agent.conf configuration file.
      With a large number of hosts, this can take a long time to template.
      
      Benchmarking of templating is available at [1].
      
      This change switches to a single fluentd configuration file, with the
      include done locally. For the default template files included with Kolla
      Ansible we use Jinja includes, but this does not work with templates in
      a different directory. We therefore use the Ansible template lookup
      plugin, which has a slightly higher overhead than a jinja include, but
      far lower than generating multiple templates. This should drastically
      improve the performance of this task.
      
      [1] https://github.com/stackhpc/ansible-scaling/blob/master/doc/template.md
      
      Partially-Implements: blueprint performance-improvements
      
      Change-Id: Ia8623be0aa861fea3e54d2c9e1c971dfd8e3afa9
      56a07702
  23. May 22, 2020
    • Mark Goddard's avatar
      Improve error reporting in password utilities · 620b808c
      Mark Goddard authored
      The kolla-genpwd and kolla-mergepwd commands can be used to manipulate
      the kolla passwords.yml file. The format is a YAML encoded dict of
      password variable names to their values. If the format is not a dict,
      the error messages are unhelpful.  In particular, this can happen if the
      file is encrypted e.g. via Ansible Vault.
      
      For kolla-genpwd:
      
          AttributeError: 'NoneType' object has no attribute 'items'
      
      For kolla-mergepwd:
      
          AttributeError: 'NoneType' object has no attribute 'update'
      
      This change adds a more friendly message.
      
      Change-Id: I27f0835b904e05006ae401adf383090322e1b891
      Closes-Bug: #1880220
      620b808c
  24. May 19, 2020
    • Radosław Piliszek's avatar
      Fix kolla_address in IPv6 fully-routed topo case · 0674236e
      Radosław Piliszek authored
      This includes some lightweight refactoring to avoid code
      duplication.
      
      This patch is made to be backportable to Train.
      We now include Ansible in testing since Ussuri so the comments
      about the bool filter are wrong.
      
      Change-Id: Ia2e0f7f24988763bacfeafefb7977021f5949f4e
      Closes-bug: #1848941
      0674236e
  25. May 17, 2020
    • gugug's avatar
      Enable W503 for flake8 check · 22f7aecb
      gugug authored
      W503 and W504 are incompatible and we need to choose one of them.
      Existing codes follows W503, so we disable W504.
      
      Change-Id: Ic745e956dd332eb0fa49b93c1e6acb12f8a7f26c
      22f7aecb
  26. Apr 14, 2020
    • Mark Goddard's avatar
      Fix service_mapped_to_host filter for common services · 8cc58e36
      Mark Goddard authored
      In Ibecac60d1417269bbe25a280996ca9de6e6d018f, the services in the common
      role were marked as being mapped to the 'all' group, since the
      'service_mapped_to_host' filter expects every service definition to have
      either a 'group' or 'host_in_groups' field. While this allows the filter
      to pass the common services without error, it will not actually show
      them as being mapped to any hosts. This is because the filter uses the
      'group_names' variable, which contains all of the groups that a host
      belongs to, except the default 'all' group.
      
      This change fixes the issue by returning True from
      service_mapped_to_host when the service's group is 'all'.
      
      Change-Id: I39c8416f5d30a535c1743f9c43434b7d2a382196
      Related-Bug: #1868596
      8cc58e36
  27. Apr 04, 2020
    • Andreas Jaeger's avatar
      Update hacking for Python3 · 45448976
      Andreas Jaeger authored
      The repo is Python 3 now, so update hacking to version 3.0 which
      supports Python 3.
      
      Fix problems found by updated hacking version.
      
      Remove hacking and friends from lower-constraints, they are not needed
      during installation.
      
      Change-Id: I7ef5ac8a89e94f5da97780198619b6facc86ecfe
      45448976
  28. Apr 02, 2020
    • Radosław Piliszek's avatar
      Use unittest.mock instead of PyPI mock · 5648ad6e
      Radosław Piliszek authored
      Now that py2 is gone, oslotest dropped dependency on mock and will
      soon affect Ussuri CI [1], let's use unittest.mock built in py3.
      
      This also fixes py38 jobs and proactively prevents py36 and py37
      failing due to [1]. This is because we never included mock in
      test-requirements (but in lower-constraints where it does not
      really belong at all) and instead relied on oslotest to bring
      it in.
      
      [1] https://review.opendev.org/716322
      
      Change-Id: I30e82e2d87418272a71c7ee089a8acdaf8872158
      5648ad6e
  29. Mar 20, 2020
    • Mark Goddard's avatar
      Fix service_mapped_to_host filter · 35966c91
      Mark Goddard authored
      The service_mapped_to_host filter is used to check if a service is
      mapped to a host, based on the group for the service or its
      host_in_groups attribute if one exists. We check if the service's group
      is in the 'groups' list. However, to get the list of groups to which a
      host belongs, we should use the 'group_names' list.
      
      This filter is currently only used in neutron IPv6 module loading, so
      the effects are minimal.
      
      Change-Id: I37409ca8d273b0426df0a648db222dc5432e738a
      Closes-Bug: #1868285
      35966c91
  30. Feb 11, 2020
  31. Feb 08, 2020
  32. Oct 18, 2019
    • Doug Szumski's avatar
      Add unit tests for Nova Cells filters · 8e068099
      Doug Szumski authored
      This moves the Nova Cells filters alongside the service filters
      for ease of testing.
      
      Partially Implements: blueprint support-nova-cells
      Change-Id: I32d35c065812c6b46c64bacdf283a0bdad0f8a0f
      8e068099
  33. Oct 16, 2019
    • Radosław Piliszek's avatar
      Implement IPv6 support in the control plane · bc053c09
      Radosław Piliszek authored
      Introduce kolla_address filter.
      Introduce put_address_in_context filter.
      
      Add AF config to vars.
      
      Address contexts:
      - raw (default): <ADDR>
      - memcache: inet6:[<ADDR>]
      - url: [<ADDR>]
      
      Other changes:
      
      globals.yml - mention just IP in comment
      
      prechecks/port_checks (api_intf) - kolla_address handles validation
      
      3x interface conditional (swift configs: replication/storage)
      
      2x interface variable definition with hostname
      (haproxy listens; api intf)
      
      1x interface variable definition with hostname with bifrost exclusion
      (baremetal pre-install /etc/hosts; api intf)
      
      neutron's ml2 'overlay_ip_version' set to 6 for IPv6 on tunnel network
      
      basic multinode source CI job for IPv6
      
      prechecks for rabbitmq and qdrouterd use proper NSS database now
      
      MariaDB Galera Cluster WSREP SST mariabackup workaround
      (socat and IPv6)
      
      Ceph naming workaround in CI
      TODO: probably needs documenting
      
      RabbitMQ IPv6-only proto_dist
      
      Ceph ms switch to IPv6 mode
      
      Remove neutron-server ml2_type_vxlan/vxlan_group setting
      as it is not used (let's avoid any confusion)
      and could break setups without proper multicast routing
      if it started working (also IPv4-only)
      
      haproxy upgrade checks for slaves based on ipv6 addresses
      
      TODO:
      
      ovs-dpdk grabs ipv4 network address (w/ prefix len / submask)
      not supported, invalid by default because neutron_external has no address
      No idea whether ovs-dpdk works at all atm.
      
      ml2 for xenapi
      Xen is not supported too well.
      This would require working with XenAPI facts.
      
      rp_filter setting
      This would require meddling with ip6tables (there is no sysctl param).
      By default nothing is dropped.
      Unlikely we really need it.
      
      ironic dnsmasq is configured IPv4-only
      dnsmasq needs DHCPv6 options and testing in vivo.
      
      KNOWN ISSUES (beyond us):
      
      One cannot use IPv6 address to reference the image for docker like we
      currently do, see: https://github.com/moby/moby/issues/39033
      (docker_registry; docker API 400 - invalid reference format)
      workaround: use hostname/FQDN
      
      RabbitMQ may fail to bind to IPv6 if hostname resolves also to IPv4.
      This is due to old RabbitMQ versions available in images.
      IPv4 is preferred by default and may fail in the IPv6-only scenario.
      This should be no problem in real life as IPv6-only is indeed IPv6-only.
      Also, when new RabbitMQ (3.7.16/3.8+) makes it into images, this will
      no longer be relevant as we supply all the necessary config.
      See: https://github.com/rabbitmq/rabbitmq-server/pull/1982
      
      For reliable runs, at least Ansible 2.8 is required (2.8.5 confirmed
      to work well). Older Ansible versions are known to miss IPv6 addresses
      in interface facts. This may affect redeploys, reconfigures and
      upgrades which run after VIP address is assigned.
      See: https://github.com/ansible/ansible/issues/63227
      
      Bifrost Train does not support IPv6 deployments.
      See: https://storyboard.openstack.org/#!/story/2006689
      
      
      
      Change-Id: Ia34e6916ea4f99e9522cd2ddde03a0a4776f7e2c
      Implements: blueprint ipv6-control-plane
      Signed-off-by: default avatarRadosław Piliszek <radoslaw.piliszek@gmail.com>
      bc053c09
  34. Oct 15, 2019
    • Ionut Balutoiu's avatar
      Fix Python3 compatibility for kolla-genpwd · e3fccdfa
      Ionut Balutoiu authored
      The method `Fernet.generate_key()` generates a binary string in Python 3:
      ```
      >>> Fernet.generate_key()
      b'qSMZlOK23pZUw_Uyy-ZRPUfPskMXKGCGmhG6AHCFiV8='
      ```
      
      Unless properly written as a string to the Kolla `passwords.yml` file,
      the Fernet key will end up in the final Barbican config like this:
      ```
      [simple_crypto_plugin]
      kek = b'qSMZlOK23pZUw_Uyy-ZRPUfPskMXKGCGmhG6AHCFiV8='
      ```
      
      Due to the fact that the key is incorrectly written to the barbican
      config file (it should be written as a string), every barbican secret
      store fails with:
      
      ```
      barbican.api.controllers   File "/var/lib/kolla/venv/lib/python3.6/site-packages/barbican/plugin/store_crypto.py", line 83, in store_secret
      barbican.api.controllers     encrypting_plugin, context.project_model)
      barbican.api.controllers   File "/var/lib/kolla/venv/lib/python3.6/site-packages/barbican/plugin/store_crypto.py", line 290, in _find_or_create_kek_objects
      barbican.api.controllers     kek_meta_dto = plugin_inst.bind_kek_metadata(kek_meta_dto)
      barbican.api.controllers   File "/var/lib/kolla/venv/lib/python3.6/site-packages/barbican/plugin/crypto/simple_crypto.py", line 104, in bind_kek_metadata
      barbican.api.controllers     encryptor = fernet.Fernet(self.master_kek)
      barbican.api.controllers   File "/var/lib/kolla/venv/lib/python3.6/site-packages/cryptography/fernet.py", line 38, in __init__
      barbican.api.controllers     "Fernet key must be 32 url-safe base64-encoded bytes."
      barbican.api.controllers ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
      ```
      
      This commit fixes the issue described above by properly writing
      the Fernet key as a string to the Kolla `passwords.yml` file.
      
      Closes-Bug: #1848191
      Change-Id: I27fc0159c889bc2e1576fdd69b7d02a320b620f8
      e3fccdfa
  35. Sep 16, 2019
    • Mark Goddard's avatar
      Add custom filters for checking services · af2e7fd7
      Mark Goddard authored
      These filters can be used to capture a lot of the logic that we
      currently have in 'when' statements, about which services are enabled
      for a particular host.
      
      In order to use these filters, it is necessary to install the
      kolla_ansible python module, and not just the dependencies listed in
      requirements.txt. The CI test and quickstart install from source
      documentation has been updated accordingly.
      
      Ansible is not currently in OpenStack global requirements, so for unit
      tests we avoid a direct dependency on Ansible and provide fakes where
      necessary.
      
      Change-Id: Ib91cac3c28e2b5a834c9746b1d2236a309529556
      af2e7fd7
  36. Mar 10, 2019
  37. Jul 26, 2018
    • Eduardo Gonzalez's avatar
      Use fernet for barbican crypto key · b80a63f3
      Eduardo Gonzalez authored
      Sha password is not always valid for barbican cripto key.
      Use a fernet key so it always gets valid.
      
      Not need release note for upgrade, users with a working
      barbican not regenerate passwords, only new passwords will
      get new type.
      
      Change-Id: Ic8c4ca63219295d697062cff9cbf30fadbe49bf3
      b80a63f3
  38. May 22, 2018
    • Borne Mace's avatar
      Updated genpwd to work with python35 · f1768ef7
      Borne Mace authored
      Due to the changes in hmac.new and how binary strings
      are dumped in yaml.safe_dump some changes were needed to
      make sure that we dumped only strings, not binary strings.
      
      Change-Id: Ic2fbcf2347023c1e9e666203dfe40dbeaf24ce5f
      f1768ef7
Loading