owned this note changed 4 years ago
Published Linked with GitHub

DRAFT HLD for Tripleo repos and repo-setup role

tags: Design

Tripleo-repos hackmd: https://hackmd.io/v2jCX9RwSeuP8EEFDHRa8g

Option 1 for repo-setup role

tree:
repo-setup/
  tasks/pre.yaml
  tasks/main.yaml
  tasks/post.yaml

main.yaml:

- tripleo_repos:
    repo: ...
    config: ...

- tripleo_repos:
    repo: ...
    config: ...

Option 2 for repo-setup role

tree:
repo-setup/
  tasks/main.yaml
  tasks/victoria.yaml
  tasks/wallaby.yaml

main.yaml:

- some_pre_tasks:
    ...

- include: "{{ release }}.yaml

 - some_post_tasks:
    ... 

Functionality

Defaults

release: master
docker_registry_namespace: "tripleo{{ release }}"
distro: centos
distro_number_version: 8
distro_version: 8-stream
promote_source: current-tripleo
rdo_url: "{{ proxy_rdo | default(https://trunk.rdoproject.org) }}"
centos_url: "{{ proxy_centos | default(http://mirror.centos.org/centos) }}"
dlrn_baseurl: "{{ rdo_url }}/{{ distro_number_version }}-{{ release }}"
centos_baseurl: "{{ centos_url }}/{{ distro_version }}"
gating_repo_name: gating-repo

create repo from template

CLI:

tripleo-repos add-repo --name=... --filename=... --baseurl=... --includepgks=... --enabled=1 --gppcheck=1 --priority=1 ...

YAML config file:

add_repos:
  - name: ...
    filename: ...
    baseurl: ...
    includepgks: ...
    enabled: ...

Ansible module:

- tripleo_repos:
    add_repo:
       - name: ...
         filename: ...
         baseurl: ...
         includepgks: ...
         enabled: ...
       - name: ...
         filename: ...
         baseurl: ...
         includepgks: ...
         enabled: ...

Use environment variables, for example for proxies

CLI:

tripleo-repos --env-file /etc/ci/mirrors.sh action ....

YAML config file:

env_file:
  - /etc/ci/mirrors.sh
  - /tmp/env_vars

Ansible module:

- tripleo_repos:
    env: 
      - /etc/ci/mirrors.sh
      - /tmp/env_vars
    add_repo:
      - baseurl: ...
        includepgks: ...
        enabled: ...
      - baseurl: ...
        includepgks: ...
        enabled: ...

Proxy set

  • Set CI proxies for new repos
  • Set CI proxies for current files, like CentOS base repos etc
  • Set custom proxies for CentOS repos
  • Downstream mirrors should be exactly as upstream ones
  • CentOS proxies are set as mirrorlist by default, not as baseurl.
    • either we change files
    • or we create new ones (as it's done now)
      • then need to have the whole list of repos for CentOS

CLI:

tripleo-repos --ci-proxy-from /etc/ci/mirrors.sh ...

Set DLRN repo, add priority, add includepgks, calculate DLRN hash, apply available proxies.

what repo-setup does:

  1. downloads repo file from URL
  2. change priority of that repo is configured
  3. change name if configured
  4. change includepkgs and other params if configured

possible ways to install repo:

  1. Create it from scratch
  2. Download a file and tweak it
  3. Install with yum/dnf (like epel-release package, etc), incl. custom commands

CLI:

tripleo-repos --dlrn-repo current-tripleo --dlrn-resolve-hash --ci-proxy-from /etc/ci/mirrors.sh --repo-priority 1

YAML config:

add_repos:
  - name: delorean.repo
    dlrn_repo: current-tripleo
    dlrn_resolve_hash: true
    ci_proxy_from: /etc/ci/mirrors.sh
    repo_priority: 1
  - name: delorean-current.repo
    dlrn_repo: delorean-current
    dlrn_resolve_hash: true
    ci_proxy_from: /etc/ci/mirrors.sh
    repo_priority: 10
    repo_name: delorean-current

Asible module:

- tripleo_repos:
    add_repo:
      - dlrn_repo: current-tripleo
        dlrn_resolve_hash: true
        ci_proxy_from: /etc/ci/mirrors.sh
      - dlrn_repo: current
        dlrn_resolve_hash: true
        ci_proxy_from: /etc/ci/mirrors.sh
        repo_priority: 10
        repo_name: delorean-current

Possible config:

master.yaml:

add_repos:
  - name: delorean.repo
    dlrn_repo: current-tripleo
    dlrn_resolve_hash: true
    #ci_proxy_from: /etc/ci/mirrors.sh
    repo_priority: 1
  - name: delorean-current.repo
    dlrn_repo: delorean-current
    dlrn_resolve_hash: true
    #ci_proxy_from: /etc/ci/mirrors.sh
    repo_priority: 10
    repo_name: delorean-current
    includepgks:
      - ...
      - ...
# other repos .....

centos8:
  - highavailability
  - powertools
ceph:
  - octopus
modules:
  - container-tools: rhel8
  - virt: rhel
ci_proxy_from: /etc/ci/mirrors.sh
# centos_proxy: 
# rdo_proxy: 

Personas

Select a repo