[libvirt] [libvirt-jenkins-ci PATCH 01/18] ansible: Add initial support

Andrea Bolognani abologna at redhat.com
Mon Oct 2 15:10:39 UTC 2017


This commit adds just enough to bootstrap Jenkins workers and install
packages required to build any project, such as gcc and make.

Ubuntu 12-16 are supported, even though they're not actually used in
libvirt CI, because there's a lot of overlap between this and Travis
CI, which only supports Ubuntu instead.

Signed-off-by: Andrea Bolognani <abologna at redhat.com>
---
 ansible/.gitignore                                |  3 +
 ansible/Makefile                                  | 12 ++++
 ansible/ansible.cfg                               |  8 +++
 ansible/bootstrap.yml                             | 17 +++++
 ansible/group_vars/all/main.yml                   |  8 +++
 ansible/host_vars/libvirt-centos-6/main.yml       |  3 +
 ansible/host_vars/libvirt-centos-7/main.yml       |  3 +
 ansible/host_vars/libvirt-debian-8/main.yml       |  3 +
 ansible/host_vars/libvirt-debian-9/main.yml       |  3 +
 ansible/host_vars/libvirt-fedora-25/main.yml      |  3 +
 ansible/host_vars/libvirt-fedora-26/main.yml      |  3 +
 ansible/host_vars/libvirt-fedora-rawhide/main.yml |  3 +
 ansible/host_vars/libvirt-freebsd-11/main.yml     | 10 +++
 ansible/host_vars/libvirt-ubuntu-12/main.yml      |  3 +
 ansible/host_vars/libvirt-ubuntu-14/main.yml      |  3 +
 ansible/host_vars/libvirt-ubuntu-16/main.yml      |  3 +
 ansible/inventory                                 |  8 +++
 ansible/site.yml                                  | 17 +++++
 ansible/tasks/base.yml                            | 77 +++++++++++++++++++++++
 ansible/tasks/bootstrap.yml                       | 22 +++++++
 ansible/tasks/facts.yml                           | 14 +++++
 ansible/tasks/packages.yml                        | 11 ++++
 ansible/vars/base/CentOS-6.yml                    | 13 ++++
 ansible/vars/base/CentOS-7.yml                    | 13 ++++
 ansible/vars/base/Debian-8.yml                    | 14 +++++
 ansible/vars/base/Debian-9.yml                    | 14 +++++
 ansible/vars/base/Fedora-25.yml                   | 15 +++++
 ansible/vars/base/Fedora-26.yml                   | 15 +++++
 ansible/vars/base/Fedora-Rawhide.yml              | 15 +++++
 ansible/vars/base/FreeBSD-11.yml                  | 11 ++++
 ansible/vars/base/Ubuntu-12.yml                   | 13 ++++
 ansible/vars/base/Ubuntu-14.yml                   | 13 ++++
 ansible/vars/base/Ubuntu-16.yml                   | 14 +++++
 33 files changed, 387 insertions(+)
 create mode 100644 ansible/.gitignore
 create mode 100644 ansible/Makefile
 create mode 100644 ansible/ansible.cfg
 create mode 100644 ansible/bootstrap.yml
 create mode 100644 ansible/group_vars/all/main.yml
 create mode 100644 ansible/host_vars/libvirt-centos-6/main.yml
 create mode 100644 ansible/host_vars/libvirt-centos-7/main.yml
 create mode 100644 ansible/host_vars/libvirt-debian-8/main.yml
 create mode 100644 ansible/host_vars/libvirt-debian-9/main.yml
 create mode 100644 ansible/host_vars/libvirt-fedora-25/main.yml
 create mode 100644 ansible/host_vars/libvirt-fedora-26/main.yml
 create mode 100644 ansible/host_vars/libvirt-fedora-rawhide/main.yml
 create mode 100644 ansible/host_vars/libvirt-freebsd-11/main.yml
 create mode 100644 ansible/host_vars/libvirt-ubuntu-12/main.yml
 create mode 100644 ansible/host_vars/libvirt-ubuntu-14/main.yml
 create mode 100644 ansible/host_vars/libvirt-ubuntu-16/main.yml
 create mode 100644 ansible/inventory
 create mode 100644 ansible/site.yml
 create mode 100644 ansible/tasks/base.yml
 create mode 100644 ansible/tasks/bootstrap.yml
 create mode 100644 ansible/tasks/facts.yml
 create mode 100644 ansible/tasks/packages.yml
 create mode 100644 ansible/vars/base/CentOS-6.yml
 create mode 100644 ansible/vars/base/CentOS-7.yml
 create mode 100644 ansible/vars/base/Debian-8.yml
 create mode 100644 ansible/vars/base/Debian-9.yml
 create mode 100644 ansible/vars/base/Fedora-25.yml
 create mode 100644 ansible/vars/base/Fedora-26.yml
 create mode 100644 ansible/vars/base/Fedora-Rawhide.yml
 create mode 100644 ansible/vars/base/FreeBSD-11.yml
 create mode 100644 ansible/vars/base/Ubuntu-12.yml
 create mode 100644 ansible/vars/base/Ubuntu-14.yml
 create mode 100644 ansible/vars/base/Ubuntu-16.yml

