Merge "Add 'generic' repos setup using yum_config module"

This commit is contained in:
Zuul 2021-10-11 10:40:11 +00:00 committed by Gerrit Code Review
commit 673cebca6e
7 changed files with 214 additions and 2 deletions

View File

@ -1,8 +1,17 @@
---
repo_setup_dir: "{{ working_dir }}"
repo_setup_script_source: repo_setup.sh.j2
repo_setup_log: repo_setup.log
repo_setup_script: repo_setup.sh
repo_setup_log: repo_setup.log
# New repo_setup based on triple-repos
repo_cmd_before_setup_template: repo_cmd_before_setup.sh.j2
repo_cmd_after_setup_template: repo_cmd_after_setup.sh.j2
repo_cmd_before_setup_script: repo_cmd_before_setup.sh
repo_cmd_after_setup_script: repo_cmd_after_setup.sh
repo_setup_new_template: repo_setup_new.sh.j2
repo_setup_new_script: repo_setup_new.sh
# File to temporary store environment variables which will be loaded in repo_setup_newest.sh and repo_cmd_after_setup.sh
repo_setup_env_filepath: "/tmp/repo_setup_env"
repo_run_live: true
# Releases shortcuts
stable:

View File

@ -4,3 +4,23 @@
src: "{{ repo_setup_script_source }}"
dest: "{{ repo_setup_dir }}/{{ repo_setup_script }}"
mode: 0755
when: not use_yum_config_module|default(false)|bool
# When using tripleo-repos yum-config, split into 3 phases
- block:
- name: Create script - commands before repo setup
template:
src: "{{ repo_cmd_before_setup_template }}"
dest: "{{ repo_setup_dir }}/{{ repo_cmd_before_setup_script }}"
mode: 0755
- name: Create repo setup script (new)
template:
src: "{{ repo_setup_new_template }}"
dest: "{{ repo_setup_dir }}/{{ repo_setup_new_script }}"
mode: 0755
- name: Create script - commands after repo setup
template:
src: "{{ repo_cmd_after_setup_template }}"
dest: "{{ repo_setup_dir }}/{{ repo_cmd_after_setup_script }}"
mode: 0755
when: use_yum_config_module|default(false)|bool

View File

@ -13,7 +13,10 @@
- include_tasks: create-repo-script.yml
- include_tasks: setup_repos.yml
when: repo_run_live|bool
when: repo_run_live|bool and not use_yum_config_module|default(false)|bool
- include_tasks: setup_repos_new.yml
when: repo_run_live|bool and use_yum_config_module|default(false)|bool
- include_tasks: inject_repos_into_image.yml
when: repo_inject_image_path is defined

View File

@ -0,0 +1,51 @@
---
- name: Run commands before repo setup
shell: >
set -o pipefail &&
{{ repo_setup_dir }}/{{ repo_cmd_before_setup_script }} 2>&1 {{ timestamper_cmd }}
| tee -a {{ repo_setup_dir }}/{{ repo_setup_log }}
become: true
register: result
no_log: result.rc == 0
changed_when: true
- name: Setup repos on live host
shell: >
set -o pipefail &&
{{ repo_setup_dir }}/{{ repo_setup_new_script }} 2>&1 {{ timestamper_cmd }}
| tee -a {{ repo_setup_dir }}/{{ repo_setup_log }}
become: true
register: result
no_log: result.rc == 0
changed_when: true
- name: Configure 'generic' repos using yum-config module
become: true
tripleo.repos.yum_config:
type: repo
name: "{{ item.reponame }}"
enabled: "{{ item.enabled|default('true') }}"
environment_file: "{{ repo_setup_env_filepath }}"
file_path: "/etc/yum.repos.d/{{ item.filename }}"
set_options:
baseurl: "{{ item.baseurl|default(omit) }}"
priority: "{{ item.priority|default(omit) }}"
gpgcheck: "{{ item.gpgcheck|default('0') }}"
mirrorlist: "{{ item.mirrorlist|default(omit) }}"
module_hotfixes: "{{ item.module_hotfixes|default(omit) }}"
includepkgs: "{{ item.includepkgs|default(omit) }}"
exclude: "{{ item.exclude|default(omit) }}"
sslverify: "{{ item.sslverify|default(omit) }}"
with_items: "{{ repos + add_repos + job.add_repos|default([]) }}"
when:
- item.type == 'generic'
- name: Run commands after repo setup
shell: >
set -o pipefail &&
{{ repo_setup_dir }}/{{ repo_cmd_after_setup_script }} 2>&1 {{ timestamper_cmd }}
| tee -a {{ repo_setup_dir }}/{{ repo_setup_log }}
become: true
register: result
no_log: result.rc == 0
changed_when: true

