The Timezone II cookbook contains recipes for installing the latest tzdata (a.k.a. IANA or Olson) timezone database and setting the timezone on your system. It is a fork of the timezone cookbook by James Harton.
This cookbook is known to work with:
- Amazon Linux
- CentOS and RHEL
- Debian
- Fedora
- Gentoo
- PLD Linux
- Ubuntu
It should work with any OS that uses the IANA/Olson timezone database and stores local timezone data in /etc/localtime (the only OS I know of that does not do this is MS Windows). However, some OSs not mentioned above have their own system utility for setting the timezone, and this may overwrite the changes made by this cookbook.
Key | Type | Description | Default |
---|---|---|---|
['tz'] | String | the timezone name as defined in tzdata | "Etc/UTC" on Debian platforms; "UTC" for all other platforms |
['timezone']['tzdata_dir'] | String | the path to the root of the tzdata files; the default value is for most known distributions of Linux | /usr/share/zoneinfo |
['timezone']['localtime_path'] | String | the path to the file used by the kernel to read the local timezone's settings; the default works for Linux and other *ix variants | /etc/localtime |
['timezone']['use_symlink'] | Boolean | whether to use a symlink into the tzdata tree rather than make a copy of the appropriate timezone data file (amazon and linux-generic recipes only) | false |
Set the "tz" attribute to your desired timezone and include the "timezone-ii" recipe in your node's run list:
{
"name": "my_node",
"tz": "Africa/Timbuktu",
"run_list": [
"recipe[timezone-ii]"
]
}
The default recipe will first install or upgrade the IANA/Olson
timezone database package for your OS (timezone-data
on Gentoo, tzdata
on
all others). Then it will call one of the recipes below according to your
node's platform.
This changes the timezone on Amazon Linux by:
- including the "timezone-ii::linux-generic" recipe, then
- including the "timezone-ii::rhel" recipe.
Refer to the sections for those recipes for details.
This changes the timezone on Debian-family platforms by:
- writing the value of
tz
to/etc/timezone
, then - calling
dpkg-reconfigure -f noninteractive tzdata
; - if
dpkg-reconfigure
amends the timezone value (e.g. by changing "UTC" to "Etc/UTC" or "EET" to "Europe/Helsinki"), it logs a warning.
Only the tz
attribute is used; all others are ignored.
Because Fedora sets its timezone the same way RHEL 7 does, this simply includes the "timezone-ii::rhel7" recipe.
This changes the time on all OSs without a more specific recipe. It assumes that
the kernel gets data on the local timezone from /etc/localtime
. (This is true
for FreeBSD as well as Linux, so "linux-generic" is a bit of a misnomer.)
What this recipe does:
- verifies that the value of
tz
corresponds with a timezone data file under the directory specified intimezone.tzdata_dir
(default:/usr/share/zoneinfo
), then - creates a copy of or symbolic link to that data file in the path specified in
timezone.localtime_path
(default:/etc/localtime
).
The truthiness of timezone.use_symlink
(default: false
) determines whether a
symlink or a copy is made.
This changes the timezone on PLD Linux. It writes the appropriate timezone
configuration file, making use of the tz
and timezone.tz_datadir
attributes.
Other attributes are ignored.
This changes the timezone on RedHat Enterprise Linux (RHEL) and RHEL-family platforms such as CentOS. It is intended only for versions prior to 7.0, but should the recipe be called on a system with version 7.0 or newer, it will automatically include the "timezone-ii::rhel7" recipe and do nothing else.
This recipe updates the /etc/sysconfig/clock
file with the value of the tz
attribute, then calls tzdata-update
(if available) to change the timezone.
All node attributes other than tz
are ignored.
This changes the timezone on EL 7 platforms by calling timedatectl set-timezone
with the value of tz
.
Only the tz
attribute is used; all others are ignored.
- Fork the repository on GitHub
- Create a named feature branch (like
add_component_x
) - Write your change
- If at all possible, write tests for your change and ensure they all pass
- Submit a pull request using GitHub
Thanks to:
- James Harton, for launching the timezone cookbook
- Elan Ruusamäe, for PLD support
- Mike Conigliaro, for bringing testing up to date
- "fraD00r4", for RHEL/CentOS support
Copyright © 2010 James Harton [email protected]
Copyright © 2013-2015 Lawrence Leonard Gilbert [email protected]
Copyright © 2013 Elan Ruusamäe [email protected]
Copyright © 2013 fraD00r4 [email protected]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.