summaryrefslogtreecommitdiffstats
path: root/roles/copr/backend/files/provision
diff options
context:
space:
mode:
authorclime <clime@redhat.com>2016-08-01 03:29:13 +0200
committerPatrick Uiterwijk <puiterwijk@redhat.com>2016-08-09 17:22:25 +0000
commitbe9604673a7463cdd33d82003bcd1060f4060090 (patch)
tree4a471b97d4c1c95c8cbc0961a5d5cee251c353b7 /roles/copr/backend/files/provision
parent72dba8a671b8cda16c5583b22031a78d0f6bd6e5 (diff)
downloadansible-be9604673a7463cdd33d82003bcd1060f4060090.tar.gz
ansible-be9604673a7463cdd33d82003bcd1060f4060090.tar.xz
ansible-be9604673a7463cdd33d82003bcd1060f4060090.zip
integrate OpenStack ppc64le builders into COPR
Diffstat (limited to 'roles/copr/backend/files/provision')
-rw-r--r--roles/copr/backend/files/provision/builderpb_nova_ppc64le.yml47
-rw-r--r--roles/copr/backend/files/provision/files/mock/fedora-23-ppc64le.cfg73
-rw-r--r--roles/copr/backend/files/provision/files/mock/fedora-24-ppc64le.cfg71
-rw-r--r--roles/copr/backend/files/provision/files/mock/fedora-rawhide-ppc64le.cfg43
-rw-r--r--roles/copr/backend/files/provision/provision_builder_tasks_ppc64le.yml91
5 files changed, 325 insertions, 0 deletions
diff --git a/roles/copr/backend/files/provision/builderpb_nova_ppc64le.yml b/roles/copr/backend/files/provision/builderpb_nova_ppc64le.yml
new file mode 100644
index 000000000..dc91142cf
--- /dev/null
+++ b/roles/copr/backend/files/provision/builderpb_nova_ppc64le.yml
@@ -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
diff --git a/roles/copr/backend/files/provision/files/mock/fedora-23-ppc64le.cfg b/roles/copr/backend/files/provision/files/mock/fedora-23-ppc64le.cfg
new file mode 100644
index 000000000..2f073f1fa
--- /dev/null
+++ b/roles/copr/backend/files/provision/files/mock/fedora-23-ppc64le.cfg
@@ -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
+"""
diff --git a/roles/copr/backend/files/provision/files/mock/fedora-24-ppc64le.cfg b/roles/copr/backend/files/provision/files/mock/fedora-24-ppc64le.cfg
new file mode 100644
index 000000000..2d914619b
--- /dev/null
+++ b/roles/copr/backend/files/provision/files/mock/fedora-24-ppc64le.cfg
@@ -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
+"""
diff --git a/roles/copr/backend/files/provision/files/mock/fedora-rawhide-ppc64le.cfg b/roles/copr/backend/files/provision/files/mock/fedora-rawhide-ppc64le.cfg
new file mode 100644
index 000000000..3f8d038a1
--- /dev/null
+++ b/roles/copr/backend/files/provision/files/mock/fedora-rawhide-ppc64le.cfg
@@ -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
+"""
diff --git a/roles/copr/backend/files/provision/provision_builder_tasks_ppc64le.yml b/roles/copr/backend/files/provision/provision_builder_tasks_ppc64le.yml
new file mode 100644
index 000000000..dc710b5e0
--- /dev/null
+++ b/roles/copr/backend/files/provision/provision_builder_tasks_ppc64le.yml
@@ -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