From 27942f91784d2612510633eb507d280602da0071 Mon Sep 17 00:00:00 2001 From: Bastian de Byl Date: Tue, 14 Nov 2023 15:54:57 -0500 Subject: [PATCH] noticket - version bumps and github actions runner --- .gitmodules | 3 + ansible/deploy_home.yml | 2 +- .../roles/github-actions/defaults/main.yml | 3 + ansible/roles/github-actions/tasks/deps.yml | 14 ++++ ansible/roles/github-actions/tasks/main.yml | 5 ++ ansible/roles/github-actions/tasks/user.yml | 60 ++++++++++++++++++ .../podman/tasks/container-bookstack.yml | 1 + ansible/roles/podman/tasks/main.yml | 18 +++--- ansible/vars/vault.yml | Bin 12105 -> 12365 bytes 9 files changed, 96 insertions(+), 10 deletions(-) create mode 100644 .gitmodules create mode 100644 ansible/roles/github-actions/defaults/main.yml create mode 100644 ansible/roles/github-actions/tasks/deps.yml create mode 100644 ansible/roles/github-actions/tasks/main.yml create mode 100644 ansible/roles/github-actions/tasks/user.yml diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..2cd03ba --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "ansible/roles/monolithprojects.github_actions_runner"] + path = ansible/roles/monolithprojects.github_actions_runner + url = https://github.com/MonolithProjects/ansible-github_actions_runner.git diff --git a/ansible/deploy_home.yml b/ansible/deploy_home.yml index 126b711..0f7aefb 100644 --- a/ansible/deploy_home.yml +++ b/ansible/deploy_home.yml @@ -1,4 +1,3 @@ ---- - hosts: all vars_files: - vars/vault.yml @@ -7,3 +6,4 @@ - role: git - role: podman - role: ssl + - role: github-actions diff --git a/ansible/roles/github-actions/defaults/main.yml b/ansible/roles/github-actions/defaults/main.yml new file mode 100644 index 0000000..2e21f1a --- /dev/null +++ b/ansible/roles/github-actions/defaults/main.yml @@ -0,0 +1,3 @@ +--- +runner_user: actions-runner +runner_dir: /home/actions-runner \ No newline at end of file diff --git a/ansible/roles/github-actions/tasks/deps.yml b/ansible/roles/github-actions/tasks/deps.yml new file mode 100644 index 0000000..477bc4e --- /dev/null +++ b/ansible/roles/github-actions/tasks/deps.yml @@ -0,0 +1,14 @@ +--- +- name: enable required dnf repositories + become: true + ansible.builtin.shell: + cmd: dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo + creates: /etc/yum.repos.d/hashicorp.repo + +- name: install github dependencies + become: true + ansible.builtin.dnf: + name: + - awscli + - terraform + state: present \ No newline at end of file diff --git a/ansible/roles/github-actions/tasks/main.yml b/ansible/roles/github-actions/tasks/main.yml new file mode 100644 index 0000000..723274c --- /dev/null +++ b/ansible/roles/github-actions/tasks/main.yml @@ -0,0 +1,5 @@ +--- +- import_tasks: user.yml + tags: github +- import_tasks: deps.yml + tags: github diff --git a/ansible/roles/github-actions/tasks/user.yml b/ansible/roles/github-actions/tasks/user.yml new file mode 100644 index 0000000..751ef07 --- /dev/null +++ b/ansible/roles/github-actions/tasks/user.yml @@ -0,0 +1,60 @@ +--- +- name: create github actions user + become: true + ansible.builtin.user: + name: "{{ runner_user }}" + shell: /usr/bin/nologin + createhome: true + home: "{{ runner_dir }}" + +- name: set ulimits for github user + become: true + community.general.pam_limits: + domain: "{{ runner_user }}" + limit_type: "{{ item.type }}" + limit_item: "{{ item.name }}" + value: "{{ item.value }}" + loop: + - name: memlock + type: soft + value: "unlimited" + - name: memlock + type: hard + value: "unlimited" + - name: nofile + type: soft + value: 39693561 + - name: memlock + type: hard + value: 39693561 + tags: github + +- name: check if github user lingering enabled + become: true + ansible.builtin.stat: + path: "/var/lib/systemd/linger/{{ runner_user }}" + register: user_lingering + tags: github + +- name: enable github user lingering + become: true + become_user: "{{ runner_user }}" + ansible.builtin.command: | + loginctl enable-linger {{ runner_user }} + when: + - not user_lingering.stat.exists + tags: github + +- name: selinux context for github directories + become: true + community.general.sefcontext: + target: "{{ item.target }}(/.*)?" + setype: "{{ item.setype }}" + state: present + notify: restorecon podman + loop: + - { target: "{{ runner_dir }}", setype: "user_home_dir_t" } + - { target: "{{ runner_dir }}/.local/share", setype: "container_file_t" } + tags: + - github + - selinux diff --git a/ansible/roles/podman/tasks/container-bookstack.yml b/ansible/roles/podman/tasks/container-bookstack.yml index a83a4ae..af069c8 100644 --- a/ansible/roles/podman/tasks/container-bookstack.yml +++ b/ansible/roles/podman/tasks/container-bookstack.yml @@ -69,6 +69,7 @@ - shared env: APP_URL: "https://wiki.skudakrennsport.com" + APP_KEY: "{{ bookstack_app_key }}" DB_HOST: "bookstack-db" DB_USERNAME: "bookstack" DB_DATABASE: "bookstack" diff --git a/ansible/roles/podman/tasks/main.yml b/ansible/roles/podman/tasks/main.yml index f2faf89..0ce13f1 100644 --- a/ansible/roles/podman/tasks/main.yml +++ b/ansible/roles/podman/tasks/main.yml @@ -15,7 +15,7 @@ - import_tasks: container-hass.yml vars: - image: ghcr.io/home-assistant/home-assistant:stable + image: ghcr.io/home-assistant/home-assistant:2023.11 tags: hass - import_tasks: container-partkeepr.yml @@ -34,30 +34,30 @@ - import_tasks: container-bookstack.yml vars: db_image: docker.io/library/mysql:5.7.21 - image: docker.io/solidnerd/bookstack:23.6 - tags: bookstack + image: docker.io/solidnerd/bookstack:23.10 + tags: skuwiki - import_tasks: container-photos.yml vars: db_image: docker.io/library/mariadb:10.8 - image: docker.io/photoprism/photoprism:230625-ce + image: docker.io/photoprism/photoprism:231021-ce tags: photos - import_tasks: container-cloud.yml vars: - db_image: docker.io/library/mariadb:10.5 - image: docker.io/library/nextcloud:24.0.5-apache + db_image: docker.io/library/mariadb:10.6 + image: docker.io/library/nextcloud:27.1.3-apache tags: cloud - import_tasks: container-cloud-skudak.yml vars: - db_image: docker.io/library/mariadb:10.5 - image: docker.io/library/nextcloud:24.0.5-apache + db_image: docker.io/library/mariadb:10.6 + image: docker.io/library/nextcloud:27.1.3-apache tags: skucloud - import_tasks: container-fulfillr.yml vars: - image: "{{ aws_ecr_endpoint }}/fulfillr:20231005.1415" + image: "{{ aws_ecr_endpoint }}/fulfillr:20231113.1809" tags: fulfillr - import_tasks: configuration-nginx.yml diff --git a/ansible/vars/vault.yml b/ansible/vars/vault.yml index 4c9763f1ec1439cbd85ab9030fec1c1e94cca2e7..550e241820a697032ca8d220262db186633fd35e 100644 GIT binary patch literal 12365 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 QC->D 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 literal 12105 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