Skip to content

Commit 2d55f6a

Browse files
authored
Merge pull request #16 from robertdebock/gentoo
Gentoo
2 parents c99563c + 815209d commit 2d55f6a

File tree

11 files changed

+138
-0
lines changed

11 files changed

+138
-0
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ env:
3131
- version=">=2.4,<2.5" distro="fedora-rawhide"
3232
- version=">=2.5,<2.6" distro="fedora-rawhide"
3333
- version=">=2.6,<2.7" distro="fedora-rawhide"
34+
- version=">=2.4,<2.5" distro="gentoo"
35+
- version=">=2.5,<2.6" distro="gentoo"
36+
- version=">=2.6,<2.7" distro="gentoo"
3437
- version=">=2.4,<2.5" distro="opensuse-leap"
3538
- version=">=2.5,<2.6" distro="opensuse-leap"
3639
- version=">=2.6,<2.7" distro="opensuse-leap"

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ A benefit is that this role prepares nearly any (Linux) system, including:
1414
- CentOS
1515
- Debian
1616
- Fedora
17+
- Gentoo
1718
- Red Hat
1819
- OpenSUSE
1920
- Ubuntu

meta/main.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ galaxy_info:
2828
- name: Fedora
2929
versions:
3030
- all
31+
- name: Gentoo
32+
version:
33+
- all
3134
- name: OpenSUSE
3235
versions:
3336
- all

molecule/gentoo/Dockerfile.j2

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Molecule managed
2+
3+
{% if item.registry is defined %}
4+
FROM {{ item.registry.url }}/{{ item.image }}
5+
{% else %}
6+
FROM {{ item.image }}
7+
{% endif %}

molecule/gentoo/molecule.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
dependency:
3+
name: galaxy
4+
options:
5+
role-file: requirements.yml
6+
driver:
7+
name: docker
8+
lint:
9+
name: yamllint
10+
platforms:
11+
- name: bootstrap-gentoo
12+
image: gentoo/stage3-amd64
13+
provisioner:
14+
name: ansible
15+
lint:
16+
name: ansible-lint
17+
scenario:
18+
name: gentoo
19+
verifier:
20+
name: goss
21+
lint:
22+
name: yamllint

molecule/gentoo/playbook.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
- name: Converge
3+
hosts: all
4+
gather_facts: false
5+
become: true
6+
7+
roles:
8+
- role: ansible-role-bootstrap
9+
10+
tasks:
11+
- name: test connection
12+
ping:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Molecule managed
2+
---
3+
file:
4+
/usr/bin/python:
5+
exists: true
6+
owner: root
7+
group: root

molecule/gentoo/verify.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
# This is an example playbook to execute goss tests.
3+
# Tests need distributed to the appropriate ansible host/groups
4+
# prior to execution by `goss validate`.
5+
6+
- name: Verify
7+
hosts: all
8+
become: true
9+
vars:
10+
goss_version: v0.3.2
11+
goss_arch: amd64
12+
goss_dst: /usr/local/bin/goss
13+
goss_sha256sum: 2f6727375db2ea0f81bee36e2c5be78ab5ab8d5981f632f761b25e4003e190ec
14+
goss_url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}"
15+
goss_test_directory: /tmp
16+
goss_format: documentation
17+
tasks:
18+
- name: Download and install Goss
19+
get_url:
20+
url: "{{ goss_url }}"
21+
dest: "{{ goss_dst }}"
22+
sha256sum: "{{ goss_sha256sum }}"
23+
mode: 0755
24+
register: download_goss
25+
until: download_goss is succeeded
26+
retries: 3
27+
28+
- name: Copy Goss tests to remote
29+
copy:
30+
src: "{{ item }}"
31+
dest: "{{ goss_test_directory }}/{{ item | basename }}"
32+
with_fileglob:
33+
- "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}/test_*.yml"
34+
35+
- name: Register test files
36+
shell: "ls {{ goss_test_directory }}/test_*.yml"
37+
register: test_files
38+
39+
- name: Execute Goss tests
40+
command: "{{ goss_dst }} -g {{ item }} validate --format {{ goss_format }}"
41+
register: test_results
42+
with_items: "{{ test_files.stdout_lines }}"
43+
44+
- name: Display details about the Goss results
45+
debug:
46+
msg: "{{ item.stdout_lines }}"
47+
with_items: "{{ test_results.results }}"
48+
49+
- name: Fail when tests fail
50+
fail:
51+
msg: "Goss failed to validate"
52+
when: item.rc != 0
53+
with_items: "{{ test_results.results }}"

tasks/main.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@
3535
become: no
3636
check_mode: no
3737

38+
- name: register emerge
39+
raw: emerge --version
40+
register: emerge
41+
changed_when: no
42+
failed_when: no
43+
become: no
44+
check_mode: no
45+
3846
- name: register pacman
3947
raw: pacman --version
4048
register: pacman
@@ -97,6 +105,17 @@
97105
until: dnfresult is succeeded
98106
retries: 3
99107

108+
- name: install software with emerge
109+
raw: equery l {{ bootstrap_emerge_packages }} || (emaint -a sync ; emerge -qkv {{ bootstrap_emerge_packages }} ; echo "changed")
110+
when:
111+
- emerge.rc == 0
112+
register: emergeresult
113+
changed_when:
114+
- "'changed' in emergeresult.stdout"
115+
remote_user: "{{ bootstrap_user }}"
116+
until: emergeresult is succeeded
117+
retries: 3
118+
100119
- name: install software with pacman
101120
raw: pacman -Syu ; pacman -T {{ bootstrap_pacman_packages }} || pacman -S --noconfirm {{ bootstrap_pacman_packages }}
102121
when:
@@ -133,6 +152,7 @@
133152

134153
- name: gather facts
135154
setup:
155+
become: no
136156

137157
- name: load os-specific variables
138158
include_vars: "{{ item }}"

vars/Gentoo.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# vars file for bootstrap
3+
bootstrap_stable_packages: []
4+
5+
bootstrap_preview_packages:
6+
- gzip
7+
- tar
8+
- unzip

0 commit comments

Comments
 (0)