View File

@ -0,0 +1,19 @@
#!/bin/bash
set -eux
### --start_docs
## * Source user rc file to get previous environment variables
## ::
if [ -f {{ repo_setup_env_filepath }} ]; then
source {{ repo_setup_env_filepath }}
fi
## * Execute commands after repositories setup
## ::
{{ repo_cmd_after|default('') }}
{{ dep_repo_cmd_after|default('') }}
### --stop_docs

View File

@ -0,0 +1,21 @@
#!/bin/bash
set -eux
### --start_docs
## Setup repositories for the job
## ==============================
## Prepare Your Environment
## ------------------------
## * Execute commands before repositories setup
## ::
{{ repo_cmd_before|default('') }}
{{ dep_repo_cmd_before|default('') }}
# Make temp dir for files
sudo rm -rf /tmp/repo_role_tmp && mkdir -p /tmp/repo_role_tmp
### --stop_docs

View File

@ -0,0 +1,89 @@
#!/bin/bash
set -eux
### --start_docs
## * Loading environment file to get previous defined variables
## ::
if [ -f {{ repo_setup_env_filepath }} ]; then
source {{ repo_setup_env_filepath }}
fi
## * Prepare repositories
## ::
# Repos can be defined in repos, add_repos (used mostly in
# featuresets and in the job itself
# creating the following repos
{% for repo in repos + add_repos + job.add_repos|default([]) %}
{% if repo.reponame is defined %}
# repo = {{ repo.reponame }}
{% else %}
# repo.reponame is not defined
{% endif %}
{% endfor %}
{% for repo in repos + add_repos + job.add_repos|default([]) %}
{% if repo.releases is not defined or release in repo.releases %}
{% if repo.type == 'file' %}
## * Download and use file from {{ repo.down_url }}
## ::
curl -Lvo /tmp/repo_role_tmp/{{ repo.filename }} {{ repo.down_url }}
{% if repo.priority is defined and repo.priority %}
## * Change its priority to {{ repo.priority }}
## ::
if ! grep -q "priority" /tmp/repo_role_tmp/{{ repo.filename }}; then
sed -i "s/\(baseurl=.*\)/\1\npriority={{ repo.priority }}/g" /tmp/repo_role_tmp/{{ repo.filename }}
else
sed -i "s/priority=.*/priority={{ repo.priority }}/g" /tmp/repo_role_tmp/{{ repo.filename }}
fi
{% endif %}
{% if repo.reponame is defined %}
sed -i "s/\[.*\]/[{{ repo.reponame }}]/" /tmp/repo_role_tmp/{{ repo.filename }}
{% endif %}
{% if repo.includepkgs is defined %}
echo -e '\nincludepkgs={{ repo.includepkgs|join(",") }}' >> /tmp/repo_role_tmp/{{ repo.filename }}
{% endif %}
sudo cp -f /tmp/repo_role_tmp/{{ repo.filename }} /etc/yum.repos.d/
{% endif %}
{% if repo.type == 'package' %}
## * Install repo from package {{ repo.pkg_name|default(repo.pkg_url) }}
## ::
{% if repo.custom_cmd is defined %}
{{ repo.custom_cmd }} {{ repo.pkg_name|default(repo.pkg_url) }}
{% else %}
sudo {{ ansible_pkg_mgr }} install -y {{ repo.pkg_name|default(repo.pkg_url) }}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% if use_rhsm|bool %}
## * Install repo from rhsm subscription manager
## ::
subscription-manager register --username {{ rhsm_username | quote }} --password {{ rhsm_password | quote }}
subscription-manager attach --pool={{ pool_id }}
subscription-manager repos --disable=*
{% for repo in rhsm_repos %}
subscription-manager repos --enable={{ repo.name }}
{% endfor %}
{% endif %}
### --stop_docs