From a6af3e5cf79f98b7936f7851f65cd2839c1f2b2d Mon Sep 17 00:00:00 2001 From: andif888 Date: Mon, 2 Jan 2023 15:25:23 +0100 Subject: [PATCH] initial commit --- README.md | 83 ++++++++++++++++++++++++++++++++++++++++ defaults/main.yml | 23 +++++++++++ handlers/main.yml | 6 +++ meta/main.yml | 56 +++++++++++++++++++++++++++ tasks/main.yml | 21 ++++++++++ templates/chrony.conf.j2 | 28 ++++++++++++++ tests/inventory | 2 + tests/test.yml | 5 +++ vars/main.yml | 2 + 9 files changed, 226 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/chrony.conf.j2 create mode 100644 tests/inventory create mode 100644 tests/test.yml create mode 100644 vars/main.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..1ffde71 --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +# ansible-role-chrony + +Role to install chrony. + +## Table of content + +- [Default Variables](#default-variables) + - [chrony_all](#chrony_all) + - [chrony_allow](#chrony_allow) + - [chrony_ntp_pools](#chrony_ntp_pools) + - [chrony_ntp_servers](#chrony_ntp_servers) + - [chrony_service_name](#chrony_service_name) +- [Dependencies](#dependencies) +- [License](#license) +- [Author](#author) + +--- + +## Default Variables + +### chrony_all + +ip prefixed which are allow to use this server as time server + +Example: + +chrony_allow: ["192.168.0.0/24", "192.168.1.0/24"] + +### chrony_allow + +#### Default value + +```YAML +chrony_allow: [] +``` + +### chrony_ntp_pools + +chrony configuration: ntp pools + +#### Default value + +```YAML +chrony_ntp_pools: + - ntp.ubuntu.com iburst maxsources 4 + - 0.ubuntu.pool.ntp.org iburst maxsources 1 + - 1.ubuntu.pool.ntp.org iburst maxsources 1 + - 2.ubuntu.pool.ntp.org iburst maxsources 2 +``` + +### chrony_ntp_servers + +chrony configuration: ntp servers + +#### Default value + +```YAML +chrony_ntp_servers: [] +``` + +### chrony_service_name + +chrony service name + +#### Default value + +```YAML +chrony_service_name: chronyd +``` + + + +## Dependencies + +None. + +## License + +license (GPL-2.0-or-later, MIT, etc) + +## Author + +andif888 diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..03099fa --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,23 @@ +--- +# defaults file for ansible-role-chrony +# @var chrony_service_name: description: chrony service name +chrony_service_name: chronyd + +# @var chrony_ntp_servers:description: chrony configuration: ntp servers +chrony_ntp_servers: [] + +# @var chrony_ntp_pools:description: chrony configuration: ntp pools +chrony_ntp_pools: + - "ntp.ubuntu.com iburst maxsources 4" + - "0.ubuntu.pool.ntp.org iburst maxsources 1" + - "1.ubuntu.pool.ntp.org iburst maxsources 1" + - "2.ubuntu.pool.ntp.org iburst maxsources 2" + +# @var chrony_all:description: > +# ip prefixed which are allow to use this server as time server +# +# Example: +# +# chrony_allow: ["192.168.0.0/24", "192.168.1.0/24"] +# @end +chrony_allow: [] diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..fa949ea --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,6 @@ +--- +# handlers file for ansible-role-chrony +- name: Restart chrony + ansible.builtin.service: + name: "{{ chrony_service_name }}" + state: restarted diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..55f75de --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,56 @@ +# @meta description: > +# Role to install chrony. +# @end +# @meta author: andif888 +galaxy_info: + author: andif888 + description: yRole to install chrony + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.1 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + # platforms: + # - name: Fedora + # versions: + # - all + # - 25 + # - name: SomePlatform + # versions: + # - all + # - 1.0 + # - 7 + # - 99.99 + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..f760f7a --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,21 @@ +--- +# tasks file for ansible-role-chrony +- name: Install + ansible.builtin.package: + name: chrony + state: present + +- name: Config file + ansible.builtin.template: + src: "templates/chrony.conf.j2" + dest: "/etc/chrony/chrony.conf" + owner: root + group: root + mode: '644' + notify: Restart chrony + +- name: Service enabled and started + ansible.builtin.service: + name: "{{ chrony_service_name }}" + enabled: true + state: started diff --git a/templates/chrony.conf.j2 b/templates/chrony.conf.j2 new file mode 100644 index 0000000..5290354 --- /dev/null +++ b/templates/chrony.conf.j2 @@ -0,0 +1,28 @@ +{% if chrony_ntp_servers|length > 0 %} +# List of NTP servers to use +{% for server in chrony_ntp_servers %} +server {{ server }} +{% endfor %} +{% endif %} + +{% if chrony_ntp_pools|length > 0 %} +# List of NTP pools to use +{% for pool in chrony_ntp_pools %} +pool {{ pool }} +{% endfor %} +{% endif %} + +keyfile /etc/chrony/chrony.keys +driftfile /var/lib/chrony/chrony.drift +logdir /var/log/chrony +maxupdateskew 100.0 +rtcsync +makestep 1 3 + +{% if chrony_allow|length > 0 %} +# Allow NTP requests from these clients: +# (chrony will then act as a NTP server for these) +{% for addr in chrony_allow %} +allow {{ addr }} +{% endfor %} +{% endif %} diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..878877b --- /dev/null +++ b/tests/inventory @@ -0,0 +1,2 @@ +localhost + diff --git a/tests/test.yml b/tests/test.yml new file mode 100644 index 0000000..1ad238f --- /dev/null +++ b/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - ansible-role-chrony diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..7cd70b2 --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for ansible-role-chrony