How do you deploy the Gitlab runner?

We have a chicken and egg problem and I feel Gitlab documentation doesn’t offer good advice on how to deploy Gitlab runners en masse in a large organisation.

Once (manually) deploying Gitlab runners on each machine, how best do you keep them upgraded?
A pipeline matching all runners (not sure how!) to update itself since it can’t? Self-update / Keep evergreen (#29608) · Issues · / gitlab-runner · GitLab

Using Ansible? GitHub - riemers/ansible-gitlab-runner: Ansible role to install gitlab-runner is quite complex and doesn’t seem blessed by Gitlab.

Creating ones own shell script? Are the good examples of such a script that registers a machine if say /etc/gitlab-runner/config.yml isn’t configured? I’ve yet to a blessed one from Gitlab.

Furthermore Registering runners (deprecated) | GitLab

ability to pass a runner registration token was deprecated in GitLab 15.6 and is planned for removal in 17.0

Is super confusing. Can you give an example of a registering now? Is it not gitlab-runner register --registration-token $PROJECT_REGISTRATION_TOKEN?

There are other problematic areas that I feel Gitlab must improve on to gain adoption, like a lack of examples showing how to setup protected runners for deployments in higher environments.