# -*- mode: ruby -*- # vi: set ft=ruby : # Copyright The containerd Authors. # # 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. # Vagrantfile for cgroup2 and SELinux Vagrant.configure("2") do |config| config.vm.box = "fedora/32-cloud-base" memory = 4096 cpus = 2 config.vm.provider :virtualbox do |v| v.memory = memory v.cpus = cpus end config.vm.provider :libvirt do |v| v.memory = memory v.cpus = cpus end # Disabled by default. To run: # vagrant up --provision-with=upgrade-packages # To upgrade only specific packages: # UPGRADE_PACKAGES=selinux vagrant up --provision-with=upgrade-packages # config.vm.provision "upgrade-packages", type: "shell", run: "never" do |sh| sh.upload_path = "/tmp/vagrant-upgrade-packages" sh.env = { 'UPGRADE_PACKAGES': ENV['UPGRADE_PACKAGES'], } sh.inline = <<~SHELL #!/usr/bin/env bash set -eux -o pipefail dnf -y upgrade ${UPGRADE_PACKAGES} SHELL end # To re-run, installing CNI from RPM: # INSTALL_PACKAGES="containernetworking-plugins" vagrant up --provision-with=install-packages # config.vm.provision "install-packages", type: "shell", run: "once" do |sh| sh.upload_path = "/tmp/vagrant-install-packages" sh.env = { 'INSTALL_PACKAGES': ENV['INSTALL_PACKAGES'], } sh.inline = <<~SHELL #!/usr/bin/env bash set -eux -o pipefail dnf -y install \ container-selinux \ curl \ gcc \ git \ iptables \ libseccomp-devel \ libselinux-devel \ lsof \ make \ ${INSTALL_PACKAGES} SHELL end # To re-run this provisioner, installing a different version of go: # GO_VERSION="1.14.6" vagrant up --provision-with=install-golang # config.vm.provision "install-golang", type: "shell", run: "once" do |sh| sh.upload_path = "/tmp/vagrant-install-golang" sh.env = { 'GO_VERSION': ENV['GO_VERSION'] || "1.16.8", } sh.inline = <<~SHELL #!/usr/bin/env bash set -eux -o pipefail curl -fsSL "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" | tar Cxz /usr/local cat >> /etc/environment <> /etc/profile.d/sh.local < /tmp/containerd.log systemctl stop containerd } selinux=$(getenforce) if [[ $selinux == Enforcing ]]; then setenforce 0 fi systemctl enable --now ${GOPATH}/src/github.com/containerd/containerd/containerd.service if [[ $selinux == Enforcing ]]; then setenforce 1 fi trap cleanup EXIT ctr version critest --parallel=$(nproc) ${CRITEST_ARGS} SHELL end end