Preparation for osh-infra merger
Change-Id: I34d3f589432e4821b694866995d90155d118b037
This commit is contained in:
parent
f89395dc9c
commit
e5099b6d38
@ -1,39 +0,0 @@
|
||||
# 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.
|
||||
|
||||
- hosts: all
|
||||
vars_files:
|
||||
- vars.yaml
|
||||
vars:
|
||||
work_dir: "{{ zuul.project.src_dir }} | default('') }}"
|
||||
logs_dir: "/tmp/logs"
|
||||
roles:
|
||||
- gather-host-logs
|
||||
tags:
|
||||
- gather-host-logs
|
||||
|
||||
- hosts: primary
|
||||
vars_files:
|
||||
- vars.yaml
|
||||
vars:
|
||||
work_dir: "{{ zuul.project.src_dir }} | default('') }}"
|
||||
logs_dir: "/tmp/logs"
|
||||
roles:
|
||||
- helm-release-status
|
||||
- describe-kubernetes-objects
|
||||
- gather-pod-logs
|
||||
- gather-selenium-data
|
||||
tags:
|
||||
- helm-release-status
|
||||
- describe-kubernetes-objects
|
||||
- gather-pod-logs
|
||||
- gather-selenium-data
|
@ -1,50 +0,0 @@
|
||||
# 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.
|
||||
|
||||
- hosts: primary
|
||||
roles:
|
||||
- ensure-python
|
||||
- ensure-pip
|
||||
- ensure-tox
|
||||
- start-zuul-console
|
||||
- clear-firewall
|
||||
- ensure-docker
|
||||
tasks:
|
||||
- name: Install deps for tests
|
||||
shell: |
|
||||
set -x
|
||||
./tools/deployment/000-install-packages.sh
|
||||
./tools/deployment/002-build-charts.sh
|
||||
sudo fdisk --list
|
||||
df -h
|
||||
sudo mkdir -p /opt/ext_vol
|
||||
BIG_VOLUME=$(sudo fdisk -l 2>&1 | grep -E 80G | grep Linux | awk '{print $1}')
|
||||
if ! mount | grep "${BIG_VOLUME}"
|
||||
then
|
||||
sudo mkfs.ext4 "${BIG_VOLUME}"
|
||||
sudo mount "${BIG_VOLUME}" /opt/ext_vol
|
||||
df -h
|
||||
fi
|
||||
./tools/deployment/003-deploy-k8s.sh
|
||||
./tools/deployment/004-make-images.sh
|
||||
args:
|
||||
chdir: "{{ zuul.project.src_dir }}/{{ args.chdir }}"
|
||||
executable: /bin/bash
|
||||
environment:
|
||||
DISTRO: "{{ distro_suffix | default('') }}"
|
||||
become: True
|
||||
- name: Run gate scripts
|
||||
include_role:
|
||||
name: osh-run-script
|
||||
vars:
|
||||
gate_script_path: "{{ item }}"
|
||||
with_items: "{{ gate_scripts }}"
|
@ -1,27 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
ceph_osd_data_device: "/dev/loop0"
|
||||
kubeadm:
|
||||
pod_network_cidr: "10.244.0.0/24"
|
||||
osh_params:
|
||||
container_distro_name: ubuntu
|
||||
container_distro_version: jammy
|
||||
# feature_gates:
|
||||
site: airskiff
|
||||
HELM_ARTIFACT_URL: https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz
|
||||
HTK_COMMIT: 43fd7143481b6ddda0dbd2f26bf6ec39a417b15b
|
||||
OSH_INFRA_COMMIT: 43fd7143481b6ddda0dbd2f26bf6ec39a417b15b
|
||||
OSH_COMMIT: 540df5cb0dbdaed63c202e2d6f2b7891062f8203
|
||||
COREDNS_VERSION: v1.11.1
|
||||
...
|
@ -1,64 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
- block:
|
||||
- name: "Run script set {{ workload }}"
|
||||
shell: |
|
||||
set -xe;
|
||||
{{ gate_script_path }}
|
||||
loop: "{{ workload }}"
|
||||
loop_control:
|
||||
loop_var: gate_script_path
|
||||
pause: 5
|
||||
args:
|
||||
chdir: "{{ zuul.project.src_dir }}/{{ gate_scripts_relative_path }}"
|
||||
environment:
|
||||
CEPH_OSD_DATA_DEVICE: "{{ ceph_osd_data_device }}"
|
||||
POD_NETWORK_CIDR: "{{ kubeadm.pod_network_cidr }}"
|
||||
zuul_site_mirror_fqdn: "{{ zuul_site_mirror_fqdn }}"
|
||||
OSH_EXTRA_HELM_ARGS: "{{ zuul_osh_extra_helm_args_relative_path | default('') }}"
|
||||
OSH_PATH: "{{ zuul_osh_relative_path | default('../openstack-helm/') }}"
|
||||
OSH_INFRA_PATH: "{{ zuul_osh_infra_relative_path | default('../openstack-helm-infra/') }}"
|
||||
OPENSTACK_RELEASE: "{{ osh_params.openstack_release | default('') }}"
|
||||
CONTAINER_DISTRO_NAME: "{{ osh_params.container_distro_name | default('') }}"
|
||||
CONTAINER_DISTRO_VERSION: "{{ osh_params.container_distro_version | default('') }}"
|
||||
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
||||
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
|
||||
PL_SITE: "{{ site | default('airskiff') }}"
|
||||
HELM_ARTIFACT_URL: "{{ HELM_ARTIFACT_URL | default('https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz') }}"
|
||||
HTK_COMMIT: "{{ HTK_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"
|
||||
COREDNS_VERSION: "{{ coredns_version | default('v1.11.1') }}"
|
||||
# NOTE(aostapenko) using bigger than async_status timeout due to async_status issue with
|
||||
# not recognizing timed out jobs: https://github.com/ansible/ansible/issues/25637
|
||||
async: 3600
|
||||
poll: 0
|
||||
register: async_results
|
||||
|
||||
- name: Wait for script set to finish
|
||||
async_status:
|
||||
jid: '{{ item.ansible_job_id }}'
|
||||
register: jobs
|
||||
until: jobs.finished
|
||||
delay: 5
|
||||
retries: 360
|
||||
loop: "{{ async_results.results }}"
|
||||
|
||||
always:
|
||||
- name: Print script set output
|
||||
shell: |
|
||||
# NOTE(aostapenko) safely retrieving items for the unlikely case if jobs timed out in async_status
|
||||
echo 'STDOUT:\n{{ item.get("stdout") | regex_replace("\'", "") }}\nSTDERR:\n{{ item.get("stderr") | regex_replace("\'", "") }}'
|
||||
loop: "{{ jobs.results }}"
|
||||
...
|
@ -1,27 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
ceph_osd_data_device: "/dev/loop0"
|
||||
kubeadm:
|
||||
pod_network_cidr: "10.244.0.0/24"
|
||||
osh_params:
|
||||
container_distro_name: ubuntu
|
||||
container_distro_version: jammy
|
||||
# feature_gates:
|
||||
site: airskiff
|
||||
HELM_ARTIFACT_URL: https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz
|
||||
HTK_COMMIT: 43fd7143481b6ddda0dbd2f26bf6ec39a417b15b
|
||||
OSH_INFRA_COMMIT: 43fd7143481b6ddda0dbd2f26bf6ec39a417b15b
|
||||
OSH_COMMIT: 540df5cb0dbdaed63c202e2d6f2b7891062f8203
|
||||
COREDNS_VERSION: v1.11.1
|
||||
...
|
@ -1,42 +0,0 @@
|
||||
# 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: "Run script {{ workload[0] }}"
|
||||
shell: |
|
||||
set -xe;
|
||||
{{ gate_script_path }}
|
||||
vars:
|
||||
gate_script_path: "{{ workload[0] }}"
|
||||
args:
|
||||
chdir: "{{ zuul.project.src_dir }}/{{ gate_scripts_relative_path }}"
|
||||
environment:
|
||||
DISTRO: "{{ distro_suffix | default('') }}"
|
||||
CEPH_OSD_DATA_DEVICE: "{{ ceph_osd_data_device }}"
|
||||
POD_NETWORK_CIDR: "{{ kubeadm.pod_network_cidr }}"
|
||||
zuul_site_mirror_fqdn: "{{ zuul_site_mirror_fqdn }}"
|
||||
OSH_EXTRA_HELM_ARGS: "{{ zuul_osh_extra_helm_args_relative_path | default('') }}"
|
||||
OSH_PATH: "{{ zuul_osh_relative_path | default('../openstack-helm/') }}"
|
||||
OSH_INFRA_PATH: "{{ zuul_osh_infra_relative_path | default('../openstack-helm-infra/') }}"
|
||||
OPENSTACK_RELEASE: "{{ osh_params.openstack_release | default('') }}"
|
||||
CONTAINER_DISTRO_NAME: "{{ osh_params.container_distro_name | default('') }}"
|
||||
CONTAINER_DISTRO_VERSION: "{{ osh_params.container_distro_version | default('') }}"
|
||||
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
||||
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
|
||||
PL_SITE: "{{ site | default('airskiff') }}"
|
||||
HELM_ARTIFACT_URL: "{{ HELM_ARTIFACT_URL | default('https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz') }}"
|
||||
HTK_COMMIT: "{{ HTK_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"
|
||||
COREDNS_VERSION: "{{ coredns_version | default('v1.11.1') }}"
|
||||
FEATURES: "images {{ osh_params.feature_gates | default('') | regex_replace(',', ' ') }} {{ osh_params.openstack_release | default('') }} {{ osh_params.container_distro_name | default('') }}_{{ osh_params.container_distro_version | default('') }} {{ osh_params.container_distro_name | default('') }}"
|
||||
...
|
@ -1,37 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
- block:
|
||||
- name: ensuring AppArmor is deployed on host
|
||||
when: ansible_distribution == 'Ubuntu'
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
packages:
|
||||
deb:
|
||||
- apparmor
|
||||
|
||||
- name: "Enable AppArmor"
|
||||
when: ansible_distribution == 'Ubuntu'
|
||||
become: true
|
||||
become_user: root
|
||||
shell: |-
|
||||
set -xe
|
||||
systemctl enable apparmor
|
||||
systemctl start apparmor
|
||||
systemctl status apparmor.service
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
...
|
@ -1,18 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
proxy:
|
||||
http: null
|
||||
https: null
|
||||
noproxy: null
|
||||
...
|
@ -1,70 +0,0 @@
|
||||
# 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: ensuring SELinux is disabled on centos & fedora
|
||||
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' or ansible_distribution == 'Fedora'
|
||||
become: true
|
||||
become_user: root
|
||||
command: setenforce 0
|
||||
ignore_errors: True
|
||||
|
||||
# NOTE(portdirect): See https://ask.openstack.org/en/question/110437/importerror-cannot-import-name-unrewindablebodyerror/
|
||||
- name: fix docker removal issue with ansible's docker_container on centos
|
||||
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
|
||||
block:
|
||||
- name: remove requests and urllib3 distro packages to fix docker removal issue with ansible's docker_container on centos
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
state: absent
|
||||
packages:
|
||||
rpm:
|
||||
- python-urllib3
|
||||
- python-requests
|
||||
- name: restore requests and urllib3 distro packages to fix docker removal issue with ansible's docker_container on centos
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
state: present
|
||||
packages:
|
||||
rpm:
|
||||
- python-urllib3
|
||||
- python-requests
|
||||
|
||||
- name: install additional packages
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
state: present
|
||||
packages:
|
||||
deb:
|
||||
- conntrack
|
||||
- bc
|
||||
- nmap
|
||||
- ethtool
|
||||
rpm:
|
||||
- conntrack-tools
|
||||
- bc
|
||||
- nmap
|
||||
|
||||
- name: Ensure docker python packages deployed
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: pip
|
||||
vars:
|
||||
packages:
|
||||
- docker
|
||||
...
|
@ -1,80 +0,0 @@
|
||||
# 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: setting default limit memlock
|
||||
shell: |
|
||||
set -xe;
|
||||
echo "DefaultLimitMEMLOCK=16777216" | sudo tee -a /etc/systemd/system.conf
|
||||
sudo systemctl daemon-reexec
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
- name: check if docker deploy is needed
|
||||
raw: which docker
|
||||
register: need_docker
|
||||
ignore_errors: True
|
||||
|
||||
- name: centos | moving systemd unit into place
|
||||
when: ( ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' ) and ( need_docker is failed )
|
||||
template:
|
||||
src: centos-docker.service.j2
|
||||
dest: /etc/systemd/system/docker.service
|
||||
mode: 416
|
||||
|
||||
- name: fedora | moving systemd unit into place
|
||||
when: ( ansible_distribution == 'Fedora' ) and ( need_docker is failed )
|
||||
template:
|
||||
src: fedora-docker.service.j2
|
||||
dest: /etc/systemd/system/docker.service
|
||||
mode: 416
|
||||
|
||||
- name: ubuntu | moving systemd unit into place
|
||||
when: ( ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' ) and ( need_docker is failed )
|
||||
template:
|
||||
src: ubuntu-docker.service.j2
|
||||
dest: /etc/systemd/system/docker.service
|
||||
mode: 416
|
||||
|
||||
# NOTE: (lamt) Setting up the proxy before installing docker
|
||||
- name: ensure docker.service.d directory exists
|
||||
when: proxy.http
|
||||
file:
|
||||
path: /etc/systemd/system/docker.service.d
|
||||
state: directory
|
||||
|
||||
- name: proxy | moving proxy systemd unit into place
|
||||
when: proxy.http
|
||||
template:
|
||||
src: http-proxy.conf.j2
|
||||
dest: /etc/systemd/system/docker.service.d/http-proxy.conf
|
||||
mode: 416
|
||||
|
||||
- name: deploy docker packages
|
||||
when: need_docker is failed
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
packages:
|
||||
deb:
|
||||
- docker.io
|
||||
rpm:
|
||||
- docker
|
||||
|
||||
- name: restarting docker
|
||||
systemd:
|
||||
state: restarted
|
||||
daemon_reload: yes
|
||||
name: docker
|
||||
|
||||
- include: deploy-ansible-docker-support.yaml
|
||||
...
|
@ -1,35 +0,0 @@
|
||||
[Unit]
|
||||
Description=Docker Application Container Engine
|
||||
Documentation=http://docs.docker.com
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
NotifyAccess=all
|
||||
Environment=GOTRACEBACK=crash
|
||||
Environment=DOCKER_HTTP_HOST_COMPAT=1
|
||||
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
|
||||
ExecStart=/usr/bin/dockerd-current \
|
||||
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
|
||||
--default-runtime=docker-runc \
|
||||
--exec-opt native.cgroupdriver=systemd \
|
||||
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
|
||||
--seccomp-profile=/etc/docker/seccomp.json \
|
||||
--graph=/var/lib/docker \
|
||||
--storage-driver=overlay2 \
|
||||
--log-driver=json-file \
|
||||
--iptables=false
|
||||
# NOTE(portdirect): fix mount propagation for CentOS, this is done post start,
|
||||
# as docker seems to reset this.
|
||||
ExecStartPost=/usr/bin/mount --make-rshared /
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
LimitNOFILE=1048576
|
||||
LimitNPROC=1048576
|
||||
LimitCORE=infinity
|
||||
TimeoutStartSec=0
|
||||
Restart=on-abnormal
|
||||
MountFlags=share
|
||||
KillMode=process
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -1,34 +0,0 @@
|
||||
[Unit]
|
||||
Description=Docker Application Container Engine
|
||||
Documentation=http://docs.docker.com
|
||||
After=network.target docker-containerd.service
|
||||
Requires=docker-containerd.service
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
Environment=GOTRACEBACK=crash
|
||||
ExecStart=/usr/bin/dockerd-current \
|
||||
--add-runtime oci=/usr/libexec/docker/docker-runc-current \
|
||||
--default-runtime=oci \
|
||||
--containerd /run/containerd.sock \
|
||||
--exec-opt native.cgroupdriver=systemd \
|
||||
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
|
||||
--init-path=/usr/libexec/docker/docker-init-current \
|
||||
--seccomp-profile=/etc/docker/seccomp.json \
|
||||
--graph=/var/lib/docker \
|
||||
--storage-driver=overlay2 \
|
||||
--log-driver=json-file \
|
||||
--iptables=false
|
||||
# NOTE(portdirect): fix mount propagation for Fedora, this is done post start,
|
||||
# as docker seems to reset this.
|
||||
ExecStartPost=/usr/bin/mount --make-rshared /
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
TasksMax=8192
|
||||
LimitNOFILE=1048576
|
||||
LimitNPROC=1048576
|
||||
LimitCORE=infinity
|
||||
TimeoutStartSec=0
|
||||
Restart=on-abnormal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -1,4 +0,0 @@
|
||||
[Service]
|
||||
Environment="HTTP_PROXY={{ proxy.http }}"
|
||||
Environment="HTTPS_PROXY={{ proxy.https }}"
|
||||
Environment="NO_PROXY={{ proxy.noproxy }}"
|
@ -1,30 +0,0 @@
|
||||
[Unit]
|
||||
Description=Docker Application Container Engine
|
||||
Documentation=https://docs.docker.com
|
||||
After=network.target docker.socket firewalld.service
|
||||
Requires=docker.socket
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
# the default is not to use systemd for cgroups because the delegate issues still
|
||||
# exists and systemd currently does not support the cgroup feature set required
|
||||
# for containers run by docker
|
||||
EnvironmentFile=-/etc/default/docker
|
||||
ExecStart=/usr/bin/dockerd --iptables=false -H fd:// $DOCKER_OPTS
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
LimitNOFILE=1048576
|
||||
# Having non-zero Limit*s causes performance problems due to accounting overhead
|
||||
# in the kernel. We recommend using cgroups to do container-local accounting.
|
||||
LimitNPROC=infinity
|
||||
LimitCORE=infinity
|
||||
# Uncomment TasksMax if your systemd version supports it.
|
||||
# Only systemd 226 and above support this version.
|
||||
TasksMax=infinity
|
||||
TimeoutStartSec=0
|
||||
# set delegate yes so that systemd does not reset the cgroups of docker containers
|
||||
Delegate=yes
|
||||
# kill only the docker process, not all processes in the cgroup
|
||||
KillMode=process
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -1,36 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
- block:
|
||||
- name: ensuring jq is deployed on host
|
||||
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' or ansible_distribution == 'Fedora'
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
packages:
|
||||
deb:
|
||||
- jq
|
||||
rpm:
|
||||
- jq
|
||||
|
||||
- name: installing jq 1.5 binary for centos
|
||||
become: true
|
||||
become_user: root
|
||||
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
|
||||
get_url:
|
||||
url: https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64
|
||||
dest: /usr/bin/jq
|
||||
mode: 365
|
||||
force: yes
|
||||
...
|
@ -1,18 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
proxy:
|
||||
http: null
|
||||
https: null
|
||||
noproxy: null
|
||||
...
|
@ -1,46 +0,0 @@
|
||||
# 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: managing distro packages for ubuntu
|
||||
become: true
|
||||
become_user: root
|
||||
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
|
||||
vars:
|
||||
state: present
|
||||
apt:
|
||||
name: "{{ item }}"
|
||||
state: "{{ state }}"
|
||||
with_items: "{{ packages.deb }}"
|
||||
|
||||
- name: managing distro packages for centos
|
||||
become: true
|
||||
become_user: root
|
||||
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
|
||||
vars:
|
||||
state: present
|
||||
yum:
|
||||
name: "{{ item }}"
|
||||
state: "{{ state }}"
|
||||
with_items: "{{ packages.rpm }}"
|
||||
|
||||
- name: managing distro packages for fedora
|
||||
become: true
|
||||
become_user: root
|
||||
when: ansible_distribution == 'Fedora'
|
||||
vars:
|
||||
state: present
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
state: "{{ state }}"
|
||||
with_items: "{{ packages.rpm }}"
|
||||
...
|
@ -1,27 +0,0 @@
|
||||
# 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: managing pip packages
|
||||
become: true
|
||||
become_user: root
|
||||
environment:
|
||||
http_proxy: "{{ proxy.http }}"
|
||||
https_proxy: "{{ proxy.https }}"
|
||||
no_proxy: "{{ proxy.noproxy }}"
|
||||
vars:
|
||||
state: present
|
||||
pip:
|
||||
name: "{{ item }}"
|
||||
state: "{{ state }}"
|
||||
with_items: "{{ packages }}"
|
||||
...
|
@ -1,18 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
proxy:
|
||||
http: null
|
||||
https: null
|
||||
noproxy: null
|
||||
...
|
@ -1,55 +0,0 @@
|
||||
# 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: check if pip installed
|
||||
command: pip3 --version
|
||||
register: pip_version_output
|
||||
ignore_errors: yes
|
||||
changed_when: false
|
||||
|
||||
- name: ensuring python pip package is present for ubuntu
|
||||
when: ( pip_version_output is failed ) and ( ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' )
|
||||
apt:
|
||||
name: python3-pip
|
||||
state: present
|
||||
|
||||
- name: ensuring python pip package is present for centos
|
||||
when: ( pip_version_output is failed ) and ( ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' )
|
||||
block:
|
||||
- name: ensuring epel-release package is present for centos as python3-pip is in the epel repo
|
||||
yum:
|
||||
name: epel-release
|
||||
state: present
|
||||
- name: ensuring python pip package is present for centos
|
||||
yum:
|
||||
name: python3-pip
|
||||
state: present
|
||||
|
||||
- name: ensuring python pip package is present for fedora via the python3-pip rpm
|
||||
when: ( pip_version_output is failed ) and ( ansible_distribution == 'Fedora' )
|
||||
dnf:
|
||||
name: python3-pip
|
||||
state: present
|
||||
|
||||
- name: ensuring pip is the latest version
|
||||
become: true
|
||||
become_user: root
|
||||
environment:
|
||||
http_proxy: "{{ proxy.http }}"
|
||||
https_proxy: "{{ proxy.https }}"
|
||||
no_proxy: "{{ proxy.noproxy }}"
|
||||
pip:
|
||||
name: pip
|
||||
state: latest
|
||||
executable: pip3
|
||||
...
|
@ -1,16 +0,0 @@
|
||||
# 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: ensuring python3 is present on all hosts
|
||||
raw: test -e /usr/bin/python3 || (sudo apt -y update && sudo apt install -y python3-minimal) || (sudo yum install -y python3) || (sudo dnf install -y python3)
|
||||
...
|
@ -1,108 +0,0 @@
|
||||
# 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: "creating directory for cluster scoped objects"
|
||||
file:
|
||||
path: "{{ logs_dir }}/objects/cluster"
|
||||
state: directory
|
||||
|
||||
- name: "Gathering descriptions for cluster scoped objects"
|
||||
shell: |-
|
||||
set -e
|
||||
export OBJECT_TYPE=node,clusterrole,clusterrolebinding,storageclass,namespace
|
||||
export PARALLELISM_FACTOR=2
|
||||
|
||||
function list_objects () {
|
||||
printf ${OBJECT_TYPE} | xargs -d ',' -I {} -P1 -n1 bash -c 'echo "$@"' _ {}
|
||||
}
|
||||
export -f list_objects
|
||||
|
||||
function name_objects () {
|
||||
export OBJECT=$1
|
||||
kubectl get ${OBJECT} -o name | xargs -L1 -I {} -P1 -n1 bash -c 'echo "${OBJECT} ${1#*/}"' _ {}
|
||||
}
|
||||
export -f name_objects
|
||||
|
||||
function get_objects () {
|
||||
input=($1)
|
||||
export OBJECT=${input[0]}
|
||||
export NAME=${input[1]#*/}
|
||||
echo "${OBJECT}/${NAME}"
|
||||
DIR="{{ logs_dir }}/objects/cluster/${OBJECT}"
|
||||
mkdir -p ${DIR}
|
||||
kubectl get ${OBJECT} ${NAME} -o yaml > "${DIR}/${NAME}.yaml"
|
||||
kubectl describe ${OBJECT} ${NAME} > "${DIR}/${NAME}.txt"
|
||||
}
|
||||
export -f get_objects
|
||||
|
||||
list_objects | \
|
||||
xargs -r -n 1 -P ${PARALLELISM_FACTOR} -I {} bash -c 'name_objects "$@"' _ {} | \
|
||||
xargs -r -n 1 -P ${PARALLELISM_FACTOR} -I {} bash -c 'get_objects "$@"' _ {}
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
|
||||
- name: "creating directory for namespace scoped objects"
|
||||
file:
|
||||
path: "{{ logs_dir }}/objects/namespaced"
|
||||
state: directory
|
||||
|
||||
- name: "Gathering descriptions for namespace scoped objects"
|
||||
shell: |-
|
||||
set -e
|
||||
export OBJECT_TYPE=configmaps,cronjobs,daemonsets,deployment,endpoints,ingresses,jobs,networkpolicies,pods,podsecuritypolicies,persistentvolumeclaims,rolebindings,roles,secrets,serviceaccounts,services,statefulsets
|
||||
export PARALLELISM_FACTOR=2
|
||||
function get_namespaces () {
|
||||
kubectl get namespaces -o name | awk -F '/' '{ print $NF }'
|
||||
}
|
||||
|
||||
function list_namespaced_objects () {
|
||||
export NAMESPACE=$1
|
||||
printf ${OBJECT_TYPE} | xargs -d ',' -I {} -P1 -n1 bash -c 'echo "${NAMESPACE} $@"' _ {}
|
||||
}
|
||||
export -f list_namespaced_objects
|
||||
|
||||
function name_objects () {
|
||||
input=($1)
|
||||
export NAMESPACE=${input[0]}
|
||||
export OBJECT=${input[1]}
|
||||
kubectl get -n ${NAMESPACE} ${OBJECT} -o name | xargs -L1 -I {} -P1 -n1 bash -c 'echo "${NAMESPACE} ${OBJECT} $@"' _ {}
|
||||
}
|
||||
export -f name_objects
|
||||
|
||||
function get_objects () {
|
||||
input=($1)
|
||||
export NAMESPACE=${input[0]}
|
||||
export OBJECT=${input[1]}
|
||||
export NAME=${input[2]#*/}
|
||||
echo "${NAMESPACE}/${OBJECT}/${NAME}"
|
||||
DIR="{{ logs_dir }}/objects/namespaced/${NAMESPACE}/${OBJECT}"
|
||||
mkdir -p ${DIR}
|
||||
kubectl get -n ${NAMESPACE} ${OBJECT} ${NAME} -o yaml > "${DIR}/${NAME}.yaml"
|
||||
kubectl describe -n ${NAMESPACE} ${OBJECT} ${NAME} > "${DIR}/${NAME}.txt"
|
||||
}
|
||||
export -f get_objects
|
||||
|
||||
get_namespaces | \
|
||||
xargs -r -n 1 -P ${PARALLELISM_FACTOR} -I {} bash -c 'list_namespaced_objects "$@"' _ {} | \
|
||||
xargs -r -n 1 -P ${PARALLELISM_FACTOR} -I {} bash -c 'name_objects "$@"' _ {} | \
|
||||
xargs -r -n 1 -P ${PARALLELISM_FACTOR} -I {} bash -c 'get_objects "$@"' _ {}
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
|
||||
- name: "Downloads logs to executor"
|
||||
synchronize:
|
||||
src: "{{ logs_dir }}/objects"
|
||||
dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||
mode: pull
|
||||
ignore_errors: yes
|
@ -1,59 +0,0 @@
|
||||
# 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.
|
||||
|
||||
# NOTE(portdirect): We disable the local nameserver as it interferes with the
|
||||
# k8s dns-service and other local resolvers used for development use.
|
||||
# See the following for the original config:
|
||||
# * https://github.com/openstack/project-config/blob/0332c33dd134033e0620645c252f82b77e4c16f5/nodepool/elements/nodepool-base/finalise.d/89-unbound
|
||||
|
||||
---
|
||||
- name: Disable local nameserver and systemd-resolved service
|
||||
when: ansible_distribution == 'Ubuntu'
|
||||
block:
|
||||
- name: update rc.local
|
||||
blockinfile:
|
||||
path: /etc/rc.local
|
||||
mode: 365
|
||||
block: |
|
||||
#!/bin/bash
|
||||
set -o xtrace
|
||||
# Some providers inject dynamic network config statically. Work around this
|
||||
# for DNS nameservers. This is expected to fail on some nodes so remove -e.
|
||||
set +e
|
||||
sed -i -e 's/^\(DNS[0-9]*=[.0-9]\+\)/#\1/g' /etc/sysconfig/network-scripts/ifcfg-*
|
||||
sed -i -e 's/^NETCONFIG_DNS_POLICY=.*/NETCONFIG_DNS_POLICY=""/g' /etc/sysconfig/network/config
|
||||
set -e
|
||||
echo 'nameserver 208.67.222.222' > /etc/resolv.conf
|
||||
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
|
||||
exit 0
|
||||
- name: write resolv.conf
|
||||
blockinfile:
|
||||
path: /etc/resolv.conf
|
||||
mode: 644
|
||||
block: |
|
||||
nameserver 208.67.222.222
|
||||
nameserver 8.8.8.8
|
||||
- name: stop unbound service
|
||||
systemd:
|
||||
state: stopped
|
||||
enabled: no
|
||||
masked: yes
|
||||
daemon_reload: yes
|
||||
name: unbound
|
||||
- name: stop systemd-resolved service
|
||||
systemd:
|
||||
state: stopped
|
||||
enabled: no
|
||||
masked: yes
|
||||
daemon_reload: yes
|
||||
name: systemd-resolved
|
||||
...
|
@ -1,39 +0,0 @@
|
||||
# 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: "creating directory for system status"
|
||||
file:
|
||||
path: "{{ logs_dir }}/system"
|
||||
state: directory
|
||||
|
||||
- name: "Get logs for each host"
|
||||
become: yes
|
||||
shell: |-
|
||||
set -x
|
||||
systemd-cgls --full --all --no-pager > {{ logs_dir }}/system/systemd-cgls.txt
|
||||
ip addr > {{ logs_dir }}/system/ip-addr.txt
|
||||
ip route > {{ logs_dir }}/system/ip-route.txt
|
||||
lsblk > {{ logs_dir }}/system/lsblk.txt
|
||||
mount > {{ logs_dir }}/system/mount.txt
|
||||
docker images > {{ logs_dir }}/system/docker-images.txt
|
||||
brctl show > {{ logs_dir }}/system/brctl-show.txt
|
||||
ps aux --sort=-%mem > {{ logs_dir }}/system/ps.txt
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
|
||||
- name: "Downloads logs to executor"
|
||||
synchronize:
|
||||
src: "{{ logs_dir }}/system"
|
||||
dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||
mode: pull
|
||||
ignore_errors: True
|
@ -1,61 +0,0 @@
|
||||
# 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: "creating directory for pod logs"
|
||||
file:
|
||||
path: "{{ logs_dir }}/pod-logs"
|
||||
state: directory
|
||||
|
||||
- name: "creating directory for failed pod logs"
|
||||
file:
|
||||
path: "{{ logs_dir }}/pod-logs/failed-pods"
|
||||
state: directory
|
||||
|
||||
- name: "retrieve all container logs, current and previous (if they exist)"
|
||||
shell: |-
|
||||
set -e
|
||||
PARALLELISM_FACTOR=2
|
||||
function get_namespaces () {
|
||||
kubectl get namespaces -o name | awk -F '/' '{ print $NF }'
|
||||
}
|
||||
function get_pods () {
|
||||
NAMESPACE=$1
|
||||
kubectl get pods -n ${NAMESPACE} -o name | awk -F '/' '{ print $NF }' | xargs -L1 -P 1 -I {} echo ${NAMESPACE} {}
|
||||
}
|
||||
export -f get_pods
|
||||
function get_pod_logs () {
|
||||
NAMESPACE=${1% *}
|
||||
POD=${1#* }
|
||||
INIT_CONTAINERS=$(kubectl get pod $POD -n ${NAMESPACE} -o json | jq -r '.spec.initContainers[]?.name')
|
||||
CONTAINERS=$(kubectl get pod $POD -n ${NAMESPACE} -o json | jq -r '.spec.containers[].name')
|
||||
for CONTAINER in ${INIT_CONTAINERS} ${CONTAINERS}; do
|
||||
echo "${NAMESPACE}/${POD}/${CONTAINER}"
|
||||
mkdir -p "{{ logs_dir }}/pod-logs/${NAMESPACE}/${POD}"
|
||||
mkdir -p "{{ logs_dir }}/pod-logs/failed-pods/${NAMESPACE}/${POD}"
|
||||
kubectl logs ${POD} -n ${NAMESPACE} -c ${CONTAINER} > "{{ logs_dir }}/pod-logs/${NAMESPACE}/${POD}/${CONTAINER}.txt"
|
||||
kubectl logs --previous ${POD} -n ${NAMESPACE} -c ${CONTAINER} > "{{ logs_dir }}/pod-logs/failed-pods/${NAMESPACE}/${POD}/${CONTAINER}.txt"
|
||||
done
|
||||
}
|
||||
export -f get_pod_logs
|
||||
get_namespaces | \
|
||||
xargs -r -n 1 -P ${PARALLELISM_FACTOR} -I {} bash -c 'get_pods "$@"' _ {} | \
|
||||
xargs -r -n 2 -P ${PARALLELISM_FACTOR} -I {} bash -c 'get_pod_logs "$@"' _ {}
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
|
||||
- name: "Downloads pod logs to executor"
|
||||
synchronize:
|
||||
src: "{{ logs_dir }}/pod-logs"
|
||||
dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||
mode: pull
|
||||
ignore_errors: True
|
@ -1,31 +0,0 @@
|
||||
# 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: "creating directory for helm release descriptions"
|
||||
file:
|
||||
path: "{{ logs_dir }}/selenium"
|
||||
state: directory
|
||||
|
||||
- name: "Get selenium data"
|
||||
shell: |-
|
||||
set -x
|
||||
cp /tmp/artifacts/* {{ logs_dir }}/selenium/.
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
|
||||
- name: "Downloads logs to executor"
|
||||
synchronize:
|
||||
src: "{{ logs_dir }}/selenium"
|
||||
dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||
mode: pull
|
||||
ignore_errors: True
|
@ -1,51 +0,0 @@
|
||||
# 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: "creating directory for helm release status"
|
||||
file:
|
||||
path: "{{ logs_dir }}/helm/{{ directory }}"
|
||||
state: directory
|
||||
loop_control:
|
||||
loop_var: directory
|
||||
with_items:
|
||||
- values
|
||||
- releases
|
||||
|
||||
- name: "retrieve all deployed charts"
|
||||
shell: |-
|
||||
set -e
|
||||
helm ls --short
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: helm_releases
|
||||
ignore_errors: True
|
||||
|
||||
- name: "Gather get release status for helm charts"
|
||||
shell: |-
|
||||
set -e
|
||||
helm status {{ helm_released }} >> {{ logs_dir }}/helm/releases/{{ helm_release }}.txt
|
||||
helm get values {{ helm_released }} >> {{ logs_dir }}/helm/values/{{ helm_release }}.yaml
|
||||
args:
|
||||
executable: /bin/bash
|
||||
ignore_errors: True
|
||||
vars:
|
||||
helm_release: "{{ helm_released }}"
|
||||
loop_control:
|
||||
loop_var: helm_released
|
||||
with_items: "{{ helm_releases.stdout_lines }}"
|
||||
|
||||
- name: "Downloads logs to executor"
|
||||
synchronize:
|
||||
src: "{{ logs_dir }}/helm"
|
||||
dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||
mode: pull
|
||||
ignore_errors: True
|
@ -1,17 +0,0 @@
|
||||
# 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.
|
||||
|
||||
osh_params:
|
||||
openstack_release: yoga
|
||||
container_distro_name: ubuntu
|
||||
container_distro_version: jammy
|
||||
# feature_gates:
|
@ -1,28 +0,0 @@
|
||||
# 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: "Run script {{ gate_script_path }}"
|
||||
shell: |
|
||||
set -xe;
|
||||
{{ gate_script_path }}
|
||||
args:
|
||||
chdir: "{{ zuul.project.src_dir }}/{{ args.chdir }}"
|
||||
environment:
|
||||
zuul_site_mirror_fqdn: "{{ zuul_site_mirror_fqdn }}"
|
||||
OSH_EXTRA_HELM_ARGS: "{{ zuul_osh_extra_helm_args_relative_path | default('') }}"
|
||||
OSH_PATH: "{{ zuul_osh_relative_path | default('../openstack-helm/') }}"
|
||||
OSH_INFRA_PATH: "{{ zuul_osh_infra_relative_path | default('../openstack-helm-infra/') }}"
|
||||
OPENSTACK_RELEASE: "{{ osh_params.openstack_release }}"
|
||||
CONTAINER_DISTRO_NAME: "{{ osh_params.container_distro_name }}"
|
||||
CONTAINER_DISTRO_VERSION: "{{ osh_params.container_distro_version }}"
|
||||
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
||||
DISTRO: "{{ distro_suffix | default('') }}"
|
@ -1,15 +0,0 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
ubuntu_kernel_hwe: false
|
||||
...
|
@ -1,44 +0,0 @@
|
||||
# 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: Upgrade to HWE kernel on Ubuntu Hosts
|
||||
when:
|
||||
- ansible_distribution == 'Ubuntu'
|
||||
- ubuntu_kernel_hwe == true
|
||||
block:
|
||||
- name: Deploy HWE kernel on Ubuntu Hosts
|
||||
include_role:
|
||||
name: deploy-package
|
||||
tasks_from: dist
|
||||
vars:
|
||||
packages:
|
||||
deb:
|
||||
- 'linux-generic-hwe-{{ ansible_distribution_version }}'
|
||||
- name: Reboot Host following kernel upgrade
|
||||
shell: sleep 2 && reboot
|
||||
become: yes
|
||||
async: 30
|
||||
poll: 0
|
||||
ignore_errors: true
|
||||
args:
|
||||
executable: /bin/bash
|
||||
- name: Wait for hosts to come up following reboot
|
||||
wait_for:
|
||||
host: '{{ hostvars[item].ansible_host }}'
|
||||
port: 22
|
||||
state: started
|
||||
delay: 60
|
||||
timeout: 240
|
||||
with_items: '{{ play_hosts }}'
|
||||
connection: local
|
||||
...
|
@ -16,8 +16,8 @@
|
||||
|
||||
set -eux
|
||||
|
||||
HTK_REPO=${HTK_REPO:-"https://opendev.org/openstack/openstack-helm-infra.git"}
|
||||
HTK_STABLE_COMMIT=${HTK_COMMIT:-"cfff60ec10a6c386f38db79bb9f59a552c2b032f"}
|
||||
HTK_REPO=${HTK_REPO:-"https://opendev.org/openstack/openstack-helm.git"}
|
||||
HTK_STABLE_COMMIT=${HTK_COMMIT:-"master"}
|
||||
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
|
124
zuul.d/base.yaml
124
zuul.d/base.yaml
@ -79,11 +79,11 @@
|
||||
parent: openstack-tox-py310
|
||||
nodeset: treasuremap-airskiff-1node-ubuntu_jammy
|
||||
roles:
|
||||
- zuul: openstack/openstack-helm-infra
|
||||
- zuul: airship/kubernetes-entrypoint
|
||||
- zuul: openstack/openstack-helm
|
||||
- zuul: zuul/zuul-jobs
|
||||
required-projects:
|
||||
- name: openstack/openstack-helm
|
||||
- name: openstack/openstack-helm-infra
|
||||
- name: openstack/openstack-helm-plugin
|
||||
- name: airship/treasuremap
|
||||
override-checkout: v1.9
|
||||
@ -103,6 +103,7 @@
|
||||
post-run:
|
||||
- tools/gate/playbooks/osh-infra-collect-logs.yaml
|
||||
vars:
|
||||
treasuremap_ref: v1.9
|
||||
extra_volume:
|
||||
size: 80G
|
||||
type: Linux
|
||||
@ -119,8 +120,8 @@
|
||||
loopback_device: /dev/loop100
|
||||
loopback_image: "/opt/ext_vol/openstack-helm/ceph-loop.img"
|
||||
ceph_osd_data_device: /dev/loop100
|
||||
kube_version_repo: "v1.31"
|
||||
kube_version: "1.31.3-1.1"
|
||||
kube_version_repo: "v1.32"
|
||||
kube_version: "1.32.1-1.1"
|
||||
calico_setup: true
|
||||
calico_version: "v3.27.4"
|
||||
cilium_setup: false
|
||||
@ -132,7 +133,7 @@
|
||||
helm_version: "v3.14.0"
|
||||
crictl_version: "v1.30.1"
|
||||
zuul_osh_relative_path: ../../openstack/openstack-helm
|
||||
zuul_osh_infra_relative_path: ../../openstack/openstack-helm-infra
|
||||
zuul_osh_infra_relative_path: ../../openstack/openstack-helm
|
||||
zuul_treasuremap_relative_path: ../../airship/treasuremap
|
||||
gate_scripts_relative_path: .
|
||||
run_helm_tests: "no"
|
||||
@ -141,9 +142,9 @@
|
||||
container_distro_name: ubuntu
|
||||
container_distro_version: jammy
|
||||
HELM_ARTIFACT_URL: https://get.helm.sh/helm-v3.16.4-linux-amd64.tar.gz
|
||||
HTK_COMMIT: 3a4fb2185dec899a2f77e6ff46a04947ac89cd6c
|
||||
OSH_INFRA_COMMIT: 3a4fb2185dec899a2f77e6ff46a04947ac89cd6c
|
||||
OSH_COMMIT: 450f355bc7dd68c449700c8c5f3ff89d45103474
|
||||
HTK_COMMIT: master
|
||||
OSH_INFRA_COMMIT: master
|
||||
OSH_COMMIT: master
|
||||
gate_scripts:
|
||||
- ./tools/deployment/002-build-charts.sh
|
||||
- ./tools/deployment/003-prepare-k8s.sh
|
||||
@ -157,36 +158,16 @@
|
||||
- ./tools/deployment/060-postgresql-utility.sh
|
||||
|
||||
|
||||
# - job:
|
||||
# name: airship-porthole-openstack-tox-py310
|
||||
# parent: openstack-tox-py310
|
||||
# description: Runs cover job on jammy
|
||||
# nodeset: airship-porthole-jammy-single-node
|
||||
# pre-run: tools/gate/playbooks/airship-porthole-gate-runner.yaml
|
||||
# timeout: 7200
|
||||
# vars:
|
||||
# distro_suffix: ubuntu_jammy
|
||||
# gate_scripts:
|
||||
# - ./tools/deployment/005-calicoctl-utility.sh
|
||||
# - ./tools/deployment/010-ceph-utility.sh
|
||||
# - ./tools/deployment/020-compute-utility.sh
|
||||
# - ./tools/deployment/030-etcdctl-utility.sh
|
||||
# - ./tools/deployment/040-mysqlclient-utility.sh
|
||||
# - ./tools/deployment/050-openstack-utility.sh
|
||||
# - ./tools/deployment/060-postgresql-utility.sh
|
||||
# args:
|
||||
# chdir: ../porthole
|
||||
|
||||
- job:
|
||||
name: airship-porthole-openstack-tox-cover-kubeadm
|
||||
parent: openstack-tox-cover
|
||||
nodeset: treasuremap-airskiff-1node-ubuntu_jammy
|
||||
roles:
|
||||
- zuul: openstack/openstack-helm-infra
|
||||
- zuul: airship/kubernetes-entrypoint
|
||||
- zuul: openstack/openstack-helm
|
||||
- zuul: zuul/zuul-jobs
|
||||
required-projects:
|
||||
- name: openstack/openstack-helm
|
||||
- name: openstack/openstack-helm-infra
|
||||
- name: openstack/openstack-helm-plugin
|
||||
- name: airship/treasuremap
|
||||
override-checkout: v1.9
|
||||
@ -206,6 +187,7 @@
|
||||
post-run:
|
||||
- tools/gate/playbooks/osh-infra-collect-logs.yaml
|
||||
vars:
|
||||
treasuremap_ref: v1.9
|
||||
extra_volume:
|
||||
size: 80G
|
||||
type: Linux
|
||||
@ -222,8 +204,8 @@
|
||||
loopback_device: /dev/loop100
|
||||
loopback_image: "/opt/ext_vol/openstack-helm/ceph-loop.img"
|
||||
ceph_osd_data_device: /dev/loop100
|
||||
kube_version_repo: "v1.31"
|
||||
kube_version: "1.31.3-1.1"
|
||||
kube_version_repo: "v1.32"
|
||||
kube_version: "1.32.1-1.1"
|
||||
calico_setup: true
|
||||
calico_version: "v3.27.4"
|
||||
cilium_setup: false
|
||||
@ -235,7 +217,7 @@
|
||||
helm_version: "v3.14.0"
|
||||
crictl_version: "v1.30.1"
|
||||
zuul_osh_relative_path: ../../openstack/openstack-helm
|
||||
zuul_osh_infra_relative_path: ../../openstack/openstack-helm-infra
|
||||
zuul_osh_infra_relative_path: ../../openstack/openstack-helm
|
||||
zuul_treasuremap_relative_path: ../../airship/treasuremap
|
||||
gate_scripts_relative_path: .
|
||||
run_helm_tests: "no"
|
||||
@ -244,9 +226,9 @@
|
||||
container_distro_name: ubuntu
|
||||
container_distro_version: jammy
|
||||
HELM_ARTIFACT_URL: https://get.helm.sh/helm-v3.16.4-linux-amd64.tar.gz
|
||||
HTK_COMMIT: 3a4fb2185dec899a2f77e6ff46a04947ac89cd6c
|
||||
OSH_INFRA_COMMIT: 3a4fb2185dec899a2f77e6ff46a04947ac89cd6c
|
||||
OSH_COMMIT: 450f355bc7dd68c449700c8c5f3ff89d45103474
|
||||
HTK_COMMIT: master
|
||||
OSH_INFRA_COMMIT: master
|
||||
OSH_COMMIT: master
|
||||
gate_scripts:
|
||||
- ./tools/deployment/002-build-charts.sh
|
||||
- ./tools/deployment/003-prepare-k8s.sh
|
||||
@ -261,26 +243,6 @@
|
||||
|
||||
|
||||
|
||||
# - job:
|
||||
# name: airship-porthole-openstack-tox-cover
|
||||
# parent: openstack-tox-cover
|
||||
# description: Runs cover job on jammy
|
||||
# nodeset: airship-porthole-jammy-single-node
|
||||
# pre-run: tools/gate/playbooks/airship-porthole-gate-runner.yaml
|
||||
# timeout: 7200
|
||||
# vars:
|
||||
# distro_suffix: ubuntu_jammy
|
||||
# gate_scripts:
|
||||
# - ./tools/deployment/005-calicoctl-utility.sh
|
||||
# - ./tools/deployment/010-ceph-utility.sh
|
||||
# - ./tools/deployment/020-compute-utility.sh
|
||||
# - ./tools/deployment/030-etcdctl-utility.sh
|
||||
# - ./tools/deployment/040-mysqlclient-utility.sh
|
||||
# - ./tools/deployment/050-openstack-utility.sh
|
||||
# - ./tools/deployment/060-postgresql-utility.sh
|
||||
# args:
|
||||
# chdir: ../porthole
|
||||
|
||||
- job:
|
||||
name: airship-porthole-images
|
||||
abstract: true
|
||||
@ -316,11 +278,11 @@
|
||||
description: Deploys all UC's and Executes functional tests
|
||||
nodeset: treasuremap-airskiff-1node-ubuntu_jammy
|
||||
roles:
|
||||
- zuul: openstack/openstack-helm-infra
|
||||
- zuul: airship/kubernetes-entrypoint
|
||||
- zuul: openstack/openstack-helm
|
||||
- zuul: zuul/zuul-jobs
|
||||
required-projects:
|
||||
- name: openstack/openstack-helm
|
||||
- name: openstack/openstack-helm-infra
|
||||
- name: openstack/openstack-helm-plugin
|
||||
- name: airship/treasuremap
|
||||
override-checkout: v1.9
|
||||
@ -342,6 +304,7 @@
|
||||
post-run:
|
||||
- tools/gate/playbooks/osh-infra-collect-logs.yaml
|
||||
vars:
|
||||
treasuremap_ref: v1.9
|
||||
extra_volume:
|
||||
size: 80G
|
||||
type: Linux
|
||||
@ -358,8 +321,8 @@
|
||||
loopback_device: /dev/loop100
|
||||
loopback_image: "/opt/ext_vol/openstack-helm/ceph-loop.img"
|
||||
ceph_osd_data_device: /dev/loop100
|
||||
kube_version_repo: "v1.31"
|
||||
kube_version: "1.31.3-1.1"
|
||||
kube_version_repo: "v1.32"
|
||||
kube_version: "1.32.1-1.1"
|
||||
calico_setup: true
|
||||
calico_version: "v3.27.4"
|
||||
cilium_setup: false
|
||||
@ -371,7 +334,7 @@
|
||||
helm_version: "v3.14.0"
|
||||
crictl_version: "v1.30.1"
|
||||
zuul_osh_relative_path: ../../openstack/openstack-helm
|
||||
zuul_osh_infra_relative_path: ../../openstack/openstack-helm-infra
|
||||
zuul_osh_infra_relative_path: ../../openstack/openstack-helm
|
||||
zuul_treasuremap_relative_path: ../../airship/treasuremap
|
||||
gate_scripts_relative_path: .
|
||||
run_helm_tests: "no"
|
||||
@ -380,9 +343,9 @@
|
||||
container_distro_name: ubuntu
|
||||
container_distro_version: jammy
|
||||
HELM_ARTIFACT_URL: https://get.helm.sh/helm-v3.16.4-linux-amd64.tar.gz
|
||||
HTK_COMMIT: 3a4fb2185dec899a2f77e6ff46a04947ac89cd6c
|
||||
OSH_INFRA_COMMIT: 3a4fb2185dec899a2f77e6ff46a04947ac89cd6c
|
||||
OSH_COMMIT: 450f355bc7dd68c449700c8c5f3ff89d45103474
|
||||
HTK_COMMIT: master
|
||||
OSH_INFRA_COMMIT: master
|
||||
OSH_COMMIT: master
|
||||
gate_scripts:
|
||||
- ./tools/deployment/002-build-charts.sh
|
||||
- ./tools/deployment/003-prepare-k8s.sh
|
||||
@ -419,39 +382,6 @@
|
||||
args:
|
||||
chdir: ../porthole
|
||||
|
||||
# - job:
|
||||
# name: airship-porthole-deploy-functional-tests
|
||||
# abstract: true
|
||||
# description: Deploys all UC's and Executes functional tests
|
||||
# nodeset: airship-porthole-jammy-single-node
|
||||
# timeout: 7200
|
||||
# run:
|
||||
# - tools/gate/playbooks/airship-porthole-gate-runner.yaml
|
||||
# - tools/gate/playbooks/make-functional-tests.yaml
|
||||
# post-run:
|
||||
# - tools/gate/playbooks/airship-porthole-collect-logs.yaml
|
||||
# vars:
|
||||
# gate_scripts:
|
||||
# - ./tools/deployment/005-calicoctl-utility.sh
|
||||
# - ./tools/deployment/010-ceph-utility.sh
|
||||
# - ./tools/deployment/020-compute-utility.sh
|
||||
# - ./tools/deployment/030-etcdctl-utility.sh
|
||||
# - ./tools/deployment/040-mysqlclient-utility.sh
|
||||
# - ./tools/deployment/050-openstack-utility.sh
|
||||
# - ./tools/deployment/060-postgresql-utility.sh
|
||||
# args:
|
||||
# chdir: ../porthole
|
||||
|
||||
# - job:
|
||||
# name: airship-porthole-deploy-functional-tests-ubuntu_jammy
|
||||
# parent: airship-porthole-deploy-functional-tests
|
||||
# vars:
|
||||
# distro_suffix: ubuntu_jammy
|
||||
# osh_params:
|
||||
# openstack_release: antelope
|
||||
# container_distro_name: ubuntu
|
||||
# container_distro_version: jammy
|
||||
|
||||
|
||||
- secret:
|
||||
name: quay_credentials
|
||||
|
Loading…
x
Reference in New Issue
Block a user