From 492ac5b1870ac3238c4d81348b6bad813ab7ef34 Mon Sep 17 00:00:00 2001 From: mg Date: Sun, 17 Jan 2021 19:34:17 +0100 Subject: [PATCH] gitlab runner von rierms als submodule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Group Vars und Inventory hinzugefügt Gruppe umbenannt, bindestrich nicht in gruppennamen erlaubt wip Einrückung Datei richtig benannt playbook mit richtiger rolle readme meta doku dict collectipn in doku doku funktioniert --- .gitmodules | 1 + README.md | 21 ++++++++++++++++ group_vars/all.yml | 24 +++++++++---------- group_vars/docker.yml | 3 --- group_vars/gitlabrunner.yml | 17 +++++++++++++ inventory | 11 +++++++-- keepass_db.kdbx | Bin 13022 -> 13294 bytes playbooks/service/gitlab-runner.yml | 7 ++++++ roles/mgrote.gitlab-runner/README.md | 10 ++++++++ roles/mgrote.gitlab-runner/defaults/main.yml | 3 +++ roles/mgrote.gitlab-runner/handlers/main.yml | 13 ++++++++++ roles/mgrote.gitlab-runner/meta/main.yml | 3 +++ roles/mgrote.gitlab-runner/tasks/main.yml | 6 +++++ 13 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 group_vars/gitlabrunner.yml create mode 100644 playbooks/service/gitlab-runner.yml create mode 100644 roles/mgrote.gitlab-runner/README.md create mode 100644 roles/mgrote.gitlab-runner/defaults/main.yml create mode 100644 roles/mgrote.gitlab-runner/handlers/main.yml create mode 100644 roles/mgrote.gitlab-runner/meta/main.yml create mode 100644 roles/mgrote.gitlab-runner/tasks/main.yml diff --git a/.gitmodules b/.gitmodules index 4b74b94f..a844e6d5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,3 +40,4 @@ [submodule "roles/geerlingguy.gitlab"] path = roles/geerlingguy.gitlab url = https://github.com/geerlingguy/ansible-role-gitlab + diff --git a/README.md b/README.md index 986512ba..c87ab7d3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,26 @@ # ansible_heimserver +## collections als Dependency +- in meta +``` +collections: + - community.general +``` + +## defaults in Dictionary +```bash +- name: "register_runner" + community.general.gitlab_runner: + description: "{{ description|default('GitLab-Runner') }}" +``` + +``` +description: <-- Original-Variable +"{{ item.description| <-- Original-Inhalt +default('GitLab-Runner') }}" <-- wenn Inhalt leer, dann default... +``` + + ## playbook-grapher `ansible-playbook-grapher --include-role-tasks tests/fixtures/with_roles.yml` diff --git a/group_vars/all.yml b/group_vars/all.yml index 610862ff..5605c84c 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -47,18 +47,18 @@ ufw_default_outgoing_policy: allow ### ryandaniels.create_users users: - - username: mg - password: "{{ lookup('keepass', 'linux_mg_user_password_hash', 'password') }}" - update_password: on_create - ssh_key: "{{ lookup('keepass', 'ssh_pubkey_mg', 'password') }}" - use_sudo: yes - use_sudo_nopass: yes - user_state: present - groups: ssh, sudo - servers: - - production - - staging - - test + - username: mg + password: "{{ lookup('keepass', 'linux_mg_user_password_hash', 'password') }}" + update_password: on_create + ssh_key: "{{ lookup('keepass', 'ssh_pubkey_mg', 'password') }}" + use_sudo: yes + use_sudo_nopass: yes + user_state: present + groups: ssh, sudo + servers: + - production + - staging + - test ### geerlingguy.dotfiles dotfiles_repo: "https://git.mgrote.net/mg/dotfiles" dotfiles_repo_local_destination: "/home/mg/dotfiles-repo" diff --git a/group_vars/docker.yml b/group_vars/docker.yml index a27fcbc9..6a5bca25 100644 --- a/group_vars/docker.yml +++ b/group_vars/docker.yml @@ -28,9 +28,6 @@ - production - staging - test - - virt - - cephq - - k8s ### mgrote.restic restic_folders_to_backup: /usr/local /etc /root /home /var/lib/docker restic_cron_hours: "*" diff --git a/group_vars/gitlabrunner.yml b/group_vars/gitlabrunner.yml new file mode 100644 index 00000000..04bd41ff --- /dev/null +++ b/group_vars/gitlabrunner.yml @@ -0,0 +1,17 @@ +--- + ### geerlingguy.docker + docker_users: + - mg + - root + - ansible-user + ### geerlingguy.pip + pip_package: python3-pip + pip_install_packages: + - name: python-gitlab + ### mgrote.gitlab-runner + gitlab_runner: + - api_url: https://git.mgrote.net + registration_token: "{{ lookup('keepass', 'gitlab_runner_registration_token', 'password') }}" + api_token: "{{ lookup('keepass', 'gitlab_runner_api_token', 'password') }}" #Token: ansible-gitlab-runner + api_username: root + description: "{{ ansible_hostname }}" diff --git a/inventory b/inventory index a0802baa..1e194509 100644 --- a/inventory +++ b/inventory @@ -54,12 +54,16 @@ all: gitea-staging.grote.lan: gitea-test.grote.lan: gitea.grote.lan: - gitlab: # immer auch unten in den 2 Gruppen eintragen, sonst schlägt in Bootstrap das verteilen der ssh-keys fehl + gitlab: hosts: gitlab-staging.grote.lan: gitlab-test.grote.lan: gitlab.grote.lan: - + gitlabrunner: # immer auch unten in den 2 Gruppen eintragen, sonst schlägt in Bootstrap das verteilen der ssh-keys fehl + hosts: + gitlab-runner-staging.grote.lan: + gitlab-runner-test.grote.lan: + gitlab-runner.grote.lan: # wsl: # hosts: # irantu.grote.lan: @@ -85,6 +89,7 @@ all: jenkins.grote.lan: gitea.grote.lan: gitlab.grote.lan: + gitlab-runner.grote.lan: staging: hosts: wireguard-staging.grote.lan: @@ -98,6 +103,7 @@ all: jenkins-staging.grote.lan: gitea-staging.grote.lan: gitlab-staging.grote.lan: + gitlab-runner-staging.grote.lan: test: hosts: wireguard-test.grote.lan: @@ -113,3 +119,4 @@ all: jenkins-test.grote.lan: gitea-test.grote.lan: gitlab-test.grote.lan: + gitlab-runner-test.grote.lan: diff --git a/keepass_db.kdbx b/keepass_db.kdbx index 1a8958b24409de8a7d2196f235fec0c1bb1ea3db..92038bd88e5796a51ad77b6093d8bf763478e124 100644 GIT binary patch literal 13294 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 literal 13022 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.04) + +### Variablen + Defaults +see [defaults](./defaults/main.yml) diff --git a/roles/mgrote.gitlab-runner/defaults/main.yml b/roles/mgrote.gitlab-runner/defaults/main.yml new file mode 100644 index 00000000..ce9bb2f4 --- /dev/null +++ b/roles/mgrote.gitlab-runner/defaults/main.yml @@ -0,0 +1,3 @@ +--- + gitlab_runner_arch: amd64 #https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html + gitlab_runner_dl_link: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_{{ gitlab_runner_arch }}.deb" diff --git a/roles/mgrote.gitlab-runner/handlers/main.yml b/roles/mgrote.gitlab-runner/handlers/main.yml new file mode 100644 index 00000000..d559f099 --- /dev/null +++ b/roles/mgrote.gitlab-runner/handlers/main.yml @@ -0,0 +1,13 @@ +--- + - name: "register_runner" + community.general.gitlab_runner: + api_url: "{{ item.api_url }}" + registration_token: "{{ item.registration_token }}" + api_token: "{{ item.api_token }}" + description: "{{ item.description|default('GitLab-Runner') }}" + state: "{{ item.state|default('present') }}" + active: "{{ item.active|default('True') }}" + run_untagged: True + locked: "{{ item.locked|default('False') }}" + loop: "{{ gitlab_runner }}" + no_log: true diff --git a/roles/mgrote.gitlab-runner/meta/main.yml b/roles/mgrote.gitlab-runner/meta/main.yml new file mode 100644 index 00000000..44c16ab8 --- /dev/null +++ b/roles/mgrote.gitlab-runner/meta/main.yml @@ -0,0 +1,3 @@ +--- + collections: # Damit wird die Collection, wenn nicht vorhanden, als Abhängigkeit heruntergeladen. + - community.general diff --git a/roles/mgrote.gitlab-runner/tasks/main.yml b/roles/mgrote.gitlab-runner/tasks/main.yml new file mode 100644 index 00000000..1e2924f8 --- /dev/null +++ b/roles/mgrote.gitlab-runner/tasks/main.yml @@ -0,0 +1,6 @@ +--- + - name: Install deb package + apt: + deb: "{{ gitlab_runner_dl_link }}" + state: present + notify: register_runner