summaryrefslogtreecommitdiff
path: root/contrib/test/integration
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/test/integration')
-rw-r--r--contrib/test/integration/README.md21
-rw-r--r--contrib/test/integration/ansible.cfg359
-rw-r--r--contrib/test/integration/build/bats.yml17
-rw-r--r--contrib/test/integration/build/cri-o.yml79
-rw-r--r--contrib/test/integration/build/cri-tools.yml16
-rw-r--r--contrib/test/integration/build/kubernetes.yml63
-rw-r--r--contrib/test/integration/build/plugins.yml50
-rw-r--r--contrib/test/integration/build/runc.yml23
-rw-r--r--contrib/test/integration/callback_plugins/default.py156
-rw-r--r--contrib/test/integration/e2e.yml57
-rw-r--r--contrib/test/integration/golang.yml51
-rw-r--r--contrib/test/integration/main.yml58
-rw-r--r--contrib/test/integration/results.yml62
-rw-r--r--contrib/test/integration/system.yml117
-rw-r--r--contrib/test/integration/test.yml25
-rw-r--r--contrib/test/integration/vars.yml8
16 files changed, 0 insertions, 1162 deletions
diff --git a/contrib/test/integration/README.md b/contrib/test/integration/README.md
deleted file mode 100644
index f13b8b925..000000000
--- a/contrib/test/integration/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Fedora and RHEL Integration and End-to-End Tests
-
-This directory contains playbooks to set up for and run the integration and
-end-to-end tests for CRI-O on RHEL and Fedora hosts. Two entrypoints exist:
-
- - `main.yml`: sets up the machine and runs tests
- - `results.yml`: gathers test output to `/tmp/artifacts`
-
-When running `main.yml`, three tags are present:
-
- - `setup`: run all tasks to set up the system for testing
- - `e2e`: build CRI-O from source and run Kubernetes node E2Es
- - `integration`: build CRI-O from source and run the local integration suite
-
-The playbooks assume the following things about your system:
-
- - on RHEL, the server and extras repos are configured and certs are present
- - `ansible` is installed and the host is boot-strapped to allow `ansible` to run against it
- - the `$GOPATH` is set and present for all shells (*e.g.* written in `/etc/environment`)
- - CRI-O is checked out to the correct state at `${GOPATH}/src/github.com/kubernetes-incubator/cri-o`
- - the user running the playbook has access to passwordless `sudo` \ No newline at end of file
diff --git a/contrib/test/integration/ansible.cfg b/contrib/test/integration/ansible.cfg
deleted file mode 100644
index 92a13a5fb..000000000
--- a/contrib/test/integration/ansible.cfg
+++ /dev/null
@@ -1,359 +0,0 @@
-# config file for ansible -- http://ansible.com/
-# ==============================================
-
-# nearly all parameters can be overridden in ansible-playbook
-# or with command line flags. ansible will read ANSIBLE_CONFIG,
-# ansible.cfg in the current working directory, .ansible.cfg in
-# the home directory or /etc/ansible/ansible.cfg, whichever it
-# finds first
-
-[defaults]
-
-# some basic default values...
-
-#inventory = inventory
-#library = /usr/share/my_modules/
-#remote_tmp = $HOME/.ansible/tmp
-#local_tmp = .ansible/tmp
-#forks = 5
-forks = 10
-#poll_interval = 15
-#sudo_user = root
-#ask_sudo_pass = True
-ask_sudo_pass = False
-#ask_pass = True
-ask_pass = False
-#transport = smart
-#remote_port = 22
-#module_lang = C
-#module_set_locale = True
-
-# plays will gather facts by default, which contain information about
-# the remote system.
-#
-# smart - gather by default, but don't regather if already gathered
-# implicit - gather by default, turn off with gather_facts: False
-# explicit - do not gather by default, must say gather_facts: True
-#gathering = implicit
-gathering = smart
-
-# by default retrieve all facts subsets
-# all - gather all subsets
-# network - gather min and network facts
-# hardware - gather hardware facts (longest facts to retrieve)
-# virtual - gather min and virtual facts
-# facter - import facts from facter
-# ohai - import facts from ohai
-# You can combine them using comma (ex: network,virtual)
-# You can negate them using ! (ex: !hardware,!facter,!ohai)
-# A minimal set of facts is always gathered.
-gather_subset = network
-
-# additional paths to search for roles in, colon separated
-# N/B: This depends on how ansible is called
-#roles_path = $WORKSPACE/kommandir_workspace/roles
-
-# uncomment this to disable SSH key host checking
-#host_key_checking = False
-host_key_checking = False
-
-# change the default callback
-#stdout_callback = skippy
-# enable additional callbacks
-#callback_whitelist = timer, mail
-
-# Determine whether includes in tasks and handlers are "static" by
-# default. As of 2.0, includes are dynamic by default. Setting these
-# values to True will make includes behave more like they did in the
-# 1.x versions.
-task_includes_static = True
-handler_includes_static = True
-
-# change this for alternative sudo implementations
-#sudo_exe = sudo
-
-# What flags to pass to sudo
-# WARNING: leaving out the defaults might create unexpected behaviours
-#sudo_flags = -H -S -n
-
-# SSH timeout
-#timeout = 10
-
-# default user to use for playbooks if user is not specified
-# (/usr/bin/ansible will use current user as default)
-#remote_user = root
-remote_user = root
-
-# logging is off by default unless this path is defined
-# if so defined, consider logrotate
-log_path = $ARTIFACTS/main.log
-
-# default module name for /usr/bin/ansible
-#module_name = command
-
-# use this shell for commands executed under sudo
-# you may need to change this to bin/bash in rare instances
-# if sudo is constrained
-# executable = /bin/sh
-
-# if inventory variables overlap, does the higher precedence one win
-# or are hash values merged together? The default is 'replace' but
-# this can also be set to 'merge'.
-hash_behaviour = replace
-
-# by default, variables from roles will be visible in the global variable
-# scope. To prevent this, the following option can be enabled, and only
-# tasks and handlers within the role will see the variables there
-private_role_vars = False
-
-# list any Jinja2 extensions to enable here:
-#jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n
-
-# if set, always use this private key file for authentication, same as
-# if passing --private-key to ansible or ansible-playbook
-#private_key_file = /path/to/file
-
-# If set, configures the path to the Vault password file as an alternative to
-# specifying --vault-password-file on the command line.
-#vault_password_file = /path/to/vault_password_file
-
-# format of string {{ ansible_managed }} available within Jinja2
-# templates indicates to users editing templates files will be replaced.
-# replacing {file}, {host} and {uid} and strftime codes with proper values.
-#ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
-# This short version is better used in templates as it won't flag the file as changed every run.
-#ansible_managed = Ansible managed: {file} on {host}
-
-# by default, ansible-playbook will display "Skipping [host]" if it determines a task
-# should not be run on a host. Set this to "False" if you don't want to see these "Skipping"
-# messages. NOTE: the task header will still be shown regardless of whether or not the
-# task is skipped.
-#display_skipped_hosts = True
-display_skipped_hosts = False
-
-# by default, if a task in a playbook does not include a name: field then
-# ansible-playbook will construct a header that includes the task's action but
-# not the task's args. This is a security feature because ansible cannot know
-# if the *module* considers an argument to be no_log at the time that the
-# header is printed. If your environment doesn't have a problem securing
-# stdout from ansible-playbook (or you have manually specified no_log in your
-# playbook on all of the tasks where you have secret information) then you can
-# safely set this to True to get more informative messages.
-display_args_to_stdout = False
-
-# by default (as of 1.3), Ansible will raise errors when attempting to dereference
-# Jinja2 variables that are not set in templates or action lines. Uncomment this line
-# to revert the behavior to pre-1.3.
-#error_on_undefined_vars = False
-
-# by default (as of 1.6), Ansible may display warnings based on the configuration of the
-# system running ansible itself. This may include warnings about 3rd party packages or
-# other conditions that should be resolved if possible.
-# to disable these warnings, set the following value to False:
-system_warnings = False
-
-# by default (as of 1.4), Ansible may display deprecation warnings for language
-# features that should no longer be used and will be removed in future versions.
-# to disable these warnings, set the following value to False:
-deprecation_warnings = False
-
-# (as of 1.8), Ansible can optionally warn when usage of the shell and
-# command module appear to be simplified by using a default Ansible module
-# instead. These warnings can be silenced by adjusting the following
-# setting or adding warn=yes or warn=no to the end of the command line
-# parameter string. This will for example suggest using the git module
-# instead of shelling out to the git command.
-command_warnings = False
-
-
-# set plugin path directories here, separate with colons
-#action_plugins = /usr/share/ansible/plugins/action
-#callback_plugins = /usr/share/ansible/plugins/callback
-#connection_plugins = /usr/share/ansible/plugins/connection
-#lookup_plugins = /usr/share/ansible/plugins/lookup
-#vars_plugins = /usr/share/ansible/plugins/vars
-#filter_plugins = /usr/share/ansible/plugins/filter
-#test_plugins = /usr/share/ansible/plugins/test
-#strategy_plugins = /usr/share/ansible/plugins/strategy
-
-# Most callbacks shipped with Ansible are disabled by default
-# and need to be whitelisted in your ansible.cfg file in order to function.
-callback_whitelist = default
-
-# by default callbacks are not loaded for /bin/ansible, enable this if you
-# want, for example, a notification or logging callback to also apply to
-# /bin/ansible runs
-#bin_ansible_callbacks = False
-
-
-# don't like cows? that's unfortunate.
-# set to 1 if you don't want cowsay support or export ANSIBLE_NOCOWS=1
-#nocows = 1
-
-# set which cowsay stencil you'd like to use by default. When set to 'random',
-# a random stencil will be selected for each task. The selection will be filtered
-# against the `cow_whitelist` option below.
-#cow_selection = default
-#cow_selection = random
-
-# when using the 'random' option for cowsay, stencils will be restricted to this list.
-# it should be formatted as a comma-separated list with no spaces between names.
-# NOTE: line continuations here are for formatting purposes only, as the INI parser
-# in python does not support them.
-#cow_whitelist=bud-frogs,bunny,cheese,daemon,default,dragon,elephant-in-snake,elephant,eyes,\
-# hellokitty,kitty,luke-koala,meow,milk,moofasa,moose,ren,sheep,small,stegosaurus,\
-# stimpy,supermilker,three-eyes,turkey,turtle,tux,udder,vader-koala,vader,www
-
-# don't like colors either?
-# set to 1 if you don't want colors, or export ANSIBLE_NOCOLOR=1
-nocolor = 0
-
-# if set to a persistent type (not 'memory', for example 'redis') fact values
-# from previous runs in Ansible will be stored. This may be useful when
-# wanting to use, for example, IP information from one group of servers
-# without having to talk to them in the same playbook run to get their
-# current IP information.
-#fact_caching = memory
-
-# retry files
-# When a playbook fails by default a .retry file will be created in ~/
-# You can disable this feature by setting retry_files_enabled to False
-# and you can change the location of the files by setting retry_files_save_path
-
-#retry_files_enabled = False
-retry_files_enabled = False
-
-# squash actions
-# Ansible can optimise actions that call modules with list parameters
-# when looping. Instead of calling the module once per with_ item, the
-# module is called once with all items at once. Currently this only works
-# under limited circumstances, and only with parameters named 'name'.
-squash_actions = apk,apt,dnf,package,pacman,pkgng,yum,zypper
-
-# prevents logging of task data, off by default
-#no_log = False
-
-# prevents logging of tasks, but only on the targets, data is still logged on the master/controller
-no_target_syslog = True
-
-# controls whether Ansible will raise an error or warning if a task has no
-# choice but to create world readable temporary files to execute a module on
-# the remote machine. This option is False by default for security. Users may
-# turn this on to have behaviour more like Ansible prior to 2.1.x. See
-# https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user
-# for more secure ways to fix this than enabling this option.
-#allow_world_readable_tmpfiles = False
-
-# controls the compression level of variables sent to
-# worker processes. At the default of 0, no compression
-# is used. This value must be an integer from 0 to 9.
-#var_compression_level = 9
-
-# controls what compression method is used for new-style ansible modules when
-# they are sent to the remote system. The compression types depend on having
-# support compiled into both the controller's python and the client's python.
-# The names should match with the python Zipfile compression types:
-# * ZIP_STORED (no compression. available everywhere)
-# * ZIP_DEFLATED (uses zlib, the default)
-# These values may be set per host via the ansible_module_compression inventory
-# variable
-#module_compression = 'ZIP_DEFLATED'
-
-# This controls the cutoff point (in bytes) on --diff for files
-# set to 0 for unlimited (RAM may suffer!).
-#max_diff_size = 1048576
-
-[privilege_escalation]
-#become=True
-#become_method=sudo
-#become_user=root
-become_user=root
-#become_ask_pass=False
-
-[paramiko_connection]
-
-# uncomment this line to cause the paramiko connection plugin to not record new host
-# keys encountered. Increases performance on new host additions. Setting works independently of the
-# host key checking setting above.
-#record_host_keys=False
-
-# by default, Ansible requests a pseudo-terminal for commands executed under sudo. Uncomment this
-# line to disable this behaviour.
-#pty=False
-
-[ssh_connection]
-
-# ssh arguments to use
-# Leaving off ControlPersist will result in poor performance, so use
-# paramiko on older platforms rather than removing it
-ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o PreferredAuthentications=publickey -o ConnectTimeout=13
-
-# The path to use for the ControlPath sockets. This defaults to
-# "%(directory)s/ansible-ssh-%%h-%%p-%%r", however on some systems with
-# very long hostnames or very long path names (caused by long user names or
-# deeply nested home directories) this can exceed the character limit on
-# file socket names (108 characters for most platforms). In that case, you
-# may wish to shorten the string below.
-#
-# Example:
-# control_path = %(directory)s/%%h-%%r
-#control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r
-
-# Enabling pipelining reduces the number of SSH operations required to
-# execute a module on the remote server. This can result in a significant
-# performance improvement when enabled, however when using "sudo:" you must
-# first disable 'requiretty' in /etc/sudoers
-#
-# By default, this option is disabled to preserve compatibility with
-# sudoers configurations that have requiretty (the default on many distros).
-#
-#pipelining = False
-pipelining=True
-
-# if True, make ansible use scp if the connection type is ssh
-# (default is sftp)
-#scp_if_ssh = True
-
-# if False, sftp will not use batch mode to transfer files. This may cause some
-# types of file transfer failures impossible to catch however, and should
-# only be disabled if your sftp version has problems with batch mode
-#sftp_batch_mode = False
-
-[accelerate]
-#accelerate_port = 5099
-#accelerate_timeout = 30
-#accelerate_connect_timeout = 5.0
-
-# The daemon timeout is measured in minutes. This time is measured
-# from the last activity to the accelerate daemon.
-#accelerate_daemon_timeout = 30
-
-# If set to yes, accelerate_multi_key will allow multiple
-# private keys to be uploaded to it, though each user must
-# have access to the system via SSH to add a new key. The default
-# is "no".
-#accelerate_multi_key = yes
-
-[selinux]
-# file systems that require special treatment when dealing with security context
-# the default behaviour that copies the existing context or uses the user default
-# needs to be changed to use the file system dependent context.
-#special_context_filesystems=nfs,vboxsf,fuse,ramfs
-
-# Set this to yes to allow libvirt_lxc connections to work without SELinux.
-#libvirt_lxc_noseclabel = yes
-
-[colors]
-#highlight = white
-#verbose = blue
-#warn = bright purple
-#error = red
-#debug = dark gray
-#deprecate = purple
-#skip = cyan
-#unreachable = red
-#ok = green
-#changed = yellow
-#diff_add = green
-#diff_remove = red
-#diff_lines = cyan
diff --git a/contrib/test/integration/build/bats.yml b/contrib/test/integration/build/bats.yml
deleted file mode 100644
index d4ea19c65..000000000
--- a/contrib/test/integration/build/bats.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-
-- name: clone bats source repo
- git:
- repo: "https://github.com/sstephenson/bats.git"
- dest: "{{ ansible_env.GOPATH }}/src/github.com/sstephenson/bats"
-
-- name: install bats
- command: "./install.sh /usr/local"
- args:
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/sstephenson/bats"
-
-- name: link bats
- file:
- src: /usr/local/bin/bats
- dest: /usr/bin/bats
- state: link
diff --git a/contrib/test/integration/build/cri-o.yml b/contrib/test/integration/build/cri-o.yml
deleted file mode 100644
index fa025035c..000000000
--- a/contrib/test/integration/build/cri-o.yml
+++ /dev/null
@@ -1,79 +0,0 @@
----
-
-- name: stat the expected cri-o directory
- stat:
- path: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
- register: dir_stat
-
-- name: expect cri-o to be cloned already
- fail:
- msg: "Expected cri-o to be cloned at {{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o but it wasn't!"
- when: not dir_stat.stat.exists
-
-- name: install cri-o tools
- make:
- target: install.tools
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
-
-- name: build cri-o
- make:
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
-
-- name: install cri-o
- make:
- target: install
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
-
-- name: install cri-o systemd files
- make:
- target: install.systemd
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
-
-- name: install cri-o config
- make:
- target: install.config
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
-
-- name: install configs
- copy:
- src: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o/{{ item.src }}"
- dest: "{{ item.dest }}"
- remote_src: yes
- with_items:
- - src: contrib/cni/10-crio-bridge.conf
- dest: /etc/cni/net.d/10-crio-bridge.conf
- - src: contrib/cni/99-loopback.conf
- dest: /etc/cni/net.d/99-loopback.conf
- - src: test/redhat_sigstore.yaml
- dest: /etc/containers/registries.d/registry.access.redhat.com.yaml
-
-- name: run with overlay
- replace:
- regexp: 'storage_driver = ""'
- replace: 'storage_driver = "overlay"'
- name: /etc/crio/crio.conf
- backup: yes
-
-- name: run with systemd cgroup manager
- replace:
- regexp: 'cgroup_manager = "cgroupfs"'
- replace: 'cgroup_manager = "systemd"'
- name: /etc/crio/crio.conf
- backup: yes
-
-- name: add docker.io default registry
- lineinfile:
- dest: /etc/crio/crio.conf
- line: '"docker.io"'
- insertafter: 'registries = \['
- regexp: 'docker\.io'
- state: present
-
-- name: add overlay storage opts on RHEL/CentOS
- lineinfile:
- dest: /etc/crio/crio.conf
- line: '"overlay.override_kernel_check=1"'
- insertafter: 'storage_option = \['
- regexp: 'overlay\.override_kernel_check=1'
- state: present
- when: ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
diff --git a/contrib/test/integration/build/cri-tools.yml b/contrib/test/integration/build/cri-tools.yml
deleted file mode 100644
index e314225ef..000000000
--- a/contrib/test/integration/build/cri-tools.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-
-- name: clone cri-tools source repo
- git:
- repo: "https://github.com/kubernetes-incubator/cri-tools.git"
- dest: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-tools"
- version: "16e6fe4d7199c5689db4630a9330e6a8a12cecd1"
-
-- name: install crictl
- command: "/usr/bin/go install github.com/kubernetes-incubator/cri-tools/cmd/crictl"
-
-- name: link crictl
- file:
- src: "{{ ansible_env.GOPATH }}/bin/crictl"
- dest: /usr/bin/crictl
- state: link
diff --git a/contrib/test/integration/build/kubernetes.yml b/contrib/test/integration/build/kubernetes.yml
deleted file mode 100644
index 206cba448..000000000
--- a/contrib/test/integration/build/kubernetes.yml
+++ /dev/null
@@ -1,63 +0,0 @@
----
-
-- name: clone kubernetes source repo
- git:
- repo: "https://github.com/runcom/kubernetes.git"
- dest: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"
- version: "cri-o-node-e2e-patched"
-
-- name: install etcd
- command: "hack/install-etcd.sh"
- args:
- chdir: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"
-
-- name: build kubernetes
- make:
- chdir: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"
-
-- name: Add custom cluster service file for the e2e testing
- copy:
- dest: /etc/systemd/system/customcluster.service
- content: |
- [Unit]
- After=network-online.target
- Wants=network-online.target
- [Service]
- WorkingDirectory={{ ansible_env.GOPATH }}/src/k8s.io/kubernetes
- ExecStart=/usr/local/bin/createcluster.sh
- User=root
- [Install]
- WantedBy=multi-user.target
-
-- name: Add create cluster background script for e2e testing
- copy:
- dest: /usr/local/bin/createcluster.sh
- content: |
- #!/bin/bash
-
- export PATH=/usr/local/go/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:{{ ansible_env.GOPATH }}/bin:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/third_party/etcd:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/_output/local/bin/linux/amd64/
- export CONTAINER_RUNTIME=remote
- export CGROUP_DRIVER=systemd
- export CONTAINER_RUNTIME_ENDPOINT='/var/run/crio.sock --runtime-request-timeout=5m'
- export ALLOW_SECURITY_CONTEXT=","
- export ALLOW_PRIVILEGED=1
- export DNS_SERVER_IP={{ ansible_eth0.ipv4.address }}
- export API_HOST={{ ansible_eth0.ipv4.address }}
- export API_HOST_IP={{ ansible_eth0.ipv4.address }}
- export KUBE_ENABLE_CLUSTER_DNS=true
- ./hack/local-up-cluster.sh
- mode: "u=rwx,g=rwx,o=x"
-
-- name: Set kubernetes_provider to be local
- lineinfile:
- dest: /etc/environment
- line: 'KUBERNETES_PROVIDER=local'
- regexp: 'KUBERNETES_PROVIDER='
- state: present
-
-- name: Set KUBECONFIG
- lineinfile:
- dest: /etc/environment
- line: 'KUBECONFIG=/var/run/kubernetes/admin.kubeconfig'
- regexp: 'KUBECONFIG='
- state: present
diff --git a/contrib/test/integration/build/plugins.yml b/contrib/test/integration/build/plugins.yml
deleted file mode 100644
index e342a0b91..000000000
--- a/contrib/test/integration/build/plugins.yml
+++ /dev/null
@@ -1,50 +0,0 @@
----
-
-- name: clone plugins source repo
- git:
- repo: "https://github.com/containernetworking/plugins.git"
- dest: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins"
- version: "dcf7368eeab15e2affc6256f0bb1e84dd46a34de"
-
-- name: build plugins
- command: "./build.sh"
- args:
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins"
-
-- name: install plugins
- copy:
- src: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins/bin/{{ item }}"
- dest: "/opt/cni/bin"
- mode: "o=rwx,g=rx,o=rx"
- remote_src: yes
- with_items:
- - bridge
- - dhcp
- - flannel
- - host-local
- - ipvlan
- - loopback
- - macvlan
- - ptp
- - sample
- - tuning
- - vlan
-
-- name: clone runcom plugins source repo
- git:
- repo: "https://github.com/runcom/plugins.git"
- dest: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins"
- version: "custom-bridge"
- force: yes
-
-- name: build plugins
- command: "./build.sh"
- args:
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins"
-
-- name: install custom bridge
- copy:
- src: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins/bin/bridge"
- dest: "/opt/cni/bin/bridge-custom"
- mode: "o=rwx,g=rx,o=rx"
- remote_src: yes
diff --git a/contrib/test/integration/build/runc.yml b/contrib/test/integration/build/runc.yml
deleted file mode 100644
index 7bb0491d4..000000000
--- a/contrib/test/integration/build/runc.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-
-- name: clone runc source repo
- git:
- repo: "https://github.com/opencontainers/runc.git"
- dest: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc"
- version: "84a082bfef6f932de921437815355186db37aeb1"
-
-- name: build runc
- make:
- params: BUILDTAGS="seccomp selinux"
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc"
-
-- name: install runc
- make:
- target: "install"
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc"
-
-- name: link runc
- file:
- src: /usr/local/sbin/runc
- dest: /usr/bin/runc
- state: link
diff --git a/contrib/test/integration/callback_plugins/default.py b/contrib/test/integration/callback_plugins/default.py
deleted file mode 100644
index 99821f660..000000000
--- a/contrib/test/integration/callback_plugins/default.py
+++ /dev/null
@@ -1,156 +0,0 @@
-'''Plugin to override the default output logic.'''
-
-# upstream: https://gist.github.com/cliffano/9868180
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# For some reason this has to be done
-import imp
-import os
-
-ANSIBLE_PATH = imp.find_module('ansible')[1]
-DEFAULT_PATH = os.path.join(ANSIBLE_PATH, 'plugins/callback/default.py')
-DEFAULT_MODULE = imp.load_source(
- 'ansible.plugins.callback.default',
- DEFAULT_PATH
-)
-
-try:
- from ansible.plugins.callback import CallbackBase
- BASECLASS = CallbackBase
-except ImportError: # < ansible 2.1
- BASECLASS = DEFAULT_MODULE.CallbackModule
-
-
-class CallbackModule(DEFAULT_MODULE.CallbackModule): # pylint: disable=too-few-public-methods,no-init
- '''
- Override for the default callback module.
-
- Render std err/out outside of the rest of the result which it prints with
- indentation.
- '''
- CALLBACK_VERSION = 2.0
- CALLBACK_TYPE = 'stdout'
- CALLBACK_NAME = 'default'
-
- def __init__(self, *args, **kwargs):
- # pylint: disable=non-parent-init-called
- BASECLASS.__init__(self, *args, **kwargs)
- self.failed_task = []
- self.result_file = os.environ.get('AHT_RESULT_FILE')
-
- def _dump_results(self, result):
- '''Return the text to output for a result.'''
- result['_ansible_verbose_always'] = True
-
- save = {}
- for key in ['stdout', 'stdout_lines', 'stderr', 'stderr_lines', 'msg']:
- if key in result:
- save[key] = result.pop(key)
-
- output = BASECLASS._dump_results(self, result) # pylint: disable=protected-access
-
- for key in ['stdout', 'stderr', 'msg']:
- if key in save and save[key]:
- output += '\n\n%s:\n---\n%s\n---' % (key.upper(), save[key])
-
- for key, value in save.items():
- result[key] = value
-
- return output
-
- def v2_runner_on_unreachable(self, result):
- self.failed_task = result
-
- if self._play.strategy == 'free' and self._last_task_banner != result._task._uuid:
- self._print_task_banner(result._task)
-
- delegated_vars = result._result.get('_ansible_delegated_vars', None)
- if delegated_vars:
- self._display.display("fatal: [%s -> %s]: UNREACHABLE! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result)), color=C.COLOR_UNREACHABLE)
- else:
- self._display.display("fatal: [%s]: UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result)), color=C.COLOR_UNREACHABLE)
-
- def v2_runner_on_failed(self,result, ignore_errors=False):
- if ignore_errors is not True:
- # Sets environment variable for test failures for use in playboks.
- # Handlers tasks can conditionalize themselves using this variable
- # to run only on failure.
- os.environ["AHT_FAILURE"] = "1"
-
- # Save last failure
- self.failed_task = result
-
- if self._play.strategy == 'free' and self._last_task_banner != result._task._uuid:
- self._print_task_banner(result._task)
-
- delegated_vars = result._result.get('_ansible_delegated_vars', None)
- if 'exception' in result._result:
- if self._display.verbosity < 3:
- # extract just the actual error message from the exception text
- error = result._result['exception'].strip().split('\n')[-1]
- msg = "An exception occurred during task execution. To see the full traceback, use -vvv. The error was: %s" % error
- else:
- msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
-
- self._display.display(msg, color=C.COLOR_ERROR)
-
- if result._task.loop and 'results' in result._result:
- self._process_items(result)
-
- else:
- if delegated_vars:
- self._display.display("fatal: [%s -> %s]: FAILED! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result)), color=C.COLOR_ERROR)
- else:
- self._display.display("fatal: [%s]: FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result)), color=C.COLOR_ERROR)
-
- if ignore_errors:
- self._display.display("...ignoring", color=C.COLOR_SKIP)
-
- def v2_playbook_on_stats(self, stats):
- self._display.banner("PLAY RECAP")
-
- hosts = sorted(stats.processed.keys())
- for h in hosts:
- t = stats.summarize(h)
-
- self._display.display(u"%s : %s %s %s %s" % (
- hostcolor(h, t),
- colorize(u'ok', t['ok'], C.COLOR_OK),
- colorize(u'changed', t['changed'], C.COLOR_CHANGED),
- colorize(u'unreachable', t['unreachable'], C.COLOR_UNREACHABLE),
- colorize(u'failed', t['failures'], C.COLOR_ERROR)),
- screen_only=True
- )
-
- self._display.display(u"%s : %s %s %s %s" % (
- hostcolor(h, t, False),
- colorize(u'ok', t['ok'], None),
- colorize(u'changed', t['changed'], None),
- colorize(u'unreachable', t['unreachable'], None),
- colorize(u'failed', t['failures'], None)),
- log_only=True
- )
-
- self._display.display("", screen_only=True)
- # Save result to file if environment variable exists
- if self.result_file is not None:
- if self.failed_task:
- with open(self.result_file, 'w') as f:
- f.write("PLAY: %s\n%s\n%s" % (self._play, \
- self.failed_task._task, \
- self._dump_results(self.failed_task._result)))
- else:
- open(self.result_file, 'w').close()
diff --git a/contrib/test/integration/e2e.yml b/contrib/test/integration/e2e.yml
deleted file mode 100644
index 5c4d656ef..000000000
--- a/contrib/test/integration/e2e.yml
+++ /dev/null
@@ -1,57 +0,0 @@
----
-
-- name: enable and start CRI-O
- systemd:
- name: crio
- state: started
- enabled: yes
- daemon_reload: yes
-
-- name: update the server address for the custom cluster
- lineinfile:
- dest: /usr/local/bin/createcluster.sh
- line: "export {{ item }}={{ ansible_eth0.ipv4.address }}"
- regexp: "^export {{ item }}="
- state: present
- with_items:
- - DNS_SERVER_IP
- - API_HOST
- - API_HOST_IP
-
-- name: enable and start the custom cluster
- systemd:
- name: customcluster.service
- state: started
- enabled: yes
- daemon_reload: yes
-
-- name: wait for the cluster to be running
- command: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/_output/bin/kubectl get service kubernetes --namespace default"
- register: kube_poll
- until: kube_poll | succeeded
- retries: 100
- delay: 30
-
-- name: ensure directory exists for e2e reports
- file:
- path: "{{ artifacts }}"
- state: directory
-
-- name: Buffer the e2e testing command to workaround Ansible YAML folding "feature"
- set_fact:
- e2e_shell_cmd: >
- /usr/bin/go run hack/e2e.go
- --test
- --test_args="-host=https://{{ ansible_default_ipv4.address }}:6443
- --ginkgo.focus=\[Conformance\]
- --report-dir={{ artifacts }}"
- &> {{ artifacts }}/e2e.log
- # Fix vim syntax hilighting: "
-
-- name: disable SELinux
- command: setenforce 0
-
-- name: run e2e tests
- shell: "{{ e2e_shell_cmd | regex_replace('\\s+', ' ') }}"
- args:
- chdir: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"
diff --git a/contrib/test/integration/golang.yml b/contrib/test/integration/golang.yml
deleted file mode 100644
index 63e556977..000000000
--- a/contrib/test/integration/golang.yml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-
-- name: fetch Golang
- unarchive:
- remote_src: yes
- src: https://storage.googleapis.com/golang/go1.8.4.linux-amd64.tar.gz
- dest: /usr/local
-
-- name: link go toolchain
- file:
- src: "/usr/local/go/bin/{{ item }}"
- dest: "/usr/bin/{{ item }}"
- state: link
- with_items:
- - go
- - gofmt
- - godoc
-
-- name: ensure user profile exists
- file:
- path: "{{ ansible_user_dir }}/.profile"
- state: touch
-
-- name: set up PATH for Go toolchain and built binaries
- lineinfile:
- dest: "{{ ansible_user_dir }}/.profile"
- line: 'PATH={{ ansible_env.PATH }}:{{ ansible_env.GOPATH }}/bin:/usr/local/go/bin'
- regexp: '^PATH='
- state: present
-
-- name: set up directories
- file:
- path: "{{ item }}"
- state: directory
- with_items:
- - "{{ ansible_env.GOPATH }}/src/github.com/containernetworking"
- - "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator"
- - "{{ ansible_env.GOPATH }}/src/github.com/k8s.io"
- - "{{ ansible_env.GOPATH }}/src/github.com/sstephenson"
- - "{{ ansible_env.GOPATH }}/src/github.com/opencontainers"
-
-- name: install Go tools and dependencies
- shell: /usr/bin/go get -u "github.com/{{ item }}"
- with_items:
- - tools/godep
- - onsi/ginkgo/ginkgo
- - onsi/gomega
- - cloudflare/cfssl/cmd/...
- - jteeuwen/go-bindata/go-bindata
- - vbatts/git-validation
- - cpuguy83/go-md2man
diff --git a/contrib/test/integration/main.yml b/contrib/test/integration/main.yml
deleted file mode 100644
index ce4a206fb..000000000
--- a/contrib/test/integration/main.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-- hosts: all
- remote_user: root
- vars_files:
- - "{{ playbook_dir }}/vars.yml"
- tags:
- - setup
- tasks:
- - name: set up the system
- include: system.yml
-
- - name: install Golang tools
- include: golang.yml
-
- - name: clone build and install bats
- include: "build/bats.yml"
-
- - name: clone build and install cri-tools
- include: "build/cri-tools.yml"
-
- - name: clone build and install kubernetes
- include: "build/kubernetes.yml"
-
- - name: clone build and install runc
- include: "build/runc.yml"
-
- - name: clone build and install networking plugins
- include: "build/plugins.yml"
-
-- hosts: all
- remote_user: root
- vars_files:
- - "{{ playbook_dir }}/vars.yml"
- tags:
- - integration
- - e2e
- tasks:
- - name: clone build and install cri-o
- include: "build/cri-o.yml"
-
-- hosts: all
- remote_user: root
- vars_files:
- - "{{ playbook_dir }}/vars.yml"
- tags:
- - integration
- tasks:
- - name: run cri-o integration tests
- include: test.yml
-
-- hosts: all
- remote_user: root
- vars_files:
- - "{{ playbook_dir }}/vars.yml"
- tags:
- - e2e
- tasks:
- - name: run k8s e2e tests
- include: e2e.yml
diff --git a/contrib/test/integration/results.yml b/contrib/test/integration/results.yml
deleted file mode 100644
index c9a96abb1..000000000
--- a/contrib/test/integration/results.yml
+++ /dev/null
@@ -1,62 +0,0 @@
----
-# vim-syntax: ansible
-
-- hosts: '{{ hosts | default("all") }}'
- vars_files:
- - "{{ playbook_dir }}/vars.yml"
- vars:
- _result_filepaths: [] # do not use
- _dstfnbuff: [] # do not use
- tasks:
- - name: The crio_integration_filepath is required
- tags:
- - integration
- set_fact:
- _result_filepaths: "{{ _result_filepaths + [crio_integration_filepath] }}"
-
- - name: The crio_node_e2e_filepath is required
- tags:
- - e2e
- set_fact:
- _result_filepaths: "{{ _result_filepaths + [crio_node_e2e_filepath] }}"
-
- - name: Verify expectations
- assert:
- that:
- - 'result_dest_basedir | default(False, True)'
- - '_result_filepaths | default(False, True)'
- - '_dstfnbuff == []'
- - 'results_fetched is undefined'
-
- - name: Results directory exists
- file:
- path: "{{ result_dest_basedir }}"
- state: directory
- delegate_to: localhost
-
- - name: destination file paths are buffered for overwrite-checking and jUnit conversion
- set_fact:
- _dstfnbuff: >
- {{ _dstfnbuff |
- union( [result_dest_basedir ~ "/" ~ inventory_hostname ~ "/" ~ item | basename] ) }}
- with_items: '{{ _result_filepaths }}'
-
- - name: Overwriting existing results assumed very very bad
- fail:
- msg: "Cowardly refusing to overwrite {{ item }}"
- when: item | exists
- delegate_to: localhost
- with_items: '{{ _dstfnbuff }}'
-
- # fetch module doesn't support directories
- - name: Retrieve results from all hosts
- synchronize:
- checksum: True # Don't rely on date/time being in sync
- archive: False # Don't bother with permissions or times
- copy_links: True # We want files, not links to files
- recursive: True
- mode: pull
- dest: '{{ result_dest_basedir }}/{{ inventory_hostname }}/' # must end in /
- src: '{{ item }}'
- register: results_fetched
- with_items: '{{ _result_filepaths }}'
diff --git a/contrib/test/integration/system.yml b/contrib/test/integration/system.yml
deleted file mode 100644
index d07ae0c82..000000000
--- a/contrib/test/integration/system.yml
+++ /dev/null
@@ -1,117 +0,0 @@
----
-
-- name: Make sure we have all required packages
- package:
- name: "{{ item }}"
- state: present
- with_items:
- - container-selinux
- - curl
- - device-mapper-devel
- - expect
- - findutils
- - gcc
- - git
- - glib2-devel
- - glibc-devel
- - glibc-static
- - gpgme-devel
- - hostname
- - iproute
- - iptables
- - krb5-workstation
- - libassuan-devel
- - libffi-devel
- - libgpg-error-devel
- - libguestfs-tools
- - libseccomp-devel
- - libvirt-client
- - libvirt-python
- - libxml2-devel
- - libxslt-devel
- - make
- - mlocate
- - nfs-utils
- - nmap-ncat
- - oci-register-machine
- - oci-systemd-hook
- - oci-umount
- - openssl
- - openssl-devel
- - ostree-devel
- - pkgconfig
- - python
- - python2-boto
- - python2-crypto
- - python-devel
- - python-virtualenv
- - PyYAML
- - redhat-rpm-config
- - rpcbind
- - rsync
- - sed
- - skopeo-containers
- - socat
- - tar
- - wget
- async: 600
- poll: 10
-
-- name: Add Btrfs for Fedora
- package:
- name: "{{ item }}"
- state: present
- with_items:
- - btrfs-progs-devel
- when: ansible_distribution in ['Fedora']
-
-- name: Update all packages
- package:
- name: '*'
- state: latest
- async: 600
- poll: 10
-
-- name: Setup swap to prevent kernel firing off the OOM killer
- shell: |
- truncate -s 8G /root/swap && \
- export SWAPDEV=$(losetup --show -f /root/swap | head -1) && \
- mkswap $SWAPDEV && \
- swapon $SWAPDEV && \
- swapon --show
-
-- name: ensure directories exist as needed
- file:
- path: "{{ item }}"
- state: directory
- with_items:
- - /opt/cni/bin
- - /etc/cni/net.d
-
-- name: set sysctl vm.overcommit_memory=1 for CentOS
- sysctl:
- name: vm.overcommit_memory
- state: present
- value: 1
- when: ansible_distribution == 'CentOS'
-
-- name: inject hostname into /etc/hosts
- lineinfile:
- dest: /etc/hosts
- line: '{{ ansible_default_ipv4.address }} {{ ansible_nodename }}'
- insertafter: 'EOF'
- regexp: '{{ ansible_default_ipv4.address }}\s+{{ ansible_nodename }}'
- state: present
-
-- name: Flush the iptables
- command: iptables -F
-
-- name: Enable localnet routing
- command: sysctl -w net.ipv4.conf.all.route_localnet=1
-
-- name: Add masquerade for localhost
- command: iptables -t nat -I POSTROUTING -s 127.0.0.1 ! -d 127.0.0.1 -j MASQUERADE
-
-- name: Update the kernel cmdline to include quota support
- command: grubby --update-kernel=ALL --args="rootflags=pquota"
- when: ansible_distribution in ['RedHat', 'CentOS']
diff --git a/contrib/test/integration/test.yml b/contrib/test/integration/test.yml
deleted file mode 100644
index 418ceff78..000000000
--- a/contrib/test/integration/test.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-
-- name: Make testing output verbose so it can be converted to xunit
- lineinfile:
- dest: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/hack/make-rules/test.sh"
- line: ' go test -v "${goflags[@]:+${goflags[@]}}" \'
- regexp: ' go test \"\$'
- state: present
-
-- name: set extra storage options
- set_fact:
- extra_storage_opts: " --storage-opt overlay.override_kernel_check=1"
- when: ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
-
-- name: ensure directory exists for e2e reports
- file:
- path: "{{ artifacts }}"
- state: directory
-
-- name: run integration tests
- shell: "CGROUP_MANAGER=cgroupfs STORAGE_OPTIONS='--storage-driver=overlay{{ extra_storage_opts | default('') }}' make localintegration >& {{ artifacts }}/testout.txt"
- args:
- chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o"
- async: 5400
- poll: 30
diff --git a/contrib/test/integration/vars.yml b/contrib/test/integration/vars.yml
deleted file mode 100644
index f1e5e2f73..000000000
--- a/contrib/test/integration/vars.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-
-# For results.yml Paths use rsync 'source' conventions
-artifacts: "/tmp/artifacts" # Base-directory for collection
-crio_integration_filepath: "{{ artifacts }}/testout.txt"
-crio_node_e2e_filepath: "{{ artifacts }}/junit_01.xml"
-result_dest_basedir: '{{ lookup("env","WORKSPACE") |
- default(playbook_dir, True) }}/artifacts'