Commit Graph

31 Commits

Author SHA1 Message Date
18a5d1eae2 Switch from terraform to opentofu, so update some providers therefore 2025-11-28 00:28:25 +01:00
af72ec5cf9 Don't gather facts just to run k8s-setup since it's not needed 2025-11-28 00:28:25 +01:00
f19a1f61c9 Use port 1022 for all cluster nodes as SSH-port and fix some config-errors
I'm oversaw completely, that I have to change the SSH-port for all nodes
in the cluster otherwise I cannot provide a meaningful load-balancer for
the git-ssh port in it.

Additionally this allowed me to fix some config errors which I simply
oversaw.
2025-11-28 00:28:22 +01:00
f1856f59aa Fix tags to limit even the reference to roles/playbooks
The previous setting of tags still let ansible gather facts for the
roles in question, even though they're not executed. This fix prevent
this from happening.
2025-11-28 00:24:18 +01:00
af5feca667 Document possible tags for the ansible-playbook
The playbook itself is written to be idempotent, so it doesn't hurt to
run all tasks many times. But, it doesn't need to run all tasks all the
time, therefore you can limit the executional-scope with the documented
tags to only affect certain tasks. This improves the performance a lot!
2025-11-28 00:24:18 +01:00
7297892e18 Merge infra and k3 into one directory again
Since I don't have multiple terraform steps anymore it simply doesn't
make sense to me anymore to split all tasks into separate folders.
Instead I try to be as clear as possible in the README to make it easy
to follow the structure in the future without too much headache.
2025-11-28 00:24:18 +01:00
fef383fed4 Move setup of foundational service from k8s to k3s
It simply doesn't make sense to split the installation of the
kubernetes-cluster from the provisioning of foundational services.
Therefore I drop the idea to organise these services in another
terraform-setup and instead ensure their presence with ansible, as it's
already responsible for setting up the cluster and keep it up-to.date.
2025-11-28 00:23:36 +01:00
adec38e1cd Make ssh-port of servers initially configurable
It looks somehow random that the SSH-port was simply defined in the
configuration of the k3s-setup. It looks somehow "configurable" although
it isn't. Therefore I moved this setting to the correct place in the
terraform-setup.

An important side-note is that this change doesn't make it possible to
_change_ the ssh-port, though. Once decided for an port and I have to
stick to it until I tear down the cluster!
2025-09-19 18:03:04 +02:00
9c19a21273 Simplify configuration by moving all the vars into config.ini
The navigation through a bunch of config files, all with just a few
lines in it is cumbersome. This change moves all the configuration into
a centralized `config.ini` that way it's easier for me to get a quick
overview of the setup. The `config.ini` acts as another inventory and is
therefore references as such by the ansible.cfg. The `inventory.ini`
(which is generated by terraform in the provisioning-step) is not
affected by this change.
2025-09-19 16:02:27 +02:00
95cc115734 Move download of kube-config into dedicated role 2025-09-19 14:14:25 +02:00
d227c954a6 Rename main.yml to site.yml to match docs and follow common practices 2025-09-18 20:41:26 +02:00
4beb9e2844 Move configuration of servers completely to ansible
With this change we no longer use user-data scripts on the provided
machines. That makes it way easier for me to handle all the
configuration, since I only have to run ansible. Furthermore this the
burdon to think what may went wrong, since ansible is easier to debug
than some arbitrary scripts which run at provisioning-time on the
machines.

With this change I should also think about restructuring the code a bit
as well. Since it's actually easier to provide the initial
software-stack for the cluster via ansible than via terraform, at least
as far as I can tell right now.
2025-09-18 20:41:26 +02:00
fda7cac5c0 Only make ssh-port free on k8s-servers since the agents doesn't need to
The only reason I even change the port is to make sure a git-client can
reach the my upcoming git-servers on the standard ssh-port. Though to
achive this I only have to make sure that the port is reacheable on the
internet, after that the port is routed through the kubernetes network.
This means that my agents can keep using the standard-port, which makes
everything easier for me :)
2025-09-18 16:42:21 +02:00
4a818d0c8a Add a short tl;dr section to the readme for quick setup 2025-09-18 16:00:57 +02:00
f4bf7569a6 Simply k3s setup by using a default ansible configuration 2025-09-18 15:55:36 +02:00
75a485fbff Reset SSH-port of host-machines to 1022
I want to use port 22 for my git-server, therefore I have to make this
port free for use of kubernetes. This change allows this, so when I want
to connect to the host-machines I'll use port 1022.
2025-09-17 14:21:03 +02:00
1b32fb309c Add cert-manager and let's encrypt to the k8s-cluster
This change contains a new module which will be applied after the
kubernetes-cluster has been created. It will install the cert-manager in
it and add let's encrypt as a ClusterIssuer to the cluster. That setup
allows me to simply issue certificates for all services in the cluster.
2025-09-16 21:54:13 +02:00
d96523a071 Move infra-setup and k3s-setup into dedicated directories
This changes makes it easier to differentiate and understand the
different parts of the kubernetes setup. On one hand we have the bare
infrastructure (servers, network, etc), on the other hand we have the
software (k3s in this case).

In the future we'll have a few more parts, like the minimal
configuration of the kubernetes cluster, e.g. with a cert-manager. This
is easier to manage with helm or terraform than with ansible. Therefore
it makes even more sense to split the responsibilities into dedicated
directories.
2025-09-15 14:47:19 +02:00
dfcdc9797a Setup k3s with the help of ansible after the infra-provisioning
This change is huge! It allows me to manage the k3s installation on the
hetzner-cloud I setup via terraform.
2025-09-15 04:20:22 +02:00
d083b9d446 Make every important setting of the k8s-cluster configurable
This change makes all the settings configurable. The only part which
still lacks some flexibility is the location, though I really don't need
to run a k8s-cluster over multiple datacenters and regions! - At least
right now ;-)
2025-09-15 03:43:05 +02:00
998426c330 Add variable to decide wether the ssh-port of the k8s-server is exposed 2025-09-14 16:26:11 +02:00
8797fad6d7 Update costs-table of domains to read the prices easier 2025-04-23 23:17:21 +02:00
a1e9f43a31 reorganize firewall rules to make it more obvious what has changed 2025-03-15 20:49:40 +01:00
1eb2ce341a Define a basic but working complete k3s-kubernetes setup 2025-03-10 01:44:56 +01:00
2d93766c09 Add ssh-keys to hetzner-cloud 2025-03-08 21:37:15 +01:00
f37c92c439 Reduce number of terraform-file to the "normal" set of files and simplify dns-definition 2025-03-08 21:36:43 +01:00
4b7bb428a7 Use most recent configuration of gmail-smtp
The configuration of MX records for gmail has changed in 2023. Although
google still maintains the old configuration the recommended approach is
the new variant, which is also more concise.

Reference: https://support.google.com/a/answer/174125?hl=en#zippy=%2Cgoogle-workspace-legacy-version-before%2Cgoogle-workspace-current-version-later
2025-03-05 00:08:51 +01:00
d005643bb1 Add directory for modules and move dns into it 2025-03-05 00:08:51 +01:00
817f75bb49 Refactor DNS-config to make it easier to maintain 2025-03-04 23:15:42 +01:00
3a09b0f44e Define all my DNS-records in the hetzner-cloud 2025-01-12 15:15:10 +01:00
266c422c28 Initial commit 2025-01-06 00:29:54 +01:00