diff --git a/Ansible/README.md b/Ansible/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d4e29da0adb0e1c90bf02c8b6ce94f5dc1d23396
--- /dev/null
+++ b/Ansible/README.md
@@ -0,0 +1,3 @@
+# Ansible
+
+Services, machines and bootstrapping of machines managed by Ansible.
diff --git a/ansible.cfg b/Ansible/ansible.cfg
similarity index 100%
rename from ansible.cfg
rename to Ansible/ansible.cfg
diff --git a/bootstrap.yaml b/Ansible/bootstrap.yaml
similarity index 100%
rename from bootstrap.yaml
rename to Ansible/bootstrap.yaml
diff --git a/debian_server.yaml b/Ansible/debian_server.yaml
similarity index 100%
rename from debian_server.yaml
rename to Ansible/debian_server.yaml
diff --git a/hosts/all.yaml b/Ansible/hosts/all.yaml
similarity index 100%
rename from hosts/all.yaml
rename to Ansible/hosts/all.yaml
diff --git a/kodi.yaml b/Ansible/kodi.yaml
similarity index 100%
rename from kodi.yaml
rename to Ansible/kodi.yaml
diff --git a/renew-certs.yaml b/Ansible/renew-certs.yaml
similarity index 100%
rename from renew-certs.yaml
rename to Ansible/renew-certs.yaml
diff --git a/roles/debian_bootstrap/tasks/main.yaml b/Ansible/roles/debian_bootstrap/tasks/main.yaml
similarity index 100%
rename from roles/debian_bootstrap/tasks/main.yaml
rename to Ansible/roles/debian_bootstrap/tasks/main.yaml
diff --git a/roles/debian_server/files/apt-download-updates b/Ansible/roles/debian_server/files/apt-download-updates
similarity index 98%
rename from roles/debian_server/files/apt-download-updates
rename to Ansible/roles/debian_server/files/apt-download-updates
index 9af11f833a8a7b4f0095deede3d38e9f4821434e..32a2b48d76ec3a016a71e508a1ee60d2817aff05 100755
--- a/roles/debian_server/files/apt-download-updates
+++ b/Ansible/roles/debian_server/files/apt-download-updates
@@ -4,4 +4,3 @@ set -eu
 apt-get update
 apt-get dist-upgrade --download-only --yes
 apt-get autoclean
