-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add molecule tests for roles (#8080)
* Add molecule tests for bastion-ssh-config * Add molecule tests for adduser * Update .gitignore
- Loading branch information
Showing
10 changed files
with
158 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -99,3 +99,7 @@ target/ | |
# virtualenv | ||
venv/ | ||
ENV/ | ||
|
||
# molecule | ||
roles/**/molecule/**/__pycache__/ | ||
roles/**/molecule/**/*.conf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
- name: Converge | ||
hosts: all | ||
become: true | ||
gather_facts: false | ||
roles: | ||
- role: adduser | ||
vars: | ||
user: | ||
name: foo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
dependency: | ||
name: galaxy | ||
lint: | | ||
set -e | ||
yamllint -c ../../.yamllint . | ||
driver: | ||
name: vagrant | ||
provider: | ||
name: libvirt | ||
platforms: | ||
- name: adduser-01 | ||
box: generic/ubuntu2004 | ||
cpus: 1 | ||
memory: 512 | ||
provisioner: | ||
name: ansible | ||
lint: | ||
name: ansible-lint | ||
verifier: | ||
name: testinfra | ||
lint: | ||
name: flake8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
import os | ||
import yaml | ||
import glob | ||
import testinfra.utils.ansible_runner | ||
from ansible.playbook import Playbook | ||
from ansible.cli.playbook import PlaybookCLI | ||
|
||
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( | ||
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') | ||
|
||
def read_playbook(playbook): | ||
cli_args = [os.path.realpath(playbook), testinfra_hosts] | ||
cli = PlaybookCLI(cli_args) | ||
cli.parse() | ||
loader, inventory, variable_manager = cli._play_prereqs() | ||
|
||
pb = Playbook.load(cli.args[0], variable_manager, loader) | ||
|
||
for play in pb.get_plays(): | ||
yield variable_manager.get_vars(play) | ||
|
||
def get_playbook(): | ||
with open(os.path.realpath(' '.join(map(str,glob.glob('molecule.*')))), 'r') as yamlfile: | ||
data = yaml.load(yamlfile, Loader=yaml.FullLoader) | ||
if 'playbooks' in data['provisioner'].keys(): | ||
if 'converge' in data['provisioner']['playbooks'].keys(): | ||
return data['provisioner']['playbooks']['converge'] | ||
else: | ||
return ' '.join(map(str,glob.glob('converge.*'))) | ||
|
||
def test_user(host): | ||
for vars in read_playbook(get_playbook()): | ||
assert host.user(vars['user']['name']).exists | ||
if 'group' in vars['user'].keys(): | ||
assert host.group(vars['user']['group']).exists | ||
else: | ||
assert host.group(vars['user']['name']).exists |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
--- | ||
ssh_bastion_confing__name: ssh-bastion.conf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
--- | ||
- name: Converge | ||
hosts: all | ||
become: true | ||
gather_facts: false | ||
roles: | ||
- role: bastion-ssh-config | ||
tasks: | ||
- name: Copy config to remote host | ||
copy: | ||
src: "{{ playbook_dir }}/{{ ssh_bastion_confing__name }}" | ||
dest: "{{ ssh_bastion_confing__name }}" | ||
owner: "{{ ansible_user }}" | ||
group: "{{ ansible_user }}" | ||
mode: 0644 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
--- | ||
dependency: | ||
name: galaxy | ||
lint: | | ||
set -e | ||
yamllint -c ../../.yamllint . | ||
driver: | ||
name: vagrant | ||
provider: | ||
name: libvirt | ||
platforms: | ||
- name: bastion-01 | ||
box: generic/ubuntu2004 | ||
cpus: 1 | ||
memory: 512 | ||
provisioner: | ||
name: ansible | ||
lint: | ||
name: ansible-lint | ||
inventory: | ||
hosts: | ||
all: | ||
hosts: | ||
children: | ||
bastion: | ||
hosts: | ||
bastion-01: | ||
verifier: | ||
name: testinfra | ||
lint: | ||
name: flake8 |
34 changes: 34 additions & 0 deletions
34
roles/bastion-ssh-config/molecule/default/tests/test_default.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import os | ||
import yaml | ||
import glob | ||
import testinfra.utils.ansible_runner | ||
from ansible.playbook import Playbook | ||
from ansible.cli.playbook import PlaybookCLI | ||
|
||
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( | ||
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') | ||
|
||
def read_playbook(playbook): | ||
cli_args = [os.path.realpath(playbook), testinfra_hosts] | ||
cli = PlaybookCLI(cli_args) | ||
cli.parse() | ||
loader, inventory, variable_manager = cli._play_prereqs() | ||
|
||
pb = Playbook.load(cli.args[0], variable_manager, loader) | ||
|
||
for play in pb.get_plays(): | ||
yield variable_manager.get_vars(play) | ||
|
||
def get_playbook(): | ||
with open(os.path.realpath(' '.join(map(str,glob.glob('molecule.*')))), 'r') as yamlfile: | ||
data = yaml.load(yamlfile, Loader=yaml.FullLoader) | ||
if 'playbooks' in data['provisioner'].keys(): | ||
if 'converge' in data['provisioner']['playbooks'].keys(): | ||
return data['provisioner']['playbooks']['converge'] | ||
else: | ||
return ' '.join(map(str,glob.glob('converge.*'))) | ||
|
||
def test_ssh_config(host): | ||
for vars in read_playbook(get_playbook()): | ||
assert host.file(vars['ssh_bastion_confing__name']).exists | ||
assert host.file(vars['ssh_bastion_confing__name']).is_file |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.