Skip to content
Snippets Groups Projects
Commit 473fd2c1 authored by nimrod's avatar nimrod
Browse files

Merge branch 'master' of /home/nimrod/Documents/Shore/Ansible/example

# Conflicts:
#	.travis.yml
#	meta/main.yml
#	molecule.yml
#	tasks/main.yml
#	tests/playbook.yml
#	tests/test_example.py
parents 3b19761c 4555313c
No related branches found
No related tags found
No related merge requests found
...@@ -9,3 +9,4 @@ __pycache__ ...@@ -9,3 +9,4 @@ __pycache__
.vagrant/ .vagrant/
*.log *.log
*.retry *.retry
.tox
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
sha: 7539d8bd1a00a3c1bfd34cdb606d3a6372e83469 sha: v0.9.3
hooks: hooks:
- id: check-added-large-files - id: check-added-large-files
- id: check-json - id: check-json
...@@ -9,27 +9,15 @@ ...@@ -9,27 +9,15 @@
- id: flake8 - id: flake8
- id: check-symlinks - id: check-symlinks
- repo: https://github.com/adarnimrod/ansible-pre-commit.git - repo: https://github.com/adarnimrod/ansible-pre-commit.git
sha: 0fadd691465b97db8992cfc66650f630e433324b sha: v0.7.0
hooks: hooks:
- id: ansible-syntax-check - id: ansible-syntax-check
always_run: true
files: tests/playbook.yml
args:
- tests/playbook.yml
- repo: https://github.com/willthames/ansible-lint - repo: https://github.com/willthames/ansible-lint
sha: 959ab0f525e9abb19cf75f34381015cf33695f61 sha: v3.4.15
hooks: hooks:
- id: ansible-lint - id: ansible-lint
always_run: true
files: tests/playbook.yml files: tests/playbook.yml
args: - repo: https://github.com/adarnimrod/python-pre-commit.git
- tests/playbook.yml sha: v0.2.0
- repo: local
hooks: hooks:
- id: piprot - id: piprot
name: piprot
description: Check up-to-date Python requirements
language: system
entry: piprot --quiet --outdated tests/requirements.txt
files: requirements.txt
always_run: true
--- ---
language: python language: python
python: ["2.7", "3.4"] python: "2.7"
dist: trusty dist: trusty
sudo: True sudo: True
group: beta group: beta
services: [docker] env:
global:
- VBOX_MEMORY=2048
- VBOX_HWVIRTEX=off
matrix:
- TOXENV=openbsd60
- TOXENV=xenial
- TOXENV=trusty
- TOXENV=precise
- &stretch TOXENV=stretch
- &jessie TOXENV=jessie
- TOXENV=wheezy
cache: cache:
- pip - pip
- directories: - directories:
- $HOME/.pre-commit - $HOME/.pre-commit
matrix: - $HOME/.vagrant.d/boxes
fast_finish: True
allow_failures:
- python: "3.4"
install: install:
- sudo apt-get update - sudo apt-get update
- sudo apt-get install -y linux-headers-$(uname -r) virtualbox - sudo apt-get install -y linux-headers-$(uname -r) virtualbox
- wget https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.deb - wget https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.deb
- sudo dpkg -i vagrant_1.9.1_x86_64.deb - sudo dpkg -i vagrant_1.9.1_x86_64.deb
- pip install -r tests/requirements.txt | cat - &pip_install pip install tox-travis | cat
- ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles
- molecule dependency
- for image in ubuntu:precise ubuntu:trusty ubuntu:xenial debian:wheezy debian:jessie debian:stretch; do docker pull $image; done
script: script:
- pre-commit run --all-files - travis_wait 45 tox
- molecule test --driver docker
notifications: notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/ webhooks: https://galaxy.ansible.com/api/v1/notifications/
email: false email: false
on_failure: never
matrix:
fast_finish: True
allow_failures:
- env: *stretch
include:
- env:
TOXENV: pre-commit
install:
- *pip_install
sudo: False
/*
Jenkins pipeline for testing an Ansible role.
Required software on the agent:
- Python 2.7.
- Tox.
- Vagrant.
- Virtualbox.
*/
pipeline {
agent any
environment {
VBOX_HWVIRTEX = off
}
stages {
stage('install') {
steps {
sh 'git submodule update --init --recursive'
}
}
stage('test') {
steps {
parallel (
'pre-commit': {
sh 'tox -e pre-commit'
}
'molecule': {
sh 'tox'
}
)
}
}
}
post {
success {
sh 'tox -e import'
}
}
}
...@@ -30,22 +30,9 @@ See :code:`tests/playbook.yml`. ...@@ -30,22 +30,9 @@ See :code:`tests/playbook.yml`.
Testing Testing
------- -------
Testing requires Python 2.7 and either Docker or Vagrant and Virtualbox. Testing requires Python 2.7, Tox, Vagrant and Virtualbox. To test simply run
Install the Python dependencies, dependent roles and roles required for :code:`tox`. `Pre-commit <http://pre-commit.com/>`_ is also setup for this
testing: project.
.. code:: shell
pip install -r tests/requirements.txt
ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles
molecule dependency
To run the full test suite:
.. code:: shell
pre-commit run --all-files
molecule test --platform all
License License
------- -------
......
...@@ -3,15 +3,17 @@ galaxy_info: ...@@ -3,15 +3,17 @@ galaxy_info:
description: Role to bootstrap a Debian or derivative instance (allow Ansible to provision the instance). description: Role to bootstrap a Debian or derivative instance (allow Ansible to provision the instance).
company: Shore technologies. company: Shore technologies.
license: MIT license: MIT
min_ansible_version: 2.0 min_ansible_version: 2.3
platforms: platforms:
- name: Debian
versions:
- jessie
- stretch
- name: Ubuntu - name: Ubuntu
versions: versions:
- trusty
- xenial - xenial
- trusty
- precise
- name: Debian
versions:
- stretch
- jessie
- wheezy
galaxy_tags: ['Debian', 'bootstrap', 'Ubuntu'] galaxy_tags: ['Debian', 'bootstrap', 'Ubuntu']
dependencies: [] dependencies: []
...@@ -5,6 +5,13 @@ ansible: ...@@ -5,6 +5,13 @@ ansible:
diff: True diff: True
config_file: ../ansible.cfg config_file: ../ansible.cfg
molecule:
ignore_paths:
- .tox
dependency:
name: galaxy
requirements_file: tests/requirements.yml
vagrant: vagrant:
providers: providers:
...@@ -13,71 +20,32 @@ vagrant: ...@@ -13,71 +20,32 @@ vagrant:
options: options:
cpus: 1 cpus: 1
platforms: platforms:
- name: openbsd60
box: fnichol/openbsd-6.0-i386
- name: xenial - name: xenial
box: ubuntu/xenial32 box: ubuntu/xenial32
- name: trusty - name: trusty
box: ubuntu/trusty32 box: ubuntu/trusty32
- name: jessie
box: debian/jessie32
- name: wheezy
box: debian/wheezy32
- name: precise - name: precise
box: hashicorp/precise32 box: hashicorp/precise32
- name: stretch
box: koalephant/debian9-i386
- name: jessie
box: deb/jessie-i386
- name: wheezy
box: bmorg/debian-wheezy-i386
instances: instances:
- name: debian-bootstrap - name: debian-bootstrap
options: options:
append_platform_to_hostname: yes append_platform_to_hostname: yes
raw_config_args: raw_config_args:
- 'vm.boot_timeout = 600'
- 'vm.synced_folder ".", "/vagrant", disabled: true' - 'vm.synced_folder ".", "/vagrant", disabled: true'
- 'vbguest.auto_update = false if Vagrant.has_plugin?("vbguest")' - 'vbguest.auto_update = false if Vagrant.has_plugin?("vbguest")'
- 'landrush.enabled = false if Vagrant.has_plugin?("landrush")' - 'landrush.enabled = false if Vagrant.has_plugin?("landrush")'
- 'landrush_ip.override = false if Vagrant.has_plugin?("landrush")' - 'landrush_ip.override = false if Vagrant.has_plugin?("landrush")'
- | - |
vm.provider "virtualbox" do |v| vm.provider "virtualbox" do |v|
v.customize "pre-boot", ["modifyvm", :id, "--hwvirtex", "off"] v.customize "pre-boot", ["modifyvm", :id, "--hwvirtex", ENV['VBOX_HWVIRTEX']] if ENV.has_key?('VBOX_HWVIRTEX')
v.memory = ENV['VBOX_MEMORY'].to_i if ENV.has_key?('VBOX_MEMORY')
end end
docker:
build_image: False
containers:
- name: debian-bootstrap-xenial
image: ubuntu
image_version: xenial
command: /sbin/init
privileged: True
volume_mounts:
- /sys/fs/cgroup:/sys/fs/cgroup
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
environment:
DEBIAN_FRONTEND: noninteractive
container: docker
- name: debian-bootstrap-trusty
image: ubuntu
image_version: trusty
environment:
DEBIAN_FRONTEND: noninteractive
container: docker
- name: debian-bootstrap-precise
image: ubuntu
image_version: precise
environment:
DEBIAN_FRONTEND: noninteractive
container: docker
- name: debian-bootstrap-jessie
image: debian
image_version: jessie
environment:
DEBIAN_FRONTEND: noninteractive
container: docker
- name: debian-bootstrap-stretch
image: debian
image_version: stretch
environment:
DEBIAN_FRONTEND: noninteractive
container: docker
- name: debian-bootstrap-wheezy
image: debian
image_version: wheezy
environment:
DEBIAN_FRONTEND: noninteractive
container: docker
--- ---
- hosts: all - hosts: debian-bootstrap-openbsd*
gather_facts: False gather_facts: false
roles: [debian-bootstrap] roles:
post_tasks: - openbsd-bootstrap
- name: APT install sudo - role: users
apt: users: []
name: sudo users_use_sudo: True
state: present users_lock_root_ssh: False
- hosts: [debian-bootstrap-xenial, debian-bootstrap-wheezy]
gather_facts: false
roles:
- debian-bootstrap
- role: users
users: []
users_use_sudo: True
users_lock_root_ssh: False
post_tasks:
- name: Test gathering facts - name: Test gathering facts
setup: setup:
......
ansible==2.2.1.0 ansible==2.3.2.0
testinfra==1.5.2 testinfra==1.7.0
molecule==1.18.0 molecule<2
ansible-lint==3.4.10 ansible-lint==3.4.15
pre-commit==0.10.1 python-vagrant==0.5.15
piprot==0.9.7
python-vagrant==0.5.14
docker-py==1.10.6
netaddr==0.7.19 netaddr==0.7.19
passlib==1.7.0 passlib==1.7.1
bcrypt==3.1.2 bcrypt==3.1.3
...@@ -3,3 +3,5 @@ ...@@ -3,3 +3,5 @@
name: openbsd-bootstrap name: openbsd-bootstrap
- src: adarnimrod.debian-bootstrap - src: adarnimrod.debian-bootstrap
name: debian-bootstrap name: debian-bootstrap
- src: adarnimrod.users
name: users
...@@ -3,5 +3,10 @@ from testinfra.utils.ansible_runner import AnsibleRunner ...@@ -3,5 +3,10 @@ from testinfra.utils.ansible_runner import AnsibleRunner
testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all') testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all')
def test_example(Command): def test_example(host):
assert Command('uname').rc == 0 assert host.run('uname').rc == 0
def test_root(host):
with host.sudo():
assert host.run('whoami').stdout.strip() == 'root'
tox.ini 0 → 100644
[tox]
skip_install = True
skipsdist = True
envlist = openbsd60,xenial,trusty,precise,stretch,jessie,wheezy
[testenv]
envdir = {toxinidir}/.tox/molecule
deps = -rtests/requirements.txt
passenv = HOME VBOX* ANSIBLE_*
whitelist_externals =
sh
commands =
sh -c "ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles"
molecule test --platform {envname}
[testenv:pre-commit]
deps =
{[testenv]deps}
pre-commit
passenv = {[testenv]passenv}
whitelist_externals = {[testenv]whitelist_externals}
commands =
sh -c "ansible-galaxy install git+file://$(pwd),$(git rev-parse --abbrev-ref HEAD) -p .molecule/roles"
molecule dependency
pre-commit run --all-files
[testenv:import]
envdir = {[testenv]envdir}
deps = {[testenv]deps}
passenv = {[testenv]passenv}
commands = ansible-galaxy import -v
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment