diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 000000000..29e4ed130 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,13 @@ +Vagrant.configure("2") do |config| + config.vm.box = "ubuntu/bionic64" + config.vm.network "private_network", ip: "192.168.33.10" + config.vm.provider "virtualbox" do |vb| + vb.memory = "9216" + vb.cpus = 4 + end + config.vm.provision "shell", inline: <<-SHELL + apt-get update + ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N "" + cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys + SHELL +end diff --git a/tools/gate/00_setup.sh b/tools/gate/00_setup.sh new file mode 100755 index 000000000..0160913a8 --- /dev/null +++ b/tools/gate/00_setup.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +export ISO_DIR=${ISO_DIR:-"/srv/iso"} +export SERVE_PORT=${SERVE_PORT:-"8099"} +export AIRSHIPCTL_WS=${AIRSHIPCTL_WS:-$PWD} +export TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} + +ANSIBLE_CFG=${ANSIBLE_CFG:-"${HOME}/.ansible.cfg"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} +OSH_INFRA_DIR=${OSH_INFRA_DIR:-"${TMP_DIR}/openstack-helm-infra"} + +mkdir -p "$TMP_DIR" +envsubst <"${AIRSHIPCTL_WS}/tools/gate/config_template.yaml" > "$PLAYBOOK_CONFIG" + +# use new version of ansible, Ubuntu has old one +sudo apt install software-properties-common +sudo apt-add-repository --yes --update ppa:ansible/ansible +sudo apt-get -y update +sudo apt-get -y --no-install-recommends install docker.io ansible make + +echo "primary ansible_host=localhost" > "$ANSIBLE_HOSTS" +printf "[defaults]\nroles_path = %s/roles:%s/roles\n" "$AIRSHIPCTL_WS" "$OSH_INFRA_DIR" > "$ANSIBLE_CFG" +rm -rf "$OSH_INFRA_DIR" +git clone https://review.opendev.org/openstack/openstack-helm-infra.git "$OSH_INFRA_DIR" diff --git a/tools/gate/10_build_gate.sh b/tools/gate/10_build_gate.sh new file mode 100755 index 000000000..9ef3a2bfb --- /dev/null +++ b/tools/gate/10_build_gate.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-airshipctl-build-gate.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/20_run_test_runner.sh b/tools/gate/20_run_test_runner.sh new file mode 100755 index 000000000..356e7181c --- /dev/null +++ b/tools/gate/20_run_test_runner.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-airshipctl-test-runner.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/21_systemwide_executable.sh b/tools/gate/21_systemwide_executable.sh new file mode 100755 index 000000000..5f4068fda --- /dev/null +++ b/tools/gate/21_systemwide_executable.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-airshipctl-test-runner.yaml \ + -e @tools/gate/config_systemwide_executable.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/22_test_configs.sh b/tools/gate/22_test_configs.sh new file mode 100755 index 000000000..df42efc0d --- /dev/null +++ b/tools/gate/22_test_configs.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-airshipctl-test-runner.yaml \ + -e @tools/gate/config_test_configs.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/23_build_ephemeral_iso.sh b/tools/gate/23_build_ephemeral_iso.sh new file mode 100755 index 000000000..8c2b8bfc8 --- /dev/null +++ b/tools/gate/23_build_ephemeral_iso.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-airshipctl-test-runner.yaml \ + -e @tools/gate/config_build_ephemeral_iso.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/25_deploy_ephemeral_node.sh b/tools/gate/25_deploy_ephemeral_node.sh new file mode 100755 index 000000000..e5c618b0c --- /dev/null +++ b/tools/gate/25_deploy_ephemeral_node.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-airshipctl-test-runner.yaml \ + -e @tools/gate/config_deploy_ephemeral_node.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/99_collect_logs.sh b/tools/gate/99_collect_logs.sh new file mode 100755 index 000000000..3d42df1bd --- /dev/null +++ b/tools/gate/99_collect_logs.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 -xe + +TMP_DIR=${TMP_DIR:-"$(dirname $(mktemp -u))"} +ANSIBLE_HOSTS=${ANSIBLE_HOSTS:-"${TMP_DIR}/ansible_hosts"} +PLAYBOOK_CONFIG=${PLAYBOOK_CONFIG:-"${TMP_DIR}/config.yaml"} + +sudo ansible-playbook -i "$ANSIBLE_HOSTS" \ + playbooks/airship-collect-logs.yaml \ + -e @"$PLAYBOOK_CONFIG" diff --git a/tools/gate/config_build_ephemeral_iso.yaml b/tools/gate/config_build_ephemeral_iso.yaml new file mode 100644 index 000000000..f6964b343 --- /dev/null +++ b/tools/gate/config_build_ephemeral_iso.yaml @@ -0,0 +1,3 @@ +--- +test_roles: + - airshipctl-build-ephemeral-iso \ No newline at end of file diff --git a/tools/gate/config_deploy_ephemeral_node.yaml b/tools/gate/config_deploy_ephemeral_node.yaml new file mode 100644 index 000000000..f5c29959e --- /dev/null +++ b/tools/gate/config_deploy_ephemeral_node.yaml @@ -0,0 +1,3 @@ +--- +test_roles: + - airshipctl-deploy-ephemeral-node \ No newline at end of file diff --git a/tools/gate/config_systemwide_executable.yaml b/tools/gate/config_systemwide_executable.yaml new file mode 100644 index 000000000..732abf21a --- /dev/null +++ b/tools/gate/config_systemwide_executable.yaml @@ -0,0 +1,3 @@ +--- +test_roles: + - airshipctl-systemwide-executable diff --git a/tools/gate/config_template.yaml b/tools/gate/config_template.yaml new file mode 100644 index 000000000..28e3b6bb2 --- /dev/null +++ b/tools/gate/config_template.yaml @@ -0,0 +1,14 @@ +--- +serve_dir: /srv/iso +serve_port: 8099 +local_src_dir: "$AIRSHIPCTL_WS" +ansible_user: root +site_name: test-bootstrap +remote_work_dir: "$AIRSHIPCTL_WS" +sphinx_build_dir: docs/build +python_version: 3.7 +zuul: + executor: + log_root: "$TMP_DIR" + project: + src_dir: "$AIRSHIPCTL_WS" diff --git a/tools/gate/config_test_configs.yaml b/tools/gate/config_test_configs.yaml new file mode 100644 index 000000000..e6a2799bc --- /dev/null +++ b/tools/gate/config_test_configs.yaml @@ -0,0 +1,3 @@ +--- +test_roles: + - airshipctl-test-configs