Ansible Playbook to install build server deps 47/49747/8
authoragardner <agardner@linuxfoundation.org>
Thu, 28 Dec 2017 23:54:04 +0000 (18:54 -0500)
committeragardner <agardner@linuxfoundation.org>
Mon, 5 Feb 2018 20:45:53 +0000 (15:45 -0500)
This playbook has been tested in centos and ubuntu
on Arm and x86_64

first:
install ansible
then:
ansible-playbook -i inventory.ini main.yml

What it does:
installs on centos or ubuntu arm or x86_64

installs system deps with the package manager.
and python libs with pip.

installs docker
https://download.docker.com

installs docker-compose from distribution repo

Change-Id: I3853cd04d0e6c7270ea068b9e1fba1a240a0652e
Signed-off-by: agardner <agardner@linuxfoundation.org>
utils/build-server-ansible/inventory.ini [new file with mode: 0644]
utils/build-server-ansible/main.yml [new file with mode: 0644]
utils/build-server-ansible/vars/CentOS.yml [new file with mode: 0644]
utils/build-server-ansible/vars/Ubuntu.yml [new file with mode: 0644]
utils/build-server-ansible/vars/defaults.yml [new file with mode: 0644]
utils/build-server-ansible/vars/docker-compose-Centos.yml [new file with mode: 0644]
utils/build-server-ansible/vars/docker-compose-Ubuntu.yml [new file with mode: 0644]

