openstack-ansible-ops/skydive/tests/functional.yml
Kevin Carter b23ec9f8d9 Initial commit to add skydive
This commit adds playbooks and roles to the ops tooling setup to
build, deploy, and operate environments with skydive within in
it.

Skydive is a network analyzer which will allow users to explore
their topology in real-time using a defined storage back-end for
captures, alerts, and more.

The initial implementation of skydive deploys agents throughout
the environment and wires them all back to a cluster of analyzers
which leverage elasticsearch for its persistent storage back-end.
Storage back-ends are load balanced from the within the analyzer
nodes using the traefik light-weight reverse proxy. This setup
gives skydive a fully fault tolerant deployment.

Tests have been added to ensure the binary installation process
is validated. While these jobs are non-voting today, they'll be
iterated on and made passing in the subsequent PRs. All jobs are
following the selective pattern which allows these tools to be
gated in the mono-repo without impacting all other tools within
the environment.

Change-Id: Iaa1152566f2b615d67a33dc94ebdbebb1b492a9d
Signed-off-by: Kevin Carter <kevin@cloudnull.com>
2019-01-14 03:03:08 -06:00

159 lines
5.2 KiB
YAML

---
# Copyright 2018, Rackspace US, Inc.
#
# 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.
- import_playbook: run-setup.yml
- name: Basic setup
hosts: "all"
become: true
environment:
# ZUUL_PROJECT is used by tests/get-ansible-role-requirements to
# determine when CI provided repos should be used.
ZUUL_PROJECT: "{{ zuul.project.short_name }}"
ANSIBLE_PACKAGE: "{{ ansible_package | default('') }}"
ANSIBLE_HOST_KEY_CHECKING: "False"
ANSIBLE_LOG_PATH: "/tmp/skydive-logs/ansible-skydive-test.log"
ANSIBLE_ACTION_PLUGINS: "${HOME}/ansible_venv/repositories/roles/config_template/action"
ANSIBLE_CONNECTION_PLUGINS: "${HOME}/ansible_venv/repositories/roles/plugins/connection"
ANSIBLE_ROLES_PATH: "${HOME}/ansible_venv/repositories/roles"
vars:
inventory_file: "inventory/test-metal-inventory.yml"
pre_tasks:
- name: Create swap file
command: "dd if=/dev/zero of=/swap.img bs=1M count=4096"
args:
creates: /swap.img
register: swap_create
- name: Format the swap file
command: mkswap /swap.img
when:
- swap_create is changed
tags:
- swap-format
- skip_ansible_lint
- name: Enable swap file
command: swapon /swap.img
failed_when: false
tags:
- swap-format
- skip_ansible_lint
- name: Set system swappiness
sysctl:
name: vm.swappiness
value: 10
state: present
reload: "yes"
sysctl_file: /etc/sysctl.d/99-skydive.conf
- name: Create tmp skydive dir
file:
path: "/tmp/skydive-logs"
state: directory
- name: Flush iptables rules
command: "{{ item }}"
args:
creates: "/tmp/skydive-logs/iptables.flushed"
with_items:
- "iptables -F"
- "iptables -X"
- "iptables -t nat -F"
- "iptables -t nat -X"
- "iptables -t mangle -F"
- "iptables -t mangle -X"
- "iptables -P INPUT ACCEPT"
- "iptables -P FORWARD ACCEPT"
- "iptables -P OUTPUT ACCEPT"
- "touch /tmp/skydive-logs/iptables.flushed"
- name: First ensure apt cache is always refreshed
apt:
update_cache: yes
when:
- ansible_pkg_mgr == 'apt'
tasks:
- name: Run embedded ansible installation
become: yes
become_user: root
command: "./bootstrap-embedded-ansible.sh"
args:
chdir: "src/{{ current_test_repo }}/skydive"
- name: Run ansible-galaxy (tests)
become: yes
become_user: root
command: "${HOME}/ansible_venv/bin/ansible-galaxy install --force --ignore-errors --roles-path=${HOME}/ansible_venv/repositories/roles -r ansible-role-requirements.yml"
args:
chdir: "src/{{ current_test_repo }}/skydive/tests"
- name: Run ansible-galaxy (skydive)
become: yes
become_user: root
command: "${HOME}/ansible_venv/bin/ansible-galaxy install --force --ignore-errors --roles-path=${HOME}/ansible_venv/repositories/roles -r ansible-role-requirements.yml"
args:
chdir: "src/{{ current_test_repo }}/skydive"
- name: Run environment setup
become: yes
become_user: root
command: "${HOME}/ansible_venv/bin/ansible-playbook -i {{ inventory_file }} -e @test-vars.yml _key-setup.yml"
environment:
ANSIBLE_LOG_PATH: "/tmp/skydive-logs/ansible-skydive-test-deployment.log"
args:
chdir: "src/{{ current_test_repo }}/skydive/tests"
- name: Get the ops repo
git:
dest: "/opt/openstack-ansible-ops"
repo: https://git.openstack.org/openstack/openstack-ansible-ops
force: yes
track_submodules: yes
clone: yes
update: yes
recursive: yes
version: "HEAD"
- name: Run ansible-galaxy (elk_metrics_6x)
become: yes
become_user: root
command: "${HOME}/ansible_venv/bin/ansible-galaxy install --force --ignore-errors --roles-path=${HOME}/ansible_venv/repositories/roles -r ansible-role-requirements.yml"
args:
chdir: "/opt/openstack-ansible-ops/elk_metrics_6x"
- name: Deploy elk_metrics_6x
become: yes
become_user: root
command: "${HOME}/ansible_venv/bin/ansible-playbook -i tests/{{ inventory_file }} -e @tests/test-vars.yml installElastic.yml"
environment:
ANSIBLE_LOG_PATH: "/tmp/skydive-logs/ansible-skydive-test-deployment.log"
args:
chdir: "/opt/openstack-ansible-ops/elk_metrics_6x"
- name: Run functional test
become: yes
become_user: root
command: "${HOME}/ansible_venv/bin/ansible-playbook -i tests/{{ inventory_file }} -e @tests/test-vars.yml site.yml"
environment:
ANSIBLE_LOG_PATH: "/tmp/skydive-logs/ansible-skydive-test-deployment.log"
args:
chdir: "src/{{ current_test_repo }}/skydive"