Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
sudo: required
language: python
services:
- docker

before_install:
- sudo apt-get -qq update

install:
- pip install -r requirements.txt

script:
- tox

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ timezone

Role Variables
--------------

```

# Default timezone. Must be a valid tz database time zone.
Expand All @@ -14,7 +15,6 @@ timezone: UTC

Example Playbook
-------------------------
### playbook.yml

```

Expand Down
41 changes: 21 additions & 20 deletions meta/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,24 @@ galaxy_info:
license: license (Apache 2.0)
min_ansible_version: 1.9
platforms:
- name: Ubuntu
versions:
- precise
- trusty
- name: Debian
versions:
- squeeze
- wheezy
- jessie
- name: EL
versions:
- 6
- 7
- name: Fedora
versions:
- 19
- 20
categories:
- system
dependencies: []
- name: Ubuntu
versions:
- precise
- trusty
- name: Debian
versions:
- squeeze
- wheezy
- jessie
- name: EL
versions:
- 6
- 7
- name: Fedora
versions:
- 19
- 20
galaxy_tags:
- system
role_name: timezone
dependencies: []
14 changes: 14 additions & 0 deletions molecule/default/Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Molecule managed

{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}

RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python sudo python-devel python2-dnf bash && dnf clean all; \
elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi
26 changes: 26 additions & 0 deletions molecule/default/INSTALL.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
*******
Docker driver installation guide
*******

Requirements
============

* General molecule dependencies (see https://molecule.readthedocs.io/en/latest/installation.html)
* Docker Engine
* docker-py
* docker

Install
=======

Ansible < 2.6

.. code-block:: bash

$ sudo pip install docker-py

Ansible >= 2.6

.. code-block:: bash

$ sudo pip install docker
31 changes: 31 additions & 0 deletions molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
dependency:
name: galaxy
requirements_file: requirements.yml
driver:
name: docker
verifier:
name: goss
lint:
name: yamllint
platforms:
- name: timezone-centos7
image: centos:7
privileged: true
- name: timezone-centos6
image: centos:6
privileged: true
- name: timezone-debian
image: debian
privileged: true
provisioner:
name: ansible
config_options:
defaults:
remote_tmp: /tmp
playbooks:
converge: playbook.yml
lint:
name: ansible-lint
scenario:
name: default
7 changes: 7 additions & 0 deletions molecule/default/playbook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
- hosts: all

vars:
timezone: 'America/New_York'
roles:
- role: ansible-timezone
17 changes: 17 additions & 0 deletions molecule/default/tests/test_timezone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---

file:
/etc/localtime:
exists: true
mode: "0777"
owner: root
group: root
filetype: symlink
contains: []
/usr/share/zoneinfo:
exists: true
mode: "0755"
owner: root
group: root
filetype: directory
contains: []
56 changes: 56 additions & 0 deletions molecule/default/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
# This is an example playbook to execute goss tests.
# Tests need distributed to the appropriate ansible host/groups
# prior to execution by `goss validate`.

- name: Verify
hosts: all
become: true
vars:
goss_version: v0.3.2
goss_arch: amd64
goss_dst: /usr/local/bin/goss
# yamllint disable-line rule:line-length
goss_sha256sum: 2f6727375db2ea0f81bee36e2c5be78ab5ab8d5981f632f761b25e4003e190ec
# yamllint disable-line rule:line-length
goss_url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}"
goss_test_directory: /tmp
goss_format: documentation
tasks:
- name: Download and install Goss
get_url:
url: "{{ goss_url }}"
dest: "{{ goss_dst }}"
sha256sum: "{{ goss_sha256sum }}"
mode: 0755
register: download_goss
until: download_goss is succeeded
retries: 3

- name: Copy Goss tests to remote
copy:
src: "{{ item }}"
dest: "{{ goss_test_directory }}/{{ item | basename }}"
with_fileglob:
- "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}/test_*.yml"

- name: Register test files
shell: "ls {{ goss_test_directory }}/test_*.yml"
register: test_files

- name: Execute Goss tests
# yamllint disable-line rule:line-length
command: "{{ goss_dst }} -g {{ item }} validate --format {{ goss_format }}"
register: test_results
with_items: "{{ test_files.stdout_lines }}"

- name: Display details about the Goss results
debug:
msg: "{{ item.stdout_lines }}"
with_items: "{{ test_results.results }}"

- name: Fail when tests fail
fail:
msg: "Goss failed to validate"
when: item.rc != 0
with_items: "{{ test_results.results }}"
3 changes: 3 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
tox
molecule
docker
50 changes: 28 additions & 22 deletions tasks/timezone.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,49 @@
---
- include_vars: "{{ item }}"
- name: include platform vars
include_vars: "{{ item }}"
with_first_found:
- "../vars/{{ ansible_distribution }}.yml"
- "../vars/{{ ansible_os_family }}.yml"
- "../vars/{{ ansible_distribution }}.yml"
- "../vars/{{ ansible_os_family }}.yml"
tags: ['timezone']

- name: Install tzdata for Debian based distros
apt: name={{timezone_package}}
update_cache=yes
cache_valid_time=86400
state=present
apt:
name: "{{ timezone_package }}"
update_cache: true
cache_valid_time: 86400
state: present
when: ansible_os_family == 'Debian'
tags: ['timezone']
become: yes
become: true

- name: Install tzdata for RedHat based distros
yum: name={{timezone_package}}
state=present
yum:
name: "{{ timezone_package }}"
state: present
when: ansible_os_family == 'RedHat'
tags: ['timezone']
become: yes
become: true

- name: Install tzdata for Archlinux based distros
pacman: name={{timezone_package}}
state=present
pacman:
name: "{{ timezone_package }}"
state: present
when: ansible_os_family == 'Archlinux' or ansible_os_family == 'Arch Linux'
tags: ['timezone']
become: yes
become: true

- name: Set timezone config
template: src="timezone-{{ansible_os_family}}.j2"
dest={{timezone_file}}
template:
src: "timezone-{{ ansible_os_family }}.j2"
dest: "{{ timezone_file }}"
tags: ['timezone']
become: yes
become: true

- name: Set link to localtime
file: state=link
src={{zoneinfo_dir}}{{timezone}}
dest={{localtime_file}}
force=yes
file:
state: link
src: "{{ zoneinfo_dir }}{{ timezone }}"
dest: "{{ localtime_file }}"
force: true
tags: ['timezone']
become: yes
become: true
1 change: 0 additions & 1 deletion templates/timezone-Arch Linux.j2

This file was deleted.

15 changes: 15 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[tox]
minversion = 1.8
envlist = py{36,37}-ansible{28,devel}
skipsdist = true
skip_missing_interpreters = True

[testenv]
passenv = *
deps =
-rrequirements.txt
ansible28: ansible>=2.8,<2.9
ansibledevel: git+https://github.com/ansible/ansible.git
commands =
pip list
molecule test
1 change: 0 additions & 1 deletion vars/Arch Linux.yml

This file was deleted.