diff --git a/ansible/.gitignore b/ansible/.gitignore
new file mode 100644
index 0000000..4a271f2
--- /dev/null
+++ b/ansible/.gitignore
@@ -0,0 +1,3 @@
+*.retry
+*.swp
+log
diff --git a/ansible/Makefile b/ansible/Makefile
new file mode 100644
index 0000000..39ebe52
--- /dev/null
+++ b/ansible/Makefile
@@ -0,0 +1,12 @@
+all:
+
+site:
+	@ansible-playbook site.yml
+
+bootstrap:
+	@ansible-playbook --ask-pass bootstrap.yml
+
+clean:
+	@rm -f *.retry log
+
+.PHONY: all site bootstrap clean
diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg
new file mode 100644
index 0000000..ca02677
--- /dev/null
+++ b/ansible/ansible.cfg
@@ -0,0 +1,8 @@
+[defaults]
+display_skipped_hosts = False
+forks = 16
+inventory = ./inventory
+log_path = ./log
+nocows = 1
+pipelining = True
+squash_actions = package
diff --git a/ansible/bootstrap.yml b/ansible/bootstrap.yml
new file mode 100644
index 0000000..67c359d
--- /dev/null
+++ b/ansible/bootstrap.yml
@@ -0,0 +1,17 @@
+---
+- hosts: all
+  gather_facts: no
+
+  tasks:
+
+    # Bootstrap Ansible itself
+    - include: tasks/bootstrap.yml
+
+
+- hosts: all
+
+  tasks:
+
+    # Prepare the base environment
+    - include: tasks/facts.yml
+    - include: tasks/base.yml
diff --git a/ansible/group_vars/all/main.yml b/ansible/group_vars/all/main.yml
new file mode 100644
index 0000000..e8d3cb6
--- /dev/null
+++ b/ansible/group_vars/all/main.yml
@@ -0,0 +1,8 @@
+---
+ansible_user: root
+
+# Paths to various command. Can be overridden on a per-host basis
+bash: /bin/bash
+java: /usr/bin/java
+make: /usr/bin/make
+sudo: /usr/bin/sudo
diff --git a/ansible/host_vars/libvirt-centos-6/main.yml b/ansible/host_vars/libvirt-centos-6/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-centos-6/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-centos-7/main.yml b/ansible/host_vars/libvirt-centos-7/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-centos-7/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-debian-8/main.yml b/ansible/host_vars/libvirt-debian-8/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-debian-8/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-debian-9/main.yml b/ansible/host_vars/libvirt-debian-9/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-debian-9/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-fedora-25/main.yml b/ansible/host_vars/libvirt-fedora-25/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-fedora-25/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-fedora-26/main.yml b/ansible/host_vars/libvirt-fedora-26/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-fedora-26/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-fedora-rawhide/main.yml b/ansible/host_vars/libvirt-fedora-rawhide/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-fedora-rawhide/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-freebsd-11/main.yml b/ansible/host_vars/libvirt-freebsd-11/main.yml
new file mode 100644
index 0000000..d405d58
--- /dev/null
+++ b/ansible/host_vars/libvirt-freebsd-11/main.yml
@@ -0,0 +1,10 @@
+---
+ansible_python_interpreter: /usr/local/bin/python2
+
+bash: /usr/local/bin/bash
+java: /usr/local/bin/java
+make: /usr/local/bin/gmake
+sudo: /usr/local/bin/sudo
+
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-ubuntu-12/main.yml b/ansible/host_vars/libvirt-ubuntu-12/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-ubuntu-12/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-ubuntu-14/main.yml b/ansible/host_vars/libvirt-ubuntu-14/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-ubuntu-14/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/host_vars/libvirt-ubuntu-16/main.yml b/ansible/host_vars/libvirt-ubuntu-16/main.yml
new file mode 100644
index 0000000..1602406
--- /dev/null
+++ b/ansible/host_vars/libvirt-ubuntu-16/main.yml
@@ -0,0 +1,3 @@
+---
+projects:
+  - base
diff --git a/ansible/inventory b/ansible/inventory
new file mode 100644
index 0000000..3becfa0
--- /dev/null
+++ b/ansible/inventory
@@ -0,0 +1,8 @@
+libvirt-centos-7
+libvirt-centos-6
+libvirt-debian-9
+libvirt-debian-8
+libvirt-fedora-rawhide
+libvirt-fedora-26
+libvirt-fedora-25
+libvirt-freebsd-11
diff --git a/ansible/site.yml b/ansible/site.yml
new file mode 100644
index 0000000..27af6de
--- /dev/null
+++ b/ansible/site.yml
@@ -0,0 +1,17 @@
+---
+- hosts: all
+
+  tasks:
+
+    # Prepare the base environment
+    - include: tasks/facts.yml
+    - include: tasks/base.yml
+
+    # Install build dependencies for each project
+    - include: tasks/packages.yml
+      with_items:
+        '{{ projects }}'
+      loop_control:
+        loop_var: project
+      when:
+        - projects is defined
diff --git a/ansible/tasks/base.yml b/ansible/tasks/base.yml
new file mode 100644
index 0000000..989c5a6
--- /dev/null
+++ b/ansible/tasks/base.yml
@@ -0,0 +1,77 @@
+---
+- name: Bootstrap the package module
+  command: dnf install -y python2-dnf
+  args:
+    creates: /usr/lib*/python2*/*-packages/dnf
+  when:
+    - os_name == 'Fedora'
+
+- name: Bootstrap the package module
+  command: apt-get install -y python-apt
+  args:
+    creates: /usr/lib/python2*/*-packages/apt
+  when:
+    - ( os_name == 'Debian' or
+        os_name == 'Ubuntu' )
+
+- name: Update installed packages
+  package:
+    name: '*'
+    state: latest
+  when:
+    - ( os_name == 'CentOS' or
+        os_name == 'Fedora' )
+
+- name: Update installed packages
+  apt:
+    upgrade: dist
+    update_cache: yes
+  when:
+    - ( os_name == 'Debian' or
+        os_name == 'Ubuntu' )
+
+- name: Update installed packages
+  shell: pkg update && pkg upgrade -y
+  when:
+    - os_name == 'FreeBSD'
+
+- name: Install base packages
+  package:
+    name: '{{ item }}'
+    state: present
+  with_items:
+    - bash
+    - git
+    - screen
+    - sudo
+    - vim
+
+- name: Remove unwanted packages
+  package:
+    name: '{{ item }}'
+    state: absent
+  with_items:
+    - nano
+
+- name: Permit file editing on SELinux-enabled systems
+  package:
+    name: libselinux-python
+    state: present
+  when:
+    - ( os_name == 'CentOS' or
+        os_name == 'Fedora' )
+
+- name: Configure hostname
+  hostname:
+    name: '{{ inventory_hostname }}'
+
+- name: Configure root shell
+  user:
+    name: root
+    shell: '{{ bash }}'
+
+- name: Configure ssh access for the root user
+  authorized_key:
+    user: root
+    key: '{{ lookup("file", lookup("env", "HOME") + "/.ssh/id_rsa.pub") }}'
+    state: present
diff --git a/ansible/tasks/bootstrap.yml b/ansible/tasks/bootstrap.yml
new file mode 100644
index 0000000..24848c8
--- /dev/null
+++ b/ansible/tasks/bootstrap.yml
@@ -0,0 +1,22 @@
+---
+- name: Bootstrap the pkgng package manager
+  raw: env ASSUME_ALWAYS_YES=YES pkg bootstrap
+  when:
+    - inventory_hostname|search('freebsd')
+
+- name: Bootstrap Ansible
+  raw: yum install -y python2
+  when:
+    - ( inventory_hostname|search('centos') or
+        inventory_hostname|search('fedora') )
+
+- name: Bootstrap Ansible
+  raw: apt-get install -y python
+  when:
+    - ( inventory_hostname|search('debian') or
+        inventory_hostname|search('ubuntu') )
+
+- name: Bootstrap Ansible
+  raw: pkg install -y python2
+  when:
+    - inventory_hostname|search('freebsd')
diff --git a/ansible/tasks/facts.yml b/ansible/tasks/facts.yml
new file mode 100644
index 0000000..223aa1e
--- /dev/null
+++ b/ansible/tasks/facts.yml
@@ -0,0 +1,14 @@
+---
+- name: Set additional facts
+  set_fact:
+    os_name: '{{ ansible_distribution }}'
+    os_version: '{{ ansible_distribution_major_version }}'
+  when:
+    - ansible_distribution_release != 'Rawhide'
+
+- name: Set additional facts
+  set_fact:
+    os_name: '{{ ansible_distribution }}'
+    os_version: Rawhide
+  when:
+    - ansible_distribution_release == 'Rawhide'
diff --git a/ansible/tasks/packages.yml b/ansible/tasks/packages.yml
new file mode 100644
index 0000000..630d794
--- /dev/null
+++ b/ansible/tasks/packages.yml
@@ -0,0 +1,11 @@
+---
+- name: '{{ project }}: Load variables'
+  include_vars:
+    file: 'vars/{{ project }}/{{ os_name }}-{{ os_version }}.yml'
+
+- name: '{{ project }}: Install packages'
+  package:
+    name: '{{ item }}'
+    state: present
+  with_items:
+    '{{ packages }}'
diff --git a/ansible/vars/base/CentOS-6.yml b/ansible/vars/base/CentOS-6.yml
new file mode 100644
index 0000000..b107a8f
--- /dev/null
+++ b/ansible/vars/base/CentOS-6.yml
@@ -0,0 +1,13 @@
+---
+packages:
+  - autoconf
+  - automake
+  - gcc
+  - gettext
+  - gettext-devel
+  - glibc-devel
+  - libtool
+  - make
+  - patch
+  - pkgconfig
+  - rpm-build
diff --git a/ansible/vars/base/CentOS-7.yml b/ansible/vars/base/CentOS-7.yml
new file mode 100644
index 0000000..b107a8f
--- /dev/null
+++ b/ansible/vars/base/CentOS-7.yml
@@ -0,0 +1,13 @@
+---
+packages:
+  - autoconf
+  - automake
+  - gcc
+  - gettext
+  - gettext-devel
+  - glibc-devel
+  - libtool
+  - make
+  - patch
+  - pkgconfig
+  - rpm-build
diff --git a/ansible/vars/base/Debian-8.yml b/ansible/vars/base/Debian-8.yml
new file mode 100644
index 0000000..b36ade7
--- /dev/null
+++ b/ansible/vars/base/Debian-8.yml
@@ -0,0 +1,14 @@
+---
+packages:
+  - autoconf
+  - automake
+  - autopoint
+  - ccache
+  - gcc
+  - gettext
+  - libc6-dev
+  - libtool
+  - libtool-bin
+  - make
+  - patch
+  - pkgconf
diff --git a/ansible/vars/base/Debian-9.yml b/ansible/vars/base/Debian-9.yml
new file mode 100644
index 0000000..b36ade7
--- /dev/null
+++ b/ansible/vars/base/Debian-9.yml
@@ -0,0 +1,14 @@
+---
+packages:
+  - autoconf
+  - automake
+  - autopoint
+  - ccache
+  - gcc
+  - gettext
+  - libc6-dev
+  - libtool
+  - libtool-bin
+  - make
+  - patch
+  - pkgconf
diff --git a/ansible/vars/base/Fedora-25.yml b/ansible/vars/base/Fedora-25.yml
new file mode 100644
index 0000000..733efa8
--- /dev/null
+++ b/ansible/vars/base/Fedora-25.yml
@@ -0,0 +1,15 @@
+---
+packages:
+  - autoconf
+  - automake
+  - ccache
+  - cppi
+  - gcc
+  - gettext
+  - gettext-devel
+  - glibc-devel
+  - libtool
+  - make
+  - patch
+  - pkgconfig
+  - rpm-build
diff --git a/ansible/vars/base/Fedora-26.yml b/ansible/vars/base/Fedora-26.yml
new file mode 100644
index 0000000..733efa8
--- /dev/null
+++ b/ansible/vars/base/Fedora-26.yml
@@ -0,0 +1,15 @@
+---
+packages:
+  - autoconf
+  - automake
+  - ccache
+  - cppi
+  - gcc
+  - gettext
+  - gettext-devel
+  - glibc-devel
+  - libtool
+  - make
+  - patch
+  - pkgconfig
+  - rpm-build
diff --git a/ansible/vars/base/Fedora-Rawhide.yml b/ansible/vars/base/Fedora-Rawhide.yml
new file mode 100644
index 0000000..733efa8
--- /dev/null
+++ b/ansible/vars/base/Fedora-Rawhide.yml
@@ -0,0 +1,15 @@
+---
+packages:
+  - autoconf
+  - automake
+  - ccache
+  - cppi
+  - gcc
+  - gettext
+  - gettext-devel
+  - glibc-devel
+  - libtool
+  - make
+  - patch
+  - pkgconfig
+  - rpm-build
diff --git a/ansible/vars/base/FreeBSD-11.yml b/ansible/vars/base/FreeBSD-11.yml
new file mode 100644
index 0000000..e8c6315
--- /dev/null
+++ b/ansible/vars/base/FreeBSD-11.yml
@@ -0,0 +1,11 @@
+---
+packages:
+  - autoconf
+  - automake
+  - ccache
+  - cppi
+  - gettext
+  - gettext-tools
+  - gmake
+  - libtool
+  - pkgconf
diff --git a/ansible/vars/base/Ubuntu-12.yml b/ansible/vars/base/Ubuntu-12.yml
new file mode 100644
index 0000000..3b87b33
--- /dev/null
+++ b/ansible/vars/base/Ubuntu-12.yml
@@ -0,0 +1,13 @@
+---
+packages:
+  - autoconf
+  - automake
+  - autopoint
+  - ccache
+  - gcc
+  - gettext
+  - libc6-dev
+  - libtool
+  - make
+  - patch
+  - pkg-config
diff --git a/ansible/vars/base/Ubuntu-14.yml b/ansible/vars/base/Ubuntu-14.yml
new file mode 100644
index 0000000..da5a6ff
--- /dev/null
+++ b/ansible/vars/base/Ubuntu-14.yml
@@ -0,0 +1,13 @@
+---
+packages:
+  - autoconf
+  - automake
+  - autopoint
+  - ccache
+  - gcc
+  - gettext
+  - libc6-dev
+  - libtool
+  - make
+  - patch
+  - pkgconf
diff --git a/ansible/vars/base/Ubuntu-16.yml b/ansible/vars/base/Ubuntu-16.yml
new file mode 100644
index 0000000..b36ade7
--- /dev/null
+++ b/ansible/vars/base/Ubuntu-16.yml
@@ -0,0 +1,14 @@
+---
+packages:
+  - autoconf
+  - automake
+  - autopoint
+  - ccache
+  - gcc
+  - gettext
+  - libc6-dev
+  - libtool
+  - libtool-bin
+  - make
+  - patch
+  - pkgconf
-- 
2.13.6




More information about the libvir-list mailing list