diff --git a/tasks/answerfile.yml b/tasks/answerfile.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1f4361cc86bdabe4daf651400f6a7ab9b39bda5c
--- /dev/null
+++ b/tasks/answerfile.yml
@@ -0,0 +1,5 @@
+
+- name: create answerfile for "{{ inventory_hostname }}"
+  template:
+    src: answerfile.j2
+    dest: "{{ system_answerfile_path }}"
diff --git a/templates/answerfile.j2 b/templates/answerfile.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a2c9c721a17ff302682be48f1751a7f057cd9cbb
--- /dev/null
+++ b/templates/answerfile.j2
@@ -0,0 +1,22 @@
+{% set hostobj = hostvars[hostname] %}
+export DISTRIBUTION="{{ hostobj.os.distribution }}"
+export RELEASE="{{ hostobj.os.release }}"
+export ARCH="{{ hostobj.os.architecture }}"
+export MIRROR="{{ system_local_mirror | default(system_home_mirror | default("")) }}"
+
+{% set disks = [] %}
+{% for disk in hostobj.disks %}
+{%   do disks.append('"%s"' | format(disk.device)) %}
+{{   'export DISK_%s_SCHEME="%s"' | format(disk.device | upper, disk.scheme | upper) }}
+{%   if 'partitions' in disk %}
+{{     'declare -a DISK_%s_PARTITIONS = ()' | format(disk.device | upper) }}
+{%     for part in disk.partitions %}
+{{       'DISK_%s_PARTITIONS += ("%s:%s:%s:%s:%s:%s:%s")' | format(disk.device | upper, part.size, part.fs, part.mountpoint | default(""), part.mountoptions | default("defaults"), part.dump | default("0"), part.pass | default("0"), part.format | default("true")) }}
+{%     endfor %}
+{{   'export DISK_%s_PARTITIONS' | format(disk.device | upper) }}
+{%   endif %}
+{% endfor %}
+
+declare -a DISK_DEVICES = ({{ disks | join(" ") }})
+export DISK_DEVICES
+