integrate OpenStack ppc64le builders into COPR
This commit is contained in:
parent
72dba8a671
commit
be9604673a
8 changed files with 356 additions and 7 deletions
|
@ -0,0 +1,47 @@
|
||||||
|
- name: check/create instance
|
||||||
|
hosts: 127.0.0.1
|
||||||
|
gather_facts: False
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- nova_cloud_vars_ppc64le.yml
|
||||||
|
|
||||||
|
vars:
|
||||||
|
# _OS_AUTH_OPTS: "--os-auth-url {{OS_AUTH_URL}} --os-username {{OS_USERNAME}} --os-password {{OS_PASSWORD}} --os-tenant-name {{OS_TENANT_NAME}} --os-tenant-id {{OS_TENANT_ID}} "
|
||||||
|
|
||||||
|
keypair: buildsys
|
||||||
|
max_spawn_time: 600
|
||||||
|
spawning_vm_user: "fedora"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: generate builder name
|
||||||
|
local_action: set_fact vm_name="Copr_builder_{{ 999999999 | random }}"
|
||||||
|
|
||||||
|
- debug: msg="vm_name={{ vm_name }}"
|
||||||
|
- include: "spinup_nova_task.yml"
|
||||||
|
|
||||||
|
- debug: msg="VM_IP={{ builder_ip }}"
|
||||||
|
|
||||||
|
- name: wait for he host to be hot
|
||||||
|
local_action: wait_for host={{ builder_ip }} port=22 delay=1 timeout=600
|
||||||
|
|
||||||
|
- name: wait until ssh is available
|
||||||
|
local_action: shell false; until [ "$?" -eq "0" ]; do sleep 2; ssh -o PasswordAuthentication=no {{ spawning_vm_user|default('fedora') }}@{{ builder_ip }} 'echo foobar' 2>/dev/null; done
|
||||||
|
async: 600
|
||||||
|
poll: 2
|
||||||
|
|
||||||
|
|
||||||
|
- name: provision builder
|
||||||
|
hosts: builder_temp_group
|
||||||
|
gather_facts: True
|
||||||
|
sudo: True
|
||||||
|
user: fedora
|
||||||
|
|
||||||
|
vars:
|
||||||
|
# pass this options if you need to create new base image from snapshot
|
||||||
|
#prepare_base_image: True
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- include: "provision_builder_tasks_ppc64le.yml"
|
||||||
|
|
||||||
|
- name: disable offloading
|
||||||
|
command: ethtool -K eth0 tso off gro off gso off
|
|
@ -0,0 +1,73 @@
|
||||||
|
config_opts['root'] = 'fedora-23-ppc64le'
|
||||||
|
config_opts['target_arch'] = 'ppc64le'
|
||||||
|
config_opts['legal_host_arches'] = ('ppc64le',)
|
||||||
|
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils fedora-release findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config rpm-build sed shadow-utils tar unzip util-linux which xz'
|
||||||
|
config_opts['dist'] = 'fc23' # only useful for --resultdir variable subst
|
||||||
|
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
|
||||||
|
config_opts['releasever'] = '23'
|
||||||
|
config_opts['package_manager'] = 'dnf'
|
||||||
|
|
||||||
|
config_opts['yum.conf'] = """
|
||||||
|
[main]
|
||||||
|
keepcache=1
|
||||||
|
debuglevel=1
|
||||||
|
reposdir=/dev/null
|
||||||
|
logfile=/var/log/yum.log
|
||||||
|
retries=20
|
||||||
|
obsoletes=1
|
||||||
|
gpgcheck=0
|
||||||
|
assumeyes=1
|
||||||
|
syslog_ident=mock
|
||||||
|
syslog_device=
|
||||||
|
install_weak_deps=0
|
||||||
|
metadata_expire=0
|
||||||
|
mdpolicy=group:primary
|
||||||
|
|
||||||
|
# repos
|
||||||
|
|
||||||
|
[fedora]
|
||||||
|
name=fedora
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
|
||||||
|
#baseurl=https://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Everything/ppc64le/
|
||||||
|
failovermethod=priority
|
||||||
|
gpgkey=file:///etc/pki/mock/RPM-GPG-KEY-fedora-23-secondary
|
||||||
|
gpgcheck=1
|
||||||
|
|
||||||
|
[updates]
|
||||||
|
name=updates
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
|
||||||
|
#baseurl=https://dl.fedoraproject.org/pub/fedora-secondary/updates/23/Everything/ppc64le/
|
||||||
|
failovermethod=priority
|
||||||
|
gpgkey=file:///etc/pki/mock/RPM-GPG-KEY-fedora-23-secondary
|
||||||
|
gpgcheck=1
|
||||||
|
|
||||||
|
[updates-testing]
|
||||||
|
name=updates-testing
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[local]
|
||||||
|
name=local
|
||||||
|
baseurl=http://ppcpkgs.fedoraproject.org/repos/f23-build/latest/ppc64le/
|
||||||
|
cost=2000
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[fedora-debuginfo]
|
||||||
|
name=fedora-debuginfo
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[updates-debuginfo]
|
||||||
|
name=updates-debuginfo
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[updates-testing-debuginfo]
|
||||||
|
name=updates-testing-debuginfo
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-debug-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
"""
|
|
@ -0,0 +1,71 @@
|
||||||
|
config_opts['root'] = 'fedora-24-ppc64le'
|
||||||
|
config_opts['target_arch'] = 'ppc64le'
|
||||||
|
config_opts['legal_host_arches'] = ('ppc64le',)
|
||||||
|
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils fedora-release findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config rpm-build sed shadow-utils tar unzip util-linux which xz'
|
||||||
|
config_opts['dist'] = 'fc24' # only useful for --resultdir variable subst
|
||||||
|
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
|
||||||
|
config_opts['releasever'] = '24'
|
||||||
|
config_opts['package_manager'] = 'dnf'
|
||||||
|
|
||||||
|
config_opts['yum.conf'] = """
|
||||||
|
[main]
|
||||||
|
keepcache=1
|
||||||
|
debuglevel=1
|
||||||
|
reposdir=/dev/null
|
||||||
|
logfile=/var/log/yum.log
|
||||||
|
retries=20
|
||||||
|
obsoletes=1
|
||||||
|
gpgcheck=0
|
||||||
|
assumeyes=1
|
||||||
|
syslog_ident=mock
|
||||||
|
syslog_device=
|
||||||
|
install_weak_deps=0
|
||||||
|
metadata_expire=0
|
||||||
|
mdpolicy=group:primary
|
||||||
|
|
||||||
|
# repos
|
||||||
|
|
||||||
|
[fedora]
|
||||||
|
name=fedora
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
gpgkey=file:///etc/pki/mock/RPM-GPG-KEY-fedora-24-secondary
|
||||||
|
gpgcheck=1
|
||||||
|
|
||||||
|
[updates]
|
||||||
|
name=updates
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
gpgkey=file:///etc/pki/mock/RPM-GPG-KEY-fedora-24-secondary
|
||||||
|
gpgcheck=1
|
||||||
|
|
||||||
|
[updates-testing]
|
||||||
|
name=updates-testing
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[local]
|
||||||
|
name=local
|
||||||
|
baseurl=http://ppcpkgs.fedoraproject.org/repos/f24-build/latest/ppc64le/
|
||||||
|
cost=2000
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[fedora-debuginfo]
|
||||||
|
name=fedora-debuginfo
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[updates-debuginfo]
|
||||||
|
name=updates-debuginfo
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[updates-testing-debuginfo]
|
||||||
|
name=updates-testing-debuginfo
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-debug-f$releasever&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
enabled=0
|
||||||
|
"""
|
|
@ -0,0 +1,43 @@
|
||||||
|
config_opts['root'] = 'fedora-rawhide-ppc64le'
|
||||||
|
config_opts['target_arch'] = 'ppc64le'
|
||||||
|
config_opts['legal_host_arches'] = ('ppc64le',)
|
||||||
|
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils fedora-release findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config rpm-build sed shadow-utils tar unzip util-linux which xz'
|
||||||
|
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
|
||||||
|
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
|
||||||
|
config_opts['releasever'] = '25'
|
||||||
|
config_opts['package_manager'] = 'dnf'
|
||||||
|
|
||||||
|
config_opts['yum.conf'] = """
|
||||||
|
[main]
|
||||||
|
keepcache=1
|
||||||
|
debuglevel=1
|
||||||
|
reposdir=/dev/null
|
||||||
|
logfile=/var/log/yum.log
|
||||||
|
retries=20
|
||||||
|
obsoletes=1
|
||||||
|
gpgcheck=0
|
||||||
|
assumeyes=1
|
||||||
|
syslog_ident=mock
|
||||||
|
syslog_device=
|
||||||
|
install_weak_deps=0
|
||||||
|
metadata_expire=0
|
||||||
|
|
||||||
|
# repos
|
||||||
|
|
||||||
|
[fedora]
|
||||||
|
name=fedora
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=$basearch
|
||||||
|
failovermethod=priority
|
||||||
|
|
||||||
|
[local]
|
||||||
|
name=local
|
||||||
|
baseurl=http://ppcpkgs.fedoraproject.org/repos/rawhide/latest/ppc64le/
|
||||||
|
cost=2000
|
||||||
|
enabled=0
|
||||||
|
|
||||||
|
[debug]
|
||||||
|
name=Fedora Rawhide - ppc64le - Debug
|
||||||
|
failovermethod=priority
|
||||||
|
metalink=https://mirrors.fedoraproject.org/metalink?repo=rawhide-debug&arch=$basearch
|
||||||
|
enabled=0
|
||||||
|
"""
|
|
@ -0,0 +1,91 @@
|
||||||
|
- name: install copr repo
|
||||||
|
copy: src="copr.repo" dest="/etc/yum.repos.d/copr.repo"
|
||||||
|
|
||||||
|
- name: set bigger timeout for yum
|
||||||
|
ini_file: dest=/etc/yum.conf section=main option=timeout value=1000
|
||||||
|
|
||||||
|
- name: install pkgs
|
||||||
|
yum: state=present pkg={{ item }}
|
||||||
|
with_items:
|
||||||
|
- dnf
|
||||||
|
- dnf-plugins-core
|
||||||
|
- mock
|
||||||
|
# - mock-lvm
|
||||||
|
- createrepo_c
|
||||||
|
- yum-utils
|
||||||
|
- pyliblzma
|
||||||
|
- rsync
|
||||||
|
- openssh-clients
|
||||||
|
- rsync
|
||||||
|
- libselinux-python
|
||||||
|
- libsemanage-python
|
||||||
|
- yum
|
||||||
|
- scl-utils-build
|
||||||
|
- ethtool
|
||||||
|
# - fedpkg-copr
|
||||||
|
- nosync
|
||||||
|
|
||||||
|
- name: set bigger timeout for dnf
|
||||||
|
ini_file: dest=/etc/dnf/dnf.conf section=main option=timeout value=1000
|
||||||
|
|
||||||
|
# this comes from https://copr-be.cloud.fedoraproject.org/results/%40copr/copr/fedora-23-x86_64/00179756-fedpkg-copr/fedpkg-copr-0.3-1.fc23.noarch.rpm
|
||||||
|
# TODO put it in correct place
|
||||||
|
# BZ 1241507
|
||||||
|
- shell: yum-deprecated install -y fedpkg-copr || yum install -y fedpkg-copr
|
||||||
|
|
||||||
|
# This needs to be updated for python-fedora
|
||||||
|
- shell: yum-deprecated update -y python-requests || yum install -y python-requests
|
||||||
|
|
||||||
|
- name: make sure newest rpm
|
||||||
|
dnf: name={{ item }} state=latest
|
||||||
|
with_items:
|
||||||
|
- rpm
|
||||||
|
- glib2
|
||||||
|
- ca-certificates
|
||||||
|
- mock
|
||||||
|
|
||||||
|
- copy: src=files/fedpkg-copr.conf dest=/etc/rpkg/fedpkg-copr.conf
|
||||||
|
|
||||||
|
- name: put updated mock configs into /etc/mock
|
||||||
|
template: src=files/mock/{{ item }} dest=/etc/mock
|
||||||
|
with_items:
|
||||||
|
- site-defaults.cfg
|
||||||
|
- fedora-23-ppc64le.cfg
|
||||||
|
- fedora-24-ppc64le.cfg
|
||||||
|
- fedora-rawhide-ppc64le.cfg
|
||||||
|
|
||||||
|
# ansible doesn't support simultaneously usage of async and with_* options
|
||||||
|
# it's not even planned for implementation, see https://github.com/ansible/ansible/issues/5841
|
||||||
|
- name: prepare cache
|
||||||
|
when: prepare_base_image is defined
|
||||||
|
async: 14400
|
||||||
|
shell: "for i in fedora-23-ppc64le fedora-24-ppc64le fedora-rawhide-ppc64le; do mock --init -r $i; done"
|
||||||
|
|
||||||
|
- name: mockbuilder user
|
||||||
|
user: name=mockbuilder groups=mock
|
||||||
|
|
||||||
|
- name: mockbuilder .ssh
|
||||||
|
file: state=directory path=/home/mockbuilder/.ssh mode=0700 owner=mockbuilder group=mockbuilder
|
||||||
|
|
||||||
|
- name: mockbuilder authorized_keys
|
||||||
|
authorized_key: user=mockbuilder key='{{ lookup('file', '/home/copr/provision/files/buildsys.pub') }}'
|
||||||
|
|
||||||
|
- name: root authorized_keys
|
||||||
|
authorized_key: user=root key='{{ lookup('file', '/home/copr/provision/files/buildsys.pub') }}'
|
||||||
|
|
||||||
|
- lineinfile: dest=/etc/security/limits.conf line="* soft nofile 10240" insertafter=EOF
|
||||||
|
- lineinfile: dest=/etc/security/limits.conf line="* hard nofile 10240" insertafter=EOF
|
||||||
|
|
||||||
|
- name: disable core dumps
|
||||||
|
ini_file: dest=/etc/systemd/coredump.conf section=Coredump option=Storage value=none
|
||||||
|
# notify:
|
||||||
|
# - systemctl daemon-reload
|
||||||
|
|
||||||
|
- name: 'Remove %_install_langs from /etc/rpm/macros.image-language-conf so that `yum-deprecated --installroot=<chroot-path> install glibc-all-langpacks` installs all possible locale into build chroots'
|
||||||
|
lineinfile:
|
||||||
|
dest: '/etc/rpm/macros.image-language-conf'
|
||||||
|
regexp: '^%_install_lang.*'
|
||||||
|
state: 'absent'
|
||||||
|
|
||||||
|
- name: we need to have older fedpkg till BZ 1315423 is resolved
|
||||||
|
shell: dnf install -y https://kojipkgs.fedoraproject.org//packages/fedpkg/1.20/2.fc23/noarch/fedpkg-1.20-2.fc23.noarch.rpm
|
|
@ -126,6 +126,11 @@
|
||||||
tags:
|
tags:
|
||||||
- provision_config
|
- provision_config
|
||||||
|
|
||||||
|
- name: put some files into the provision subdir
|
||||||
|
template: src="provision/nova_cloud_vars_ppc64le.yml" dest="/home/copr/provision/nova_cloud_vars_ppc64le.yml" owner=copr group=copr
|
||||||
|
tags:
|
||||||
|
- provision_config
|
||||||
|
|
||||||
- name: put fedpkg-copr.conf into the provision files
|
- name: put fedpkg-copr.conf into the provision files
|
||||||
template: src="provision/fedpkg-copr.conf" dest="/home/copr/provision/files/fedpkg-copr.conf" owner=copr group=copr
|
template: src="provision/fedpkg-copr.conf" dest="/home/copr/provision/files/fedpkg-copr.conf" owner=copr group=copr
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,14 @@ frontend_auth={{ copr_backend_password }}
|
||||||
# vm_max_check_fails=2 - when machine is consequently X times marked as failed then it is terminated
|
# vm_max_check_fails=2 - when machine is consequently X times marked as failed then it is terminated
|
||||||
# vm_terminating_timeout=600 - when machine was terminated and terminate PB did not finish within this number of second, we will run the PB once again.
|
# vm_terminating_timeout=600 - when machine was terminated and terminate PB did not finish within this number of second, we will run the PB once again.
|
||||||
|
|
||||||
|
build_groups=2
|
||||||
|
|
||||||
group0_name=PC
|
group0_name=PC
|
||||||
group0_archs=i386,x86_64,i586
|
group0_archs=i386,x86_64,i586
|
||||||
|
|
||||||
|
group1_name=PPC64LE
|
||||||
|
group1_archs=ppc64le
|
||||||
|
|
||||||
# new OS cloud, VMM based backend
|
# new OS cloud, VMM based backend
|
||||||
group0_spawn_playbook=/home/copr/provision/builderpb_nova.yml
|
group0_spawn_playbook=/home/copr/provision/builderpb_nova.yml
|
||||||
group0_terminate_playbook=/home/copr/provision/terminatepb_nova.yml
|
group0_terminate_playbook=/home/copr/provision/terminatepb_nova.yml
|
||||||
|
@ -41,24 +46,20 @@ group0_max_workers=16
|
||||||
group0_max_vm_per_user=4
|
group0_max_vm_per_user=4
|
||||||
group0_max_vm_total=12
|
group0_max_vm_total=12
|
||||||
{% else %}
|
{% else %}
|
||||||
build_groups=2
|
|
||||||
group1_name=PPC64LE
|
|
||||||
group1_archs=ppc64le
|
|
||||||
|
|
||||||
group0_max_workers=40
|
group0_max_workers=40
|
||||||
group0_max_vm_per_user=24
|
group0_max_vm_per_user=24
|
||||||
group0_max_vm_total=35
|
group0_max_vm_total=35
|
||||||
group0_vm_spawn_min_interval=5
|
group0_vm_spawn_min_interval=5
|
||||||
group0_max_spawn_processes=5
|
group0_max_spawn_processes=5
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
group1_spawn_playbook=/home/copr/provision/builderpb_ppc64le.yml
|
group1_spawn_playbook=/home/copr/provision/builderpb_nova_ppc64le.yml
|
||||||
group1_terminate_playbook=/home/copr/provision/terminatepb_ppc64le.yml
|
group1_terminate_playbook=/home/copr/provision/terminatepb_nova.yml
|
||||||
|
|
||||||
group1_max_workers=5
|
group1_max_workers=5
|
||||||
group1_max_vm_per_user=1
|
group1_max_vm_per_user=1
|
||||||
group1_max_vm_total=4
|
group1_max_vm_total=4
|
||||||
group1_max_spawn_processes=2
|
group1_max_spawn_processes=2
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
## old OS cloud, non VMM backend
|
## old OS cloud, non VMM backend
|
||||||
#group0_spawn_playbook=/home/copr/provision/builderpb.yml
|
#group0_spawn_playbook=/home/copr/provision/builderpb.yml
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
OS_AUTH_URL: "{{ copr_nova_auth_url }}"
|
||||||
|
|
||||||
|
OS_TENANT_ID: "{{ copr_nova_tenant_id }}"
|
||||||
|
OS_TENANT_NAME: "{{ copr_nova_tenant_name }}"
|
||||||
|
|
||||||
|
OS_USERNAME: "{{ copr_nova_username }}"
|
||||||
|
|
||||||
|
# remove default values after transition to the new cloud is finished
|
||||||
|
OS_PASSWORD_OLD: "{{ copr_nova_password|default('variable OS_PASSWORD_OLD is undefined') }}"
|
||||||
|
OS_PASSWORD: "{{ copr_password|default('variable OS_PASSWORD is undefined')}}"
|
||||||
|
|
||||||
|
|
||||||
|
image_name: "builder-f24-ppc64le"
|
||||||
|
flavor_name: "{{ copr_builder_flavor_name }}"
|
||||||
|
network_name: "{{ copr_builder_network_name }}"
|
||||||
|
key_name: "{{ copr_builder_key_name }}"
|
||||||
|
security_groups: "{{ copr_builder_security_groups }}"
|
Loading…
Add table
Add a link
Reference in a new issue