diff --git a/basic-system/defaults/main.yml b/basic-system/defaults/main.yml
index 831b31e60fc118bd3cbe13f4270258a9d7a70460..4e43757ca3c9c09e6d7ee8a020bb1c13f43bd879 100644
--- a/basic-system/defaults/main.yml
+++ b/basic-system/defaults/main.yml
@@ -1,3 +1,5 @@
 ---
 
 dns_hostname_fqdn: False
+hosts_alternates: []
+hosts_additionals: []
diff --git a/basic-system/handlers/main.yml b/basic-system/handlers/main.yml
index a27692f799afad6c8009eb22233b89332325eb0a..612fa5bd221419f9bddfdf47adfcf5e7b21358f3 100644
--- a/basic-system/handlers/main.yml
+++ b/basic-system/handlers/main.yml
@@ -9,3 +9,7 @@
 
 - name: update initramfs
   command: update-initramfs -u
+
+- name: gather network facts once again
+  setup: gather_subset=network
+
diff --git a/basic-system/tasks/network.yml b/basic-system/tasks/network.yml
index 875e40f287d49d22ee0f5bb3d684c6dd03927618..c2c78141e50b94bc2b82047c57f4a444c5b43bfb 100644
--- a/basic-system/tasks/network.yml
+++ b/basic-system/tasks/network.yml
@@ -17,6 +17,8 @@
 - name: ensure the hostname is not a fqdn
   hostname: name="{{ inventory_hostname }}"
   when: not dns_hostname_fqdn
+  notify:
+    - gather network facts once again
   tags:
     - dns
     - network
@@ -25,11 +27,25 @@
 - name: ensure the hostname is a fqdn
   hostname: name="{{ ansible_fqdn }}"
   when: dns_hostname_fqdn
+  notify:
+    - gather network facts once again
   tags:
     - dns
     - network
     - config
 
+- meta: flush_handlers
+
+- name: ensure correct hosts file
+  template:
+    src: hosts.j2
+    dest: /etc/hosts
+  notify:
+    - gather network facts once again
+  tags:
+    - dns
+    - network
+
 - name: ensure deactivation of tcp_timestamps
   sysctl: name=net.ipv4.tcp_timestamps value=0 state=present sysctl_set=yes
   tags: 
diff --git a/basic-system/templates/hosts.j2 b/basic-system/templates/hosts.j2
new file mode 100644
index 0000000000000000000000000000000000000000..9301e375eed74efbdd5e73dd86a2c802cd6fd583
--- /dev/null
+++ b/basic-system/templates/hosts.j2
@@ -0,0 +1,20 @@
+127.0.0.1	localhost
+::1     localhost ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+ff02::3 ip6-allhosts
+
+{%- for host in hosts_alternates %}
+{{ host }}	{{ ansible_host }} {{ inventory_hostname }}
+{% else %}
+{{ ansible_default_ipv4.address }}	{{ ansible_host }} {{ inventory_hostname }}
+{%- if address in ansible_default_ipv6 %}
+{{ ansible_default_ipv6.address }}	{{ ansible_host }} {{ inventory_hostname }}
+{% endif -%}
+{% endfor -%}
+
+{%- for host in hosts_additionals %}
+{{ host.address }}	{{ host.names|join(' ') }}
+{% endfor -%}