From c7c51d5100e8eba93337c34bd9eb101ec4cf70df Mon Sep 17 00:00:00 2001 From: Malanik Jan Date: Tue, 18 Jul 2017 12:54:10 -0400 Subject: yardstick setup ansible, including load_images also update to cirros 0.3.5 added PROX compilation add create_node_pod_yaml role JIRA: YARDSTICK-639 Change-Id: If5999841287a54c7e5c64a7cc487c6394df90424 Signed-off-by: Malanik Jan Signed-off-by: Ross Brattain --- ansible/roles/create_dockerfile/tasks/main.yml | 82 ++++++++++++++++++++++ .../create_dockerfile/templates/centos/Dockerfile | 69 ++++++++++++++++++ .../create_dockerfile/templates/ubuntu/Dockerfile | 82 ++++++++++++++++++++++ 3 files changed, 233 insertions(+) create mode 100644 ansible/roles/create_dockerfile/tasks/main.yml create mode 100644 ansible/roles/create_dockerfile/templates/centos/Dockerfile create mode 100644 ansible/roles/create_dockerfile/templates/ubuntu/Dockerfile (limited to 'ansible/roles/create_dockerfile') diff --git a/ansible/roles/create_dockerfile/tasks/main.yml b/ansible/roles/create_dockerfile/tasks/main.yml new file mode 100644 index 000000000..d48f7be3f --- /dev/null +++ b/ansible/roles/create_dockerfile/tasks/main.yml @@ -0,0 +1,82 @@ +# Copyright (c) 2017 Intel Corporation. +# +# 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. +--- +- set_fact: + yardstick_image_name: "yardstick_python{{ python_version }}_{{ target_os }}" + tags: + - create_template + +- debug: var=docker_build_dir + +- file: dest="{{ docker_build_dir }}" state=directory + tags: + - create_template + +- template: "src={{ target_os }}/Dockerfile dest={{ docker_build_dir }}/Dockerfile" + tags: + - create_template + +- name: bootstrap repos + template: "src=Ubuntu-repos.j2 dest={{ docker_build_dir}}/sources.list" + when: use_ext == "intr" + +- name: Create apt.conf.d/ proxy config + template: + src: apt_conf.j2 + dest: "{{ docker_build_dir }}/20proxy" + when: "'http_proxy' in proxy_env" + +- name: set pip mirror + template: "src=pip.conf.j2 dest={{ docker_build_dir }}/pip.conf" + when: pip_mirror_url is defined and pip_mirror_url + +- name: easy_utils mirror + template: "src=pydistutils.cfg.j2 dest={{ docker_build_dir }}/pydistutils.cfg" + when: pip_mirror_url is defined and pip_mirror_url + +- set_fact: + yardstick_base: "{{ docker_registry ~ '/' if docker_registry|default('') else '' }}{{ yardstick_image_name}}" + + +- set_fact: + yardstick_base_tag: "{{ docker_image_tag|default('v1') }}" + +- debug: var=yardstick_base + +#- command: "docker build {{ docker_build_dir }}" +#- fail: msg="don't build" + +- docker_image: + name: "{{ yardstick_base }}" + tag: "{{ yardstick_base_tag }}" + path: "{{ docker_build_dir }}" + state: present + force: yes + rm: true + # push is broken, manually push + push: no + ignore_errors: yes + register: docker_image_results + when: not release +- debug: var=docker_image_results + +- name: manual push image + command: docker push {{ yardstick_base }} + when: not release and docker_image_results|changed + register: docker_image_push + tags: + - push_image + +- debug: var=docker_image_push + diff --git a/ansible/roles/create_dockerfile/templates/centos/Dockerfile b/ansible/roles/create_dockerfile/templates/centos/Dockerfile new file mode 100644 index 000000000..ca104c8f8 --- /dev/null +++ b/ansible/roles/create_dockerfile/templates/centos/Dockerfile @@ -0,0 +1,69 @@ +############################################################################## +# Copyright (c) 2017 Intel Corporation +# +# 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 +############################################################################## + +FROM centos:7.3.1611 + +LABEL image=opnfv/yardstick + +ARG BRANCH=master + +# GIT repo directory +ENV REPOS_DIR /home/opnfv/repos + +# Yardstick repo +ENV YARDSTICK_REPO_DIR ${REPOS_DIR}/yardstick +ENV RELENG_REPO_DIR ${REPOS_DIR}/releng + +RUN yum -y install\ + deltarpm \ + wget \ + expect \ + curl \ + git \ + sshpass \ + ansible \ + qemu-kvm \ + qemu-utils \ + kpartx \ + libffi-devel \ + openssl-devel \ + zeromq2-devel \ + python \ + python-devel \ + libxml2-devel \ + libxslt-devel \ + nginx \ + uwsgi \ + uwsgi-plugin-python \ + supervisor \ + ansible \ + python-setuptools && \ + easy_install -U setuptools==30.0.0 && \ + yum clean all + +RUN mkdir -p ${REPOS_DIR} && \ + git config --global http.sslVerify false && \ + git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/yardstick ${YARDSTICK_REPO_DIR} && \ + git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO_DIR} + +# install yardstick + dependencies +# explicity pin pip version to avoid future issues like the ill-fated pip 8.0.0 release +RUN easy_install -U "pip==${PIP_VERSION}" && \ + pip install -r ${YARDSTICK_REPO_DIR}/requirements.txt && \ + pip install ${YARDSTICK_REPO_DIR} + +RUN ${YARDSTICK_REPO_DIR}/api/api-prepare.sh + +EXPOSE 5000 + +ADD http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img /home/opnfv/images/ +ADD http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img /home/opnfv/images/ + +COPY ./exec_tests.sh /usr/local/bin/ +CMD ["/usr/bin/supervisord"] diff --git a/ansible/roles/create_dockerfile/templates/ubuntu/Dockerfile b/ansible/roles/create_dockerfile/templates/ubuntu/Dockerfile new file mode 100644 index 000000000..7fbc4f01a --- /dev/null +++ b/ansible/roles/create_dockerfile/templates/ubuntu/Dockerfile @@ -0,0 +1,82 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB 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 +############################################################################## + +FROM ubuntu:16.04 + +LABEL image=opnfv/yardstick + +ARG BRANCH=master + +# GIT repo directory +ENV REPOS_DIR /home/opnfv/repos + +# Yardstick repo +ENV YARDSTICK_REPO_DIR ${REPOS_DIR}/yardstick +ENV RELENG_REPO_DIR ${REPOS_DIR}/releng +RUN sed -i -e 's/^deb /deb [arch=amd64] /g;s/^deb-src /# deb-src /g' /etc/apt/sources.list && \ + echo "\n\ +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty main universe multiverse restricted \n\ +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main universe multiverse restricted \n\ +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-security main universe multiverse restricted \n\ +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-proposed main universe multiverse restricted" >> /etc/apt/sources.list && \ + dpkg --add-architecture arm64 + +# WHY? Is this workaround still needed? +# https://wiki.debian.org/mmap_min_addr#apps +# qemu, as shipped in Debian 5.0, requires low virtual memory mmaps. mmap_min_addr must be set to 0 to run qemu as a non-root user. This limitation has been removed upstream, so qemu should work with an increased mmap_min_addr starting with Debian squeeze. +#RUN echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf + +# This will prevent questions from being asked during the install +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y \ + qemu-user-static \ + libc6:arm64 \ + wget \ + expect \ + curl \ + git \ + sshpass \ + qemu-utils \ + kpartx \ + libffi-dev \ + libssl-dev \ + libzmq-dev \ + python \ + python-dev \ + libxml2-dev \ + libxslt1-dev \ + nginx \ + uwsgi \ + uwsgi-plugin-python \ + supervisor \ + python-setuptools && \ + easy_install -U setuptools==30.0.0 && \ + apt-get -y autoremove && \ + apt-get clean + +RUN mkdir -p ${REPOS_DIR} && \ + git config --global http.sslVerify false && \ + git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/yardstick ${YARDSTICK_REPO_DIR} && \ + git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO_DIR} + +# install yardstick + dependencies +# explicity pin pip version to avoid future issues like the ill-fated pip 8.0.0 release +RUN easy_install -U "pip==${PIP_VERSION}" && \ + pip install -r ${YARDSTICK_REPO_DIR}/requirements.txt && \ + pip install ${YARDSTICK_REPO_DIR} + +RUN ${YARDSTICK_REPO_DIR}/api/api-prepare.sh + +EXPOSE 5000 + +ADD http://download.cirros-cloud.net/0.3.3/cirros-0.3.5-x86_64-disk.img /home/opnfv/images/ +ADD http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img /home/opnfv/images/ + +COPY ./exec_tests.sh /usr/local/bin/ +CMD ["/usr/bin/supervisord"] -- cgit 1.2.3-korg