-
diff --git a/roles/debian_server/files/btrfs-backup b/Ansible/roles/debian_server/files/btrfs-backup
similarity index 100%
rename from roles/debian_server/files/btrfs-backup
rename to Ansible/roles/debian_server/files/btrfs-backup
diff --git a/roles/debian_server/files/docker-restart b/Ansible/roles/debian_server/files/docker-restart
similarity index 100%
rename from roles/debian_server/files/docker-restart
rename to Ansible/roles/debian_server/files/docker-restart
diff --git a/roles/debian_server/files/flatpak-update b/Ansible/roles/debian_server/files/flatpak-update
similarity index 100%
rename from roles/debian_server/files/flatpak-update
rename to Ansible/roles/debian_server/files/flatpak-update
diff --git a/roles/debian_server/files/fw-update b/Ansible/roles/debian_server/files/fw-update
similarity index 100%
rename from roles/debian_server/files/fw-update
rename to Ansible/roles/debian_server/files/fw-update
diff --git a/roles/debian_server/handlers/main.yml b/Ansible/roles/debian_server/handlers/main.yml
similarity index 100%
rename from roles/debian_server/handlers/main.yml
rename to Ansible/roles/debian_server/handlers/main.yml
diff --git a/roles/debian_server/tasks/btrfs.yml b/Ansible/roles/debian_server/tasks/btrfs.yml
similarity index 100%
rename from roles/debian_server/tasks/btrfs.yml
rename to Ansible/roles/debian_server/tasks/btrfs.yml
diff --git a/roles/debian_server/tasks/docker.yml b/Ansible/roles/debian_server/tasks/docker.yml
similarity index 100%
rename from roles/debian_server/tasks/docker.yml
rename to Ansible/roles/debian_server/tasks/docker.yml
diff --git a/roles/debian_server/tasks/main.yml b/Ansible/roles/debian_server/tasks/main.yml
similarity index 100%
rename from roles/debian_server/tasks/main.yml
rename to Ansible/roles/debian_server/tasks/main.yml
diff --git a/roles/debian_server/tasks/maintenance.yml b/Ansible/roles/debian_server/tasks/maintenance.yml
similarity index 100%
rename from roles/debian_server/tasks/maintenance.yml
rename to Ansible/roles/debian_server/tasks/maintenance.yml
diff --git a/roles/debian_server/tasks/toolbox.yml b/Ansible/roles/debian_server/tasks/toolbox.yml
similarity index 100%
rename from roles/debian_server/tasks/toolbox.yml
rename to Ansible/roles/debian_server/tasks/toolbox.yml
diff --git a/roles/debian_server/tasks/web.yml b/Ansible/roles/debian_server/tasks/web.yml
similarity index 100%
rename from roles/debian_server/tasks/web.yml
rename to Ansible/roles/debian_server/tasks/web.yml
diff --git a/roles/debian_server/templates/btrfs_check.service.j2 b/Ansible/roles/debian_server/templates/btrfs_check.service.j2
similarity index 100%
rename from roles/debian_server/templates/btrfs_check.service.j2
rename to Ansible/roles/debian_server/templates/btrfs_check.service.j2
diff --git a/roles/debian_server/templates/btrfs_check.timer.j2 b/Ansible/roles/debian_server/templates/btrfs_check.timer.j2
similarity index 100%
rename from roles/debian_server/templates/btrfs_check.timer.j2
rename to Ansible/roles/debian_server/templates/btrfs_check.timer.j2
diff --git a/roles/debian_server/templates/btrfs_scrub.service.j2 b/Ansible/roles/debian_server/templates/btrfs_scrub.service.j2
similarity index 100%
rename from roles/debian_server/templates/btrfs_scrub.service.j2
rename to Ansible/roles/debian_server/templates/btrfs_scrub.service.j2
diff --git a/roles/debian_server/templates/btrfs_scrub.timer.j2 b/Ansible/roles/debian_server/templates/btrfs_scrub.timer.j2
similarity index 100%
rename from roles/debian_server/templates/btrfs_scrub.timer.j2
rename to Ansible/roles/debian_server/templates/btrfs_scrub.timer.j2
diff --git a/roles/debian_server/templates/maintenance-task.service.j2 b/Ansible/roles/debian_server/templates/maintenance-task.service.j2
similarity index 99%
rename from roles/debian_server/templates/maintenance-task.service.j2
rename to Ansible/roles/debian_server/templates/maintenance-task.service.j2
index a305c3c9d31748e69886eb402e0258f81aa2791c..dc2c57cbc92b036d46dbca0f52ab4c9d50f56b26 100644
--- a/roles/debian_server/templates/maintenance-task.service.j2
+++ b/Ansible/roles/debian_server/templates/maintenance-task.service.j2
@@ -8,4 +8,3 @@ After=network-online.target
 [Service]
 Type=exec
 ExecStart={{ command }}
