Switch to testinfra for role validation
We can switch to using testinfra to help ensure ansible did everything properly. Change-Id: I9e21cd16f1149d76308043a97658c93e7f14ac42 Signed-off-by: Paul Belanger <pabelanger@redhat.com>
This commit is contained in:
parent
b5fd6f6672
commit
efc9d57e2c
|
@ -2,7 +2,9 @@
|
|||
name: ansible-role-nodepool-base
|
||||
pre-run: tests/playbooks/pre.yaml
|
||||
run: tests/playbooks/run.yaml
|
||||
post-run: tests/collect-logs.yaml
|
||||
post-run:
|
||||
- tests/playbooks/post.yaml
|
||||
- tests/collect-logs.yaml
|
||||
roles:
|
||||
- zuul: openstack/ansible-role-nodepool
|
||||
- zuul: openstack/zuul-jobs
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
ansible-lint
|
||||
hacking<0.11,>=0.10
|
||||
junit2html
|
||||
|
|
|
@ -13,6 +13,16 @@
|
|||
- nodepool-builder
|
||||
- nodepool-launcher
|
||||
|
||||
- name: Collect testinfra reports
|
||||
synchronize:
|
||||
dest: "{{ zuul_output_dir }}/logs"
|
||||
src: "{{ item }}"
|
||||
verify_host: true
|
||||
delegate_to: "{{ inventory_hostname }}"
|
||||
with_items:
|
||||
- "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/junit.xml"
|
||||
- "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/junit.xml.html"
|
||||
|
||||
- name: Prepare nodepool log files
|
||||
become: yes
|
||||
synchronize:
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
- hosts: all
|
||||
tasks:
|
||||
- block:
|
||||
- name: Run testinfra validation
|
||||
include_role:
|
||||
name: tox
|
||||
vars:
|
||||
tox_envlist: testinfra
|
||||
tox_install_siblings: false
|
||||
always:
|
||||
- name: Run junit2html
|
||||
include_role:
|
||||
name: tox
|
||||
vars:
|
||||
tox_envlist: venv
|
||||
tox_extra_args: -vv junit2html junit.xml
|
||||
tox_install_siblings: false
|
|
@ -34,105 +34,6 @@
|
|||
- nodepool_service_nodepool_builder
|
||||
- nodepool_service_nodepool_launcher
|
||||
|
||||
- name: Ensure nodepool_user_name is nodepool.
|
||||
shell: /usr/bin/getent passwd nodepool
|
||||
tags: skip_ansible_lint
|
||||
|
||||
- name: Ensure nodepool_user_group is nodepool.
|
||||
shell: /usr/bin/getent group nodepool
|
||||
tags: skip_ansible_lint
|
||||
|
||||
- name: Register nodepool_user_home_getent.
|
||||
shell: '/usr/bin/getent passwd nodepool | cut -d: -f6'
|
||||
register: nodepool_user_home_getent
|
||||
tags: skip_ansible_lint
|
||||
|
||||
- name: Assert nodepool_user_home is /var/lib/nodepool.
|
||||
assert:
|
||||
that:
|
||||
- nodepool_user_home_getent.stdout == '/var/lib/nodepool'
|
||||
|
||||
- name: Register /opt/nodepool/images
|
||||
stat:
|
||||
path: /opt/nodepool/images
|
||||
register: _nodepool_images_dir_stat
|
||||
|
||||
- name: Assert /opt/nodepool/images tests.
|
||||
assert:
|
||||
that:
|
||||
- _nodepool_images_dir_stat.stat.exists
|
||||
- _nodepool_images_dir_stat.stat.isdir
|
||||
- _nodepool_images_dir_stat.stat.pw_name == 'nodepool'
|
||||
- _nodepool_images_dir_stat.stat.gr_name == 'nodepool'
|
||||
- _nodepool_images_dir_stat.stat.mode == '0755'
|
||||
|
||||
- name: Register /etc/nodepool/nodepool.yaml
|
||||
stat:
|
||||
path: /etc/nodepool/nodepool.yaml
|
||||
register: nodepool_yaml_stat
|
||||
|
||||
- name: Assert nodepool_yaml_stat tests.
|
||||
assert:
|
||||
that:
|
||||
- nodepool_yaml_stat.stat.exists
|
||||
- nodepool_yaml_stat.stat.isreg
|
||||
- nodepool_yaml_stat.stat.pw_name == 'nodepool'
|
||||
- nodepool_yaml_stat.stat.gr_name == 'nodepool'
|
||||
- nodepool_yaml_stat.stat.mode == '0644'
|
||||
|
||||
- name: Register /etc/nodepool/builder-logging.conf
|
||||
stat:
|
||||
path: /etc/nodepool/builder-logging.conf
|
||||
register: builder_logging_conf_stat
|
||||
|
||||
- name: Assert buidler_logging_conf_stat tests.
|
||||
assert:
|
||||
that:
|
||||
- builder_logging_conf_stat.stat.exists
|
||||
- builder_logging_conf_stat.stat.isreg
|
||||
- builder_logging_conf_stat.stat.pw_name == 'nodepool'
|
||||
- builder_logging_conf_stat.stat.gr_name == 'nodepool'
|
||||
- builder_logging_conf_stat.stat.mode == '0644'
|
||||
|
||||
- name: Register /etc/nodepool/launcher-logging.conf
|
||||
stat:
|
||||
path: /etc/nodepool/launcher-logging.conf
|
||||
register: launcher_logging_conf_stat
|
||||
|
||||
- name: Assert buidler_logging_conf_stat tests.
|
||||
assert:
|
||||
that:
|
||||
- launcher_logging_conf_stat.stat.exists
|
||||
- launcher_logging_conf_stat.stat.isreg
|
||||
- launcher_logging_conf_stat.stat.pw_name == 'nodepool'
|
||||
- launcher_logging_conf_stat.stat.gr_name == 'nodepool'
|
||||
- launcher_logging_conf_stat.stat.mode == '0644'
|
||||
|
||||
- name: Register /etc/nodepool/secure.conf
|
||||
stat:
|
||||
path: /etc/nodepool/secure.conf
|
||||
register: secure_conf_stat
|
||||
|
||||
- name: Assert secure_conf_stat tests.
|
||||
assert:
|
||||
that:
|
||||
- secure_conf_stat.stat.exists
|
||||
- secure_conf_stat.stat.isreg
|
||||
- secure_conf_stat.stat.pw_name == 'nodepool'
|
||||
- secure_conf_stat.stat.gr_name == 'nodepool'
|
||||
- secure_conf_stat.stat.mode == '0600'
|
||||
|
||||
- name: Register nodepool_user_home_stat.
|
||||
stat:
|
||||
path: /var/lib/nodepool
|
||||
register: nodepool_user_home_stat
|
||||
|
||||
- name: Assert nodepool_user_home tests.
|
||||
assert:
|
||||
that:
|
||||
- nodepool_user_home_stat.stat.exists
|
||||
- nodepool_user_home_stat.stat.isdir
|
||||
|
||||
- name: Register nodepool_git_dest_stat.
|
||||
stat:
|
||||
path: /home/zuul/src/git.openstack.org/openstack-infra/nodepool
|
||||
|
@ -145,41 +46,3 @@
|
|||
- nodepool_git_dest_stat.stat.exists
|
||||
- nodepool_git_dest_stat.stat.isdir
|
||||
when: nodepool_install_method == 'git'
|
||||
|
||||
- name: Register /etc/systemd/system/nodepool-builder.service
|
||||
stat:
|
||||
path: /etc/systemd/system/nodepool-builder.service
|
||||
register: _nodepool_builder_service_systemd_stat
|
||||
|
||||
- name: Assert _nodepool_builder_service_systemd_stat tests.
|
||||
assert:
|
||||
that:
|
||||
- _nodepool_builder_service_systemd_stat.stat.exists
|
||||
- _nodepool_builder_service_systemd_stat.stat.isreg
|
||||
- _nodepool_builder_service_systemd_stat.stat.pw_name == 'root'
|
||||
- _nodepool_builder_service_systemd_stat.stat.gr_name == 'root'
|
||||
- _nodepool_builder_service_systemd_stat.stat.mode == '0644'
|
||||
|
||||
- name: Ensure nodepool-builder is running.
|
||||
become: yes
|
||||
shell: /usr/sbin/service nodepool-builder status
|
||||
tags: skip_ansible_lint
|
||||
|
||||
- name: Register /etc/systemd/system/nodepool-launcher.service
|
||||
stat:
|
||||
path: /etc/systemd/system/nodepool-launcher.service
|
||||
register: _nodepool_launcher_service_systemd_stat
|
||||
|
||||
- name: Assert _nodepool_launcher_service_systemd_stat tests.
|
||||
assert:
|
||||
that:
|
||||
- _nodepool_launcher_service_systemd_stat.stat.exists
|
||||
- _nodepool_launcher_service_systemd_stat.stat.isreg
|
||||
- _nodepool_launcher_service_systemd_stat.stat.pw_name == 'root'
|
||||
- _nodepool_launcher_service_systemd_stat.stat.gr_name == 'root'
|
||||
- _nodepool_launcher_service_systemd_stat.stat.mode == '0644'
|
||||
|
||||
- name: Ensure nodepool-launcher is running.
|
||||
become: yes
|
||||
shell: /usr/sbin/service nodepool-launcher status
|
||||
tags: skip_ansible_lint
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
# Copyright 2018 Red Hat, 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.
|
||||
|
||||
|
||||
def test_nodepool_user(host):
|
||||
user = host.user('nodepool')
|
||||
assert user.exists
|
||||
assert user.name == 'nodepool'
|
||||
assert user.group == 'nodepool'
|
||||
assert user.home == '/var/lib/nodepool'
|
||||
|
||||
f = host.file('/var/lib/nodepool')
|
||||
assert f.exists
|
||||
assert f.is_directory
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
# TODO(pabelanger): Validate mode
|
||||
|
||||
|
||||
def test_nodepool_config(host):
|
||||
f = host.file('/etc/nodepool')
|
||||
assert f.exists
|
||||
assert f.is_directory
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
# TODO(pabelanger): Validate mode
|
||||
del f
|
||||
|
||||
f = host.file('/etc/nodepool/nodepool.yaml')
|
||||
assert f.exists
|
||||
assert f.is_file
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
assert f.mode == 0o644
|
||||
del f
|
||||
|
||||
f = host.file('/etc/nodepool/secure.conf')
|
||||
assert f.exists
|
||||
assert f.is_file
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
assert f.mode == 0o600
|
||||
|
||||
|
||||
def test_nodepool_images_directory(host):
|
||||
f = host.file('/opt/nodepool/images')
|
||||
assert f.exists
|
||||
assert f.is_directory
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
assert f.mode == 0o755
|
||||
|
||||
|
||||
def test_nodepool_builder_logging_config(host):
|
||||
f = host.file('/etc/nodepool/builder-logging.conf')
|
||||
assert f.exists
|
||||
assert f.is_file
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
assert f.mode == 0o644
|
||||
|
||||
|
||||
def test_nodepool_builder_service(host):
|
||||
f = host.file('/etc/systemd/system/nodepool-builder.service')
|
||||
assert f.exists
|
||||
assert f.is_file
|
||||
assert f.user == 'root'
|
||||
assert f.group == 'root'
|
||||
assert f.mode == 0o644
|
||||
|
||||
service = host.service('nodepool-builder')
|
||||
assert service.is_running
|
||||
assert service.is_enabled
|
||||
|
||||
|
||||
def test_nodepool_launcher_logging_config(host):
|
||||
f = host.file('/etc/nodepool/launcher-logging.conf')
|
||||
assert f.exists
|
||||
assert f.is_file
|
||||
assert f.user == 'nodepool'
|
||||
assert f.group == 'nodepool'
|
||||
assert f.mode == 0o644
|
||||
|
||||
|
||||
def test_nodepool_launcher_service(host):
|
||||
f = host.file('/etc/systemd/system/nodepool-launcher.service')
|
||||
assert f.exists
|
||||
assert f.is_file
|
||||
assert f.user == 'root'
|
||||
assert f.group == 'root'
|
||||
assert f.mode == 0o644
|
||||
|
||||
service = host.service('nodepool-launcher')
|
||||
assert service.is_running
|
||||
assert service.is_enabled
|
Loading…
Reference in New Issue