Compare commits

...

11 Commits

7 changed files with 131 additions and 13 deletions

View File

@ -1,3 +1,25 @@
## v1.1.2
### Fix
* Fix E405 Remote package tasks should have a retry.
* Use to_nice_json to manage packages list.
* Fix E203 Most files should not contain tabs.
* Fix E404 Doesn't need a relative path in role.
## v1.1.1
### Fix
* Set empty dependencies line to fix Galaxy warning.
* Deprecation warning in favor of debops.netbase and debops.resources role.
## v1.1.0
### Enhancements
* Allow to install Resolvconf.
* Manage Resolvconf base configuration file.
* Restart Resolvconf service if any modification on configuration file.
* Resolvconf default configuration is set from ansible facts.
## v1.0.3
### Fixes
@ -16,7 +38,7 @@
* Purge /etc/hosts of multiple lines that contains $HOSTNAME without the default ipv4 ip address.
* Purge conditions of /etc/hosts are the same as permanent ip address (ipv4).
## v1.0
## v1.0.0
### Features
* Manage localhost line in /etc/hosts.

View File

@ -1,5 +1,11 @@
# Basics
This content is mainly deprecated and i start using [Debops Netbase role][debops netbase role]
which comes with most of this configuration (more and better).
The [Debops Ifupdown role][debops ifupdown role] can manage the DNS search and nameservers,
[see the documentation][debops ifupdown dns] for more informations and the
[Debops Resolvconf role][debops resolvconf role] can also give more possibilities.
1. [Overview](#overview)
2. [Role Variables](#role-variables)
3. [Example Playbook](#example-playbook)
@ -21,6 +27,11 @@ Manage some basics configuration for IPR's servers.
* **basics__hosts_ipv4_manage**: If the ipv4 address line should be managed [default: `false`].
* **basics__hosts_ipv4_content**: Content of the ipv4 address line [default: `{{ ansible_hostname }}.{{ basics__domain }} {{ ansible_hostname }}`].
* **basics__proxmox_*disable**: Allow to disable the management of some files by Proxmox for LXC containers [default: `[]`].
* **basics__resolvconf_packages**: List of Resolvconf packages to install [default: `resolvconf`].
* **basics__resolvconf_enabled**: Enable or disable support for Resolvconf [default: `False`].
* **basics__resolvconf_domains**: List of domains used as search suffixes with Resolvconf [default: `{{ ansible_domain }}`].
* **basics__resolvconf_nameservers**: List of nameservers to use to resolv host names with Resolvconf [default: `{{ ansible_dns.nameservers }}`].
* **basics__resolvconf_service_name**: The Resolvconf service name to manage [default: `resolvconf`].
## Example Playbook
@ -42,7 +53,7 @@ Manage some basics configuration for IPR's servers.
- role: ipr-cnrs.basics
basics__domain: 'mydomain.org'
basics__hosts_ipv4_manage: true
````
```
## Configuration
@ -56,6 +67,12 @@ Ensure to have the correct fqdn and hostname in /etc/hosts:
For LXC containers, you also have the possibility to disable the management of some files (/etc/hosts,…) by Proxmox. See [Proxmox wiki about LXC][wiki proxmox lxc].
## Resolvconf
* If specified, Resolvconf is installed to fix the domain's informations given by the DHCP server.
* Configure a default configuration file with the given informations (list of domains and nameservers).
* Ensure to restart the service if any modification in configuration file.
## Development
This source code comes from our [Gogs instance][basics source] and the [Github repo][basics github] exist just to be able to send the role to Ansible Galaxy…
@ -80,3 +97,6 @@ Jérémy Gardais
[wtfpl website]: http://www.wtfpl.net/about/
[ipr website]: https://ipr.univ-rennes1.fr/
[wiki proxmox lxc]: https://pve.proxmox.com/wiki/Linux_Container#_guest_operating_system_configuration
[debops netbase role]: https://docs.debops.org/en/master/ansible/roles/debops.netbase/index.html
[debops ifupdown role]: https://docs.debops.org/en/master/ansible/roles/debops.ifupdown/index.html
[debops resolvconf role]: https://docs.debops.org/en/master/ansible/roles/debops.resolvconf/index.html

View File

@ -1,5 +1,8 @@
---
# defaults file for basics
# .. vim: foldmarker=[[[,]]]:foldmethod=marker
#
# ipr-cnrs.basics default variables [[[
# =====================================
# Domain
basics__domain: "{{ ansible_domain }}"
@ -14,3 +17,46 @@ basics__hosts_ipv4_content: "{{ ansible_hostname }}.{{ basics__domain }} {{ ansi
basics__proxmox_disable: []
basics__proxmox_group_disable: []
basics__proxmox_host_disable: []
# Resolvconf [[[
# --------------
# .. envvar:: basics__resolvconf_packages [[[
#
# List of Resolvconf packages to install.
#
basics__resolvconf_packages:
- 'resolvconf'
# ]]]
# .. envvar:: basics__resolvconf_enabled [[[
#
# Enable or disable support for Resolvconf on a given host. Disabling this
# option does not remove existing installation and configuration.
#
basics__resolvconf_enabled: False
# ]]]
# .. envvar:: basics__resolvconf_domains [[[
#
# List of domains used as search suffixes when resolving host names.
#
basics__resolvconf_domains:
- '{{ ansible_domain }}'
# ]]]
# .. envvar:: basics__resolvconf_nameservers [[[
#
# List of nameservers to use to resolv host names.
#
basics__resolvconf_nameservers: '{{ ansible_dns.nameservers }}'
# ]]]
# .. envvar:: basics__resolvconf_service_name [[[
#
# The Resolvconf service name to manage.
basics__resolvconf_service_name: 'resolvconf'
# ]]]
# ]]]

View File

@ -1,2 +1,7 @@
---
# handlers file for basics
- name: restart resolvconf service
service:
name: '{{ basics__resolvconf_service_name }}'
state: '{{ "restarted" if (basics__resolvconf_enabled | bool) }}'
enabled: '{{ basics__resolvconf_enabled | bool }}'

View File

@ -1,3 +1,7 @@
---
dependencies: []
galaxy_info:
author: "Jérémy Gardais"
description: "Manage some basics configurations for IPR's servers."
@ -9,14 +13,6 @@ galaxy_info:
- name: Debian
versions:
- stretch
#- name: opensuse
# versions:
# - all
# - 12.1
# - 12.2
# - 12.3
# - 13.1
# - 13.2
galaxy_tags:
- system
- debian

View File

@ -47,3 +47,24 @@
- '{{ basics__proxmox_host_disable }}'
when: ansible_virtualization_type == "lxc"
# Resolvconf [[[1
- name: Ensure Resolvconf required packages are in there desired state
package:
name: '{{ item }}'
state: 'present'
install_recommends: False
with_flattened:
- '{{ basics__resolvconf_packages | to_nice_json }}'
register: resolv_pkg_result
until: resolv_pkg_result is success
when: basics__resolvconf_enabled|bool
- name: Configure Resolvconf with domains
template:
src: 'etc/resolvconf/resolv.conf.d/base.j2'
dest: '/etc/resolvconf/resolv.conf.d/base'
owner: root
group: root
mode: '0644'
when: basics__resolvconf_enabled|bool
notify: ['restart resolvconf service']

View File

@ -0,0 +1,8 @@
# This file is managed remotely, all changes will be lost
{% for server in basics__resolvconf_nameservers %}
nameserver {{ server }}
{% endfor %}
{% for domain in basics__resolvconf_domains %}
domain {{ domain }}
search {{ domain }}
{% endfor %}