-
diff --git a/roles/debian_server/templates/maintenance-task.timer.j2 b/Ansible/roles/debian_server/templates/maintenance-task.timer.j2
similarity index 100%
rename from roles/debian_server/templates/maintenance-task.timer.j2
rename to Ansible/roles/debian_server/templates/maintenance-task.timer.j2
diff --git a/roles/debian_server/vars/main.yml b/Ansible/roles/debian_server/vars/main.yml
similarity index 100%
rename from roles/debian_server/vars/main.yml
rename to Ansible/roles/debian_server/vars/main.yml
diff --git a/roles/kodi/files/kodi.service b/Ansible/roles/kodi/files/kodi.service
similarity index 100%
rename from roles/kodi/files/kodi.service
rename to Ansible/roles/kodi/files/kodi.service
diff --git a/roles/kodi/files/xorg.service b/Ansible/roles/kodi/files/xorg.service
similarity index 100%
rename from roles/kodi/files/xorg.service
rename to Ansible/roles/kodi/files/xorg.service
diff --git a/roles/kodi/handlers/main.yml b/Ansible/roles/kodi/handlers/main.yml
similarity index 100%
rename from roles/kodi/handlers/main.yml
rename to Ansible/roles/kodi/handlers/main.yml
diff --git a/roles/kodi/meta/main.yml b/Ansible/roles/kodi/meta/main.yml
similarity index 100%
rename from roles/kodi/meta/main.yml
rename to Ansible/roles/kodi/meta/main.yml
diff --git a/roles/kodi/tasks/main.yml b/Ansible/roles/kodi/tasks/main.yml
similarity index 100%
rename from roles/kodi/tasks/main.yml
rename to Ansible/roles/kodi/tasks/main.yml
diff --git a/roles/openbsd_bootstrap/defaults/main.yaml b/Ansible/roles/openbsd_bootstrap/defaults/main.yaml
similarity index 100%
rename from roles/openbsd_bootstrap/defaults/main.yaml
rename to Ansible/roles/openbsd_bootstrap/defaults/main.yaml
diff --git a/roles/openbsd_bootstrap/handlers/main.yaml b/Ansible/roles/openbsd_bootstrap/handlers/main.yaml
similarity index 100%
rename from roles/openbsd_bootstrap/handlers/main.yaml
rename to Ansible/roles/openbsd_bootstrap/handlers/main.yaml
diff --git a/roles/openbsd_bootstrap/tasks/main.yaml b/Ansible/roles/openbsd_bootstrap/tasks/main.yaml
similarity index 100%
rename from roles/openbsd_bootstrap/tasks/main.yaml
rename to Ansible/roles/openbsd_bootstrap/tasks/main.yaml
diff --git a/roles/openbsd_bootstrap/vars/main.yaml b/Ansible/roles/openbsd_bootstrap/vars/main.yaml
similarity index 100%
rename from roles/openbsd_bootstrap/vars/main.yaml
rename to Ansible/roles/openbsd_bootstrap/vars/main.yaml
diff --git a/roles/openwrt_bootstrap/tasks/main.yaml b/Ansible/roles/openwrt_bootstrap/tasks/main.yaml
similarity index 100%
rename from roles/openwrt_bootstrap/tasks/main.yaml
rename to Ansible/roles/openwrt_bootstrap/tasks/main.yaml
diff --git a/roles/router/defaults/main.yaml b/Ansible/roles/router/defaults/main.yaml
similarity index 100%
rename from roles/router/defaults/main.yaml
rename to Ansible/roles/router/defaults/main.yaml
diff --git a/roles/router/files/bgpd.conf b/Ansible/roles/router/files/bgpd.conf
similarity index 100%
rename from roles/router/files/bgpd.conf
rename to Ansible/roles/router/files/bgpd.conf
diff --git a/roles/router/files/dhcpd.conf b/Ansible/roles/router/files/dhcpd.conf
similarity index 100%
rename from roles/router/files/dhcpd.conf
rename to Ansible/roles/router/files/dhcpd.conf
diff --git a/roles/router/files/filebeat.yml b/Ansible/roles/router/files/filebeat.yml
similarity index 100%
rename from roles/router/files/filebeat.yml
rename to Ansible/roles/router/files/filebeat.yml
diff --git a/roles/router/files/haproxy.cfg b/Ansible/roles/router/files/haproxy.cfg
similarity index 100%
rename from roles/router/files/haproxy.cfg
rename to Ansible/roles/router/files/haproxy.cfg
diff --git a/roles/router/files/hosts b/Ansible/roles/router/files/hosts
similarity index 100%
rename from roles/router/files/hosts
rename to Ansible/roles/router/files/hosts
diff --git a/roles/router/files/mail/spamd.conf b/Ansible/roles/router/files/mail/spamd.conf
similarity index 100%
rename from roles/router/files/mail/spamd.conf
rename to Ansible/roles/router/files/mail/spamd.conf
diff --git a/roles/router/files/metricbeat.yml b/Ansible/roles/router/files/metricbeat.yml
similarity index 100%
rename from roles/router/files/metricbeat.yml
rename to Ansible/roles/router/files/metricbeat.yml
diff --git a/roles/router/files/nsd/nehe.sr b/Ansible/roles/router/files/nsd/nehe.sr
similarity index 100%
rename from roles/router/files/nsd/nehe.sr
rename to Ansible/roles/router/files/nsd/nehe.sr
diff --git a/roles/router/files/nsd/nehe.sr.conf b/Ansible/roles/router/files/nsd/nehe.sr.conf
similarity index 100%
rename from roles/router/files/nsd/nehe.sr.conf
rename to Ansible/roles/router/files/nsd/nehe.sr.conf
diff --git a/roles/router/files/nsd/nehes.co b/Ansible/roles/router/files/nsd/nehes.co
similarity index 100%
rename from roles/router/files/nsd/nehes.co
rename to Ansible/roles/router/files/nsd/nehes.co
diff --git a/roles/router/files/nsd/nehes.co.conf b/Ansible/roles/router/files/nsd/nehes.co.conf
similarity index 100%
rename from roles/router/files/nsd/nehes.co.conf
rename to Ansible/roles/router/files/nsd/nehes.co.conf
diff --git a/roles/router/files/nsd/shore.co.il b/Ansible/roles/router/files/nsd/shore.co.il
similarity index 100%
rename from roles/router/files/nsd/shore.co.il
rename to Ansible/roles/router/files/nsd/shore.co.il
diff --git a/roles/router/files/nsd/shore.co.il.conf b/Ansible/roles/router/files/nsd/shore.co.il.conf
similarity index 100%
rename from roles/router/files/nsd/shore.co.il.conf
rename to Ansible/roles/router/files/nsd/shore.co.il.conf
diff --git a/roles/router/files/packetbeat.yml b/Ansible/roles/router/files/packetbeat.yml
similarity index 100%
rename from roles/router/files/packetbeat.yml
rename to Ansible/roles/router/files/packetbeat.yml
diff --git a/roles/router/files/pf.conf b/Ansible/roles/router/files/pf.conf
similarity index 100%
rename from roles/router/files/pf.conf
rename to Ansible/roles/router/files/pf.conf
diff --git a/roles/router/files/unbound/shore.co.il.conf b/Ansible/roles/router/files/unbound/shore.co.il.conf
similarity index 100%
rename from roles/router/files/unbound/shore.co.il.conf
rename to Ansible/roles/router/files/unbound/shore.co.il.conf
diff --git a/roles/router/handlers/main.yaml b/Ansible/roles/router/handlers/main.yaml
similarity index 100%
rename from roles/router/handlers/main.yaml
rename to Ansible/roles/router/handlers/main.yaml
diff --git a/roles/router/tasks/main.yaml b/Ansible/roles/router/tasks/main.yaml
similarity index 100%
rename from roles/router/tasks/main.yaml
rename to Ansible/roles/router/tasks/main.yaml
diff --git a/roles/router/vars/main.yaml b/Ansible/roles/router/vars/main.yaml
similarity index 100%
rename from roles/router/vars/main.yaml
rename to Ansible/roles/router/vars/main.yaml
diff --git a/roles/wap/README.md b/Ansible/roles/wap/README.md
similarity index 100%
rename from roles/wap/README.md
rename to Ansible/roles/wap/README.md
diff --git a/roles/wap/tasks/main.yaml b/Ansible/roles/wap/tasks/main.yaml
similarity index 100%
rename from roles/wap/tasks/main.yaml
rename to Ansible/roles/wap/tasks/main.yaml
diff --git a/roles/wap/templates/daily.j2 b/Ansible/roles/wap/templates/daily.j2
similarity index 100%
rename from roles/wap/templates/daily.j2
rename to Ansible/roles/wap/templates/daily.j2
diff --git a/roles/wap/templates/uci.conf.j2 b/Ansible/roles/wap/templates/uci.conf.j2
similarity index 99%
rename from roles/wap/templates/uci.conf.j2
rename to Ansible/roles/wap/templates/uci.conf.j2
index 1ec0a5cdbdaac3bf525b420bc14e8a10c44cd13d..0d47d5d4fe65a9c34390b9ff9e32367f9577bd54 100644
--- a/roles/wap/templates/uci.conf.j2
+++ b/Ansible/roles/wap/templates/uci.conf.j2
@@ -432,4 +432,3 @@ config wifi-iface 'default_radio1'
 	option key '{{ wifi_password }}'
 	option encryption 'psk2'
 	option ssid 'Shore Inc. (5ghz)'