diff --git a/utils/build-server-ansible/inventory.ini b/utils/build-server-ansible/inventory.ini
new file mode 100644 (file)
index 0000000..115b130
--- /dev/null
@@ -0,0 +1,8 @@
+#############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+localhost              ansible_connection=local
diff --git a/utils/build-server-ansible/main.yml b/utils/build-server-ansible/main.yml
new file mode 100644 (file)
index 0000000..0fcce71
--- /dev/null
@@ -0,0 +1,37 @@
+############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+#############################################################################
+---
+- hosts: "localhost"
+  become: "True"
+  tasks:
+    - debug:
+        msg: "{{ inventory_hostname }} is {{ ansible_distribution }}"
+    - include_vars: vars/defaults.yml
+    - include: vars/CentOS.yml
+      when: ansible_distribution == "CentOS"
+    - include: vars/Ubuntu.yml
+      when: ansible_distribution == "Ubuntu"
+    - name: Install Docker.
+      package: name={{ docker_package }} state={{ docker_package_state }}
+    - name: Ensure Docker is started and enabled at boot.
+      service:
+        name: docker
+        state: started
+        enabled: "yes"
+    - name: install gsutil
+      pip:
+        name: gsutil
+        state: present
+    - name: install tox
+      pip:
+        name: tox
+        state: present
+    - include: vars/docker-compose-CentOS.yml
+      when: ansible_distribution == "CentOS"
+    - include: vars/docker-compose-Ubuntu.yml
+      when: ansible_distribution == "Ubuntu"
diff --git a/utils/build-server-ansible/vars/CentOS.yml b/utils/build-server-ansible/vars/CentOS.yml
new file mode 100644 (file)
index 0000000..0d5a011
--- /dev/null
@@ -0,0 +1,72 @@
+############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+############################################################################
+---
+- name: Ensure old versions of Docker are not installed.
+  package:
+    name: '{{ item }}'
+    state: absent
+  with_items:
+    - docker
+    - docker-common
+    - docker-engine
+
+- name: Add Docker GPG key.
+  rpm_key:
+    key: https://download.docker.com/linux/centos/gpg
+    state: present
+
+- name: Ensure epel is installed.
+  yum:
+    name: epel-release
+    state: present
+- name: Ensure depdencies are installed.
+  yum:
+    name: "{{ item }}"
+    state: present
+  with_items:
+    - python-pip
+    - rpm-build
+    - kernel-headers
+    - libpcap-devel
+    - zlib-devel
+    - numactl-devel
+    - doxygen
+    - python-sphinx
+    - libvirt-devel
+    - python-devel
+    - openssl-devel
+    - python-six
+    - net-tools
+    - bc
+
+- name: install the 'Development tools' package group
+  yum:
+    name: "@Development tools"
+    state: present
+
+- name: Add Docker repository.
+  get_url:
+    url: "{{ docker_yum_repo_url }}"
+    dest: '/etc/yum.repos.d/docker-ce.repo'
+    owner: root
+    group: root
+    mode: 0644
+
+- name: Configure Docker Edge repo.
+  ini_file:
+    dest: '/etc/yum.repos.d/docker-ce.repo'
+    section: 'docker-ce-edge'
+    option: enabled
+    value: '{{ docker_yum_repo_enable_edge }}'
+
+- name: Configure Docker Test repo.
+  ini_file:
+    dest: '/etc/yum.repos.d/docker-ce.repo'
+    section: 'docker-ce-test'
+    option: enabled
+    value: '{{ docker_yum_repo_enable_test }}'
diff --git a/utils/build-server-ansible/vars/Ubuntu.yml b/utils/build-server-ansible/vars/Ubuntu.yml
new file mode 100644 (file)
index 0000000..609c8d5
--- /dev/null
@@ -0,0 +1,84 @@
+#############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+#############################################################################
+---
+- name: Ensure old versions of Docker are not installed.
+  package:
+    name: '{{ item }}'
+    state: absent
+  with_items:
+    - docker
+    - docker-engine
+
+- name: Ensure depdencies are installed.
+  apt:
+    name: "{{ item }}"
+    state: present
+  with_items:
+    - apt-transport-https
+    - ca-certificates
+    - git
+    - build-essential
+    - curl
+    - wget
+    - rpm
+    - fuseiso
+    - createrepo
+    - genisoimage
+    - libfuse-dev
+    - dh-autoreconf
+    - pkg-config
+    - zlib1g-dev
+    - libglib2.0-dev
+    - libpixman-1-dev
+    - python-virtualenv
+    - python-dev
+    - libffi-dev
+    - libssl-dev
+    - libxml2-dev
+    - libxslt1-dev
+    - bc
+    - qemu-kvm
+    - libvirt-bin
+    - ubuntu-vm-builder
+    - bridge-utils
+    - monit
+    - openjdk-8-jre-headless
+    - python-nose
+    - dirmngr
+    - collectd
+    - flex
+    - bison
+    - libnuma-dev
+    - shellcheck
+    - python-pip
+
+- name: Add Docker apt key.
+  apt_key:
+    url: https://download.docker.com/linux/ubuntu/gpg
+    id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
+    state: present
+  register: add_repository_key
+  ignore_errors: true
+
+- name: Ensure curl is present (on older systems without SNI).
+  package: name=curl state=present
+  when: add_repository_key|failed
+
+- name: Add Docker apt key (alternative for older systems without SNI).
+  # yamllint disable rule:line-length
+  shell: "curl -sSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -"
+  # yamllint enable rule:line-length
+  args:
+    warn: "no"
+  when: add_repository_key|failed
+
+- name: Add Docker repository.
+  apt_repository:
+    repo: "{{ docker_apt_repository }}"
+    state: present
+    update_cache: "yes"
diff --git a/utils/build-server-ansible/vars/defaults.yml b/utils/build-server-ansible/vars/defaults.yml
new file mode 100644 (file)
index 0000000..8d83380
--- /dev/null
@@ -0,0 +1,23 @@
+#############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+#############################################################################
+---
+docker_package: "docker-ce"
+docker_package_state: present
+
+# Used only for Debian/Ubuntu. Switch 'stable' to 'edge' if needed.
+docker_apt_release_channel: stable
+# yamllint disable rule:line-length
+docker_apt_repository: "deb https://download.docker.com/linux/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
+# yamllint enable rule:line-length
+
+# Used only for RedHat/CentOS.
+# yamllint disable rule:line-length
+docker_yum_repo_url: https://download.docker.com/linux/centos/docker-ce.repo
+# yamllint enable rule:line-length
+docker_yum_repo_enable_edge: 0
+docker_yum_repo_enable_test: 0
diff --git a/utils/build-server-ansible/vars/docker-compose-Centos.yml b/utils/build-server-ansible/vars/docker-compose-Centos.yml
new file mode 100644 (file)
index 0000000..fc4bcba
--- /dev/null
@@ -0,0 +1,12 @@
+#############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: Ensure docker compose is installed.
+  yum:
+    name: 'docker-compose'
+    state: present
diff --git a/utils/build-server-ansible/vars/docker-compose-Ubuntu.yml b/utils/build-server-ansible/vars/docker-compose-Ubuntu.yml
new file mode 100644 (file)
index 0000000..f985b6a
--- /dev/null
@@ -0,0 +1,12 @@
+#############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+#############################################################################
+---
+- name: Ensure docker compose is installed
+  apt:
+    name: 'docker-compose'
+    state: present