Files
openstack-ansible-plugins/playbooks/utility_host.yml
Dmitriy Rabotyagov d3227cbce9 Adopt playbooks for ANSIBLE_GATHER_SUBSET removal
With Ansible 2.18 ANSIBLE_GATHER_SUBSET env var and corresponding
`gather_subset` config parameter was removed in favor of
`module_defaults` parameter.

We adopt our playbooks to respect previous minimal defaults for
facts gathering, along with intorducing new
ansible variable to control it.

Without these changes all facts are being gathered by default.

Change-Id: I3377b5f623fc8ca195d91ef9f9a3af43e010a99c
Signed-off-by: Dmitriy Rabotyagov <dmitriy.rabotyagov@cleura.com>
2025-10-06 18:37:42 +02:00

178 lines
6.4 KiB
YAML

---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Gather utility facts
hosts: utility_all
gather_facts: "{{ osa_gather_facts | default(true) }}"
module_defaults:
ansible.builtin.setup:
gather_subset: "{{ osa_gather_subset | default(lookup('ansible.builtin.env', 'ANSIBLE_GATHER_SUBSET', default='!all,min')) }}"
tags:
- always
- name: Setup the utility location(s)
hosts: utility_all
user: root
gather_facts: false
serial: "{{ utility_serial | default(['1', '100%']) }}"
environment: "{{ deployment_environment_variables | default({}) }}"
vars:
utility_upper_constraints_url: "{{ requirements_git_url | default('https://releases.openstack.org/constraints/upper/' ~
requirements_git_install_branch | default('master')) }}"
tags:
- utility
handlers:
- name: Ensure bash completions directory is present
ansible.builtin.file:
path: "/etc/bash_completion.d"
state: "directory"
mode: "0755"
listen:
- "venv changed"
- name: Create openstack client bash_completion script # noqa: no-changed-when
ansible.builtin.shell: >-
openstack complete > /etc/bash_completion.d/openstack_client
args:
executable: /bin/bash
listen:
- "venv changed"
pre_tasks:
- name: Setup installation variables
ansible.builtin.include_role:
name: openstack.osa.install_defaults
defaults_from: "{{ install_method }}"
public: true
- name: Including container-setup role
ansible.builtin.include_role:
name: "openstack.osa.{{ container_tech | default('lxc') }}_container_setup"
when: not is_metal
- name: Including unbound-clients role
ansible.builtin.include_role:
name: openstack.osa.unbound_clients
when:
- hostvars['localhost']['resolvconf_enabled'] | bool
- name: Create log directory (not is_metal)
ansible.builtin.file:
dest: "/var/log/utility"
state: "directory"
force: "yes"
mode: "0755"
when: not is_metal | bool
roles:
- role: "galera_server"
vars:
galera_install_client: true
galera_install_server: false
- role: "openstack_openrc"
tags:
- openrc
post_tasks:
- name: Add OpenStack client to distro packages
ansible.builtin.set_fact:
utility_distro_packages: "{{ (utility_distro_packages | default([])) + utility_distro_openstack_clients_packages }}"
when: install_method == "distro"
- name: Install distro packages
ansible.builtin.package:
name: "{{ utility_distro_packages | default([]) }}"
state: "{{ utility_package_state }}"
update_cache: "{{ (ansible_facts['pkg_mgr'] == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_facts['pkg_mgr'] == 'apt') | ternary(cache_timeout, omit) }}"
register: install_packages
until: install_packages is success
retries: 5
delay: 2
- name: Distribute private ssh key
ansible.builtin.copy:
content: "{{ utility_ssh_private_key }}"
dest: /root/.ssh/id_rsa
mode: "0600"
owner: root
group: root
when: utility_ssh_private_key is defined
- name: Install openstack clients (source-based install)
when:
- install_method == "source"
block:
- name: Get list of repo packages
ansible.builtin.uri:
url: "{{ utility_upper_constraints_url }}"
return_content: true
register: _abs_reqs
check_mode: false
ignore_errors: "{{ ansible_check_mode }}"
retries: 5
delay: 3
until: _abs_reqs is succeeded
tags:
- always
- name: Derive the list of openstack clients
ansible.builtin.set_fact:
_openstack_client_list: >-
{%- set package_list = [] %}
{%- for l in _abs_reqs.content.split('\n') %}
{%- if (l is match('^python-.*client==.*$')) or
(l is match('^(aodh|gnocchi)client==.*$')) or
(l is match('^osc-placement==.*$'))
%}
{%- set _ = package_list.append(l | regex_replace('==.*$', '')) %}
{%- endif %}
{%- endfor %}
{{- package_list }}
run_once: true
tags:
- always
- name: Install the python venv
ansible.builtin.include_role:
name: "python_venv_build"
vars:
venv_python_executable: "{{ utility_venv_python_executable | default(openstack_venv_python_executable) }}"
venv_install_destination_path: "{{ utility_venv_bin | dirname }}"
venv_build_distro_package_list: "{{ utility_devel_distro_packages }}"
venv_pip_install_args: "{{ pip_install_options | default('') }}"
venv_build_constraints:
- "--constraint {{ utility_upper_constraints_url }}"
venv_pip_packages: "{{ _openstack_client_list | union(utility_pip_packages) }}"
- name: Create list of binaries to symlink
ansible.builtin.set_fact:
_openstack_client_to_symlink: |-
{%- set binary_list = [] %}
{%- for l in _openstack_client_list %}
{%- set _ = binary_list.append(l | regex_replace('^(?:python-)?(\w*)(?:client)$', '\\1')) %}
{%- endfor %}
{{- binary_list }}
run_once: true
- name: Create symlinks for openstack clients
ansible.builtin.file:
src: "{{ utility_venv_bin }}/{{ item }}"
path: "/usr/local/bin/{{ item }}"
state: link
force: true
follow: false
with_items:
- "{{ _openstack_client_to_symlink }}"
notify: "Create openstack client bash_completion script"