Skip to content

Commit

Permalink
fix: ensure formula works across all platforms
Browse files Browse the repository at this point in the history
Before:

* https://travis-ci.org/github/myii/timezone-formula/builds/665820454

After:

* https://travis-ci.org/github/myii/timezone-formula/builds/665975767
* https://travis-ci.org/github/myii/timezone-formula/builds/666039725 (all platforms)

Includes:

* fix(init.sls): ensure `dbus` is available for `timezone.system` state
* fix(init.sls): use symlink to `UTC` if `localtime` does not exist
* fix(init.sls): force the creation of the initial symlink
* fix: avoid running `dbus` service on `ubuntu-16.04`, `amazonlinux-1` & `centos-6`
  • Loading branch information
myii committed Mar 23, 2020
1 parent 4cdaaf8 commit ff66e5f
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 17 deletions.
5 changes: 5 additions & 0 deletions timezone/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
---
timezone:
name: Europe/Berlin
tz_UTC: Etc/UTC
utc: true
path_localtime: /etc/localtime
path_zoneinfo: /usr/share/zoneinfo/
pkg:
name: tzdata
dbus:
pkg: dbus
service: dbus
run_service: true
47 changes: 34 additions & 13 deletions timezone/init.sls
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,44 @@
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import timezone with context %}
timezone_setting:
timezone.system:
- name: {{ timezone.name }}
- utc: {{ timezone.utc }}
{%- if grains.os not in ('MacOS', 'Windows') %}
timezone_packages:
pkg.installed:
- name: {{ timezone.pkg.name }}
timezone_symlink:
{#- Work around bug in Salt for certain platforms where symlink isn't available #}
{%- if not salt['file.file_exists'](timezone.path_localtime) %}
file.symlink:
- name: {{ timezone.path_localtime }}
- target: {{ timezone.path_zoneinfo }}{{ timezone.name }}
- target: {{ timezone.path_zoneinfo }}{{ timezone.tz_UTC }}
- force: true
- require:
- pkg: {{ timezone.pkg.name }}
- require_in:
# Required for unattended installation of the timezone package
- pkg: timezone_packages
# Required for timezone comparison (symlink must be present for checking the current timezone)
- timezone: timezone_setting
{%- endif %}
pkg.installed:
- name: {{ timezone.pkg.name }}
- require_in:
# Required for timezone comparison (current and proposed)
- timezone: timezone_setting
dbus_for_timezone:
pkg.installed:
- name: {{ timezone.dbus.pkg }}
- require_in:
- timezone: timezone_setting
{%- if timezone.dbus.run_service %}
service.running:
- name: {{ timezone.dbus.service }}
- enable: true
- require:
- pkg: dbus_for_timezone
- require_in:
# `dbus` is required for running `timedatectl`
- timezone: timezone_setting
{%- endif %}
{%- endif %}
timezone_setting:
timezone.system:
- name: {{ timezone.name }}
- utc: {{ timezone.utc }}
22 changes: 20 additions & 2 deletions timezone/osfamilymap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,34 @@
# you will need to provide at least an empty dict in this file, e.g.
# osfamilymap: {}
---
Debian: {}

RedHat: {}

Suse:
pkg:
name: timezone
dbus:
pkg: dbus-1

Gentoo:
pkg:
name: sys-libs/timezone-data

Arch: {}

Alpine: {}

FreeBSD:
pkg:
name: zoneinfo

Gentoo:
OpenBSD:
pkg:
name: sys-libs/timezone-data
name: zoneinfo

Solaris: {}

Windows: {}

MacOS: {}
40 changes: 39 additions & 1 deletion timezone/osfingermap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,42 @@
# you will need to provide at least an empty dict in this file, e.g.
# osfingermap: {}
---
osfingermap: {}
# os: Debian
Debian-10: {}
Debian-9: {}
Debian-8: {}

# os: Ubuntu
Ubuntu-18.04: {}
Ubuntu-16.04:
dbus:
run_service: false

# os: Fedora
Fedora-31: {}
Fedora-30: {}

# os: CentOS
CentOS Linux-8: {}
CentOS Linux-7: {}
CentOS-6:
dbus:
run_service: false

# os: Amazon
Amazon Linux-2: {}
Amazon Linux AMI-2018:
dbus:
run_service: false

# os: SUSE
Leap-15: {}

# os: FreeBSD
FreeBSD-12: {}

# os: Windows
Windows-8.1: {}

# os: Gentoo
Gentoo-2: {}
22 changes: 21 additions & 1 deletion timezone/osmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,24 @@
# you will need to provide at least an empty dict in this file, e.g.
# osmap: {}
---
osmap: {}
# os_family: Debian
Ubuntu: {}
Raspbian: {}

# os_family: RedHat
Fedora: {}
CentOS: {}
Amazon: {}

# os_family: Suse
SUSE: {}
openSUSE: {}

# os_family: Gentoo
Funtoo: {}

# os_family: Arch
Manjaro: {}

# os_family: Solaris
SmartOS: {}

0 comments on commit ff66e5f

Please # to comment.