Skip to content
Snippets Groups Projects
  1. Aug 25, 2021
    • Mark Goddard's avatar
      Add kolla-ansible gather-facts command · d9a37589
      Mark Goddard authored
      In some situations it may be helpful to populate the fact cache on
      demand. The 'kolla-ansible gather-facts' command may be used to do this.
      
      One specific case where this may be helpful is when running kolla-ansible
      with a --limit argument, since in that case hosts that match the limit
      will gather facts for hosts that fall outside the limit. In the extreme
      case of a limit that matches only one host, it will serially gather
      facts for all other hosts. To avoid this issue, run 'kolla-ansible
      gather-facts' without a limit to populate the fact cache in parallel
      before running the required command with a limit.
      
      Change-Id: I79db9bca23aa1bd45bafa7e7500a90de5a684593
      d9a37589
  2. Jul 02, 2021
    • Rafael Weingärtner's avatar
      Make setup module arguments configurable · 15f2fdcd
      Rafael Weingärtner authored
      
      Ansible facts can have a large impact on the performance of the Ansible
      control host. This patch introduces some control over which facts are
      gathered (kolla_ansible_setup_gather_subset) and which facts are stored
      (kolla_ansible_setup_filter). By default we do not change the default
      values of these arguments to the setup module. The flexibility of these
      arguments is limited, but they do provide enough for a large performance
      improvement in a typical moderate to large OpenStack cloud.
      
      In particular, the large complex dict fact for each interface has a
      large effect, and on an OpenStack controller or hypervisor there may be
      many virtual interfaces. We can use the kolla_ansible_setup_filter
      variable to help:
      
          kolla_ansible_setup_filter: 'ansible_[!qt]*'
      
      This causes Ansible to collect but not store facts matching that
      pattern, which includes the virtual interface facts. Currently we are
      not referencing other facts matching the pattern within Kolla Ansible.
      Note that including the 'ansible_' prefix causes meta facts module_setup
      and gather_subset to be filtered, but this seems to be the only way to
      get a good match on the interface facts. To work around this, we use
      ansible_facts rather than module_setup to detect whether facts exist in
      the cache.
      
      The exact improvement will vary, but has been reported to be as large as
      18x on systems with many virtual interfaces.
      
      For reference, here are some other tunings tried:
      
      * Increased the number of forks (great speedup depending of the size of
        the deployment)
      * Use `strategy = mitogen_linear` (cut processing time in half)
      * Ansible caching (little speed up)
      * SSH tunning (little speed up)
      
      Co-Authored-By: default avatarMark Goddard <mark@stackhpc.com>
      Closes-Bug: #1921538
      Change-Id: Iae8ca4aae945892f1dc65e1b10381d2e26e88805
      15f2fdcd
  3. 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
  4. Feb 08, 2021
Loading