-
diff --git a/roles/wap/vars/main.yaml b/Ansible/roles/wap/vars/main.yaml
similarity index 100%
rename from roles/wap/vars/main.yaml
rename to Ansible/roles/wap/vars/main.yaml
diff --git a/router.yaml b/Ansible/router.yaml
similarity index 100%
rename from router.yaml
rename to Ansible/router.yaml
diff --git a/tasks/renew-cert.yaml b/Ansible/tasks/renew-cert.yaml
similarity index 100%
rename from tasks/renew-cert.yaml
rename to Ansible/tasks/renew-cert.yaml
diff --git a/tasks/sshd_config.yaml b/Ansible/tasks/sshd_config.yaml
similarity index 100%
rename from tasks/sshd_config.yaml
rename to Ansible/tasks/sshd_config.yaml
diff --git a/update.yaml b/Ansible/update.yaml
similarity index 99%
rename from update.yaml
rename to Ansible/update.yaml
index 8ebf8f20394468dd39ff025b4c8bd9d86d48d2a6..857a7cb4a44e9357f847fef4efd5e3f3d7a19c98 100644
--- a/update.yaml
+++ b/Ansible/update.yaml
@@ -28,6 +28,7 @@
           command: fwupdmgr --assume-yes update
           register: fwupdmgr
           changed_when: fwupdmgr.stdout_lines|length > 0
+          ignore_errors: true
 
         - name: Gather package facts
           package_facts:
diff --git a/vault-passhole b/Ansible/vault-passhole
similarity index 100%
rename from vault-passhole
rename to Ansible/vault-passhole
diff --git a/wap.yaml b/Ansible/wap.yaml
similarity index 100%
rename from wap.yaml
rename to Ansible/wap.yaml
diff --git a/Compose/README.md b/Compose/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..431ec9038bde251007e27c5267c856b524daa97b
--- /dev/null
+++ b/Compose/README.md
@@ -0,0 +1,3 @@
+# Compose
+
+Services managed with Docker Compose.
diff --git a/Containerfiles/README.md b/Containerfiles/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..622b32840c49ab4e1fef06d6fcc0e3def336f659
--- /dev/null
+++ b/Containerfiles/README.md
@@ -0,0 +1,4 @@
+# Containerfiles
+
+Containerfiles (AKA Dockerfiles) for containers images used in Shore.co.il's
+infrastructure.
diff --git a/README.md b/README.md
index 0172a0052508a71218ada90a8291de8e7742d7be..61cf23fa96daafd9b9387ebd7a88d3faad431b09 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,20 @@
 
 [![pipeline status](https://git.shore.co.il/shore/homelab/badges/master/pipeline.svg)](https://git.shore.co.il/shore/homelab/-/commits/master)
 
-> My homelab setup using Ansible.
+> Shore.co.il infrastructure.
 
-## Background
+## Introduction
+
+This project is structured is the following:
+
+| Directory | Description |
+| --- | --- |
+| `Ansible` | Ansible roles and playbooks |
+| `Containerfiles` | Container images |
+| `Compose` | Services managed with Docker Compose |
+| `Terraform` | Services managed with Terraform |
+
+## A little of history
 
 I used to maintain quite a few Ansible roles with proper CI and whatnot. But as
 time moved on a few things changed. Firstly, my homelab was stable and I
diff --git a/Terraform/README.md b/Terraform/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a5048bc0df9a3e3f34bc5077f29409de4a0df582
--- /dev/null
+++ b/Terraform/README.md
@@ -0,0 +1,8 @@
+# Terraform
+
+Services managed with Terraform.
+
+# Terraform state
+
+Project usually store their state in GitLab using [GitLab managed Terraform
+State](https://docs.gitlab.com/ee/user/infrastructure/iac/terraform_state.html).