--- - name: Setup Gitea Runner on HCP nodes hosts: hcp become: yes vars: gitea_runner_token: "vOrrQda6Qiet9YOj4waZVU5QgLig2J3rKp2RfoN7" gitea_server_url: "http://gitea:3000" gitea_runner_user: "gitea-runner" gitea_runner_home: "/home/{{ gitea_runner_user }}" gitea_runner_config_dir: "/etc/gitea-runner" gitea_runner_data_dir: "/var/lib/gitea-runner" gitea_runner_log_dir: "/var/log/gitea-runner" gitea_runner_binary: "/usr/bin/act_runner" tasks: - name: Check if gitea-runner binary exists stat: path: "{{ gitea_runner_binary }}" register: runner_binary - name: Fail if act_runner binary not found fail: msg: "Act runner binary not found at {{ gitea_runner_binary }}. Please install it first." when: not runner_binary.stat.exists - name: Create gitea-runner user user: name: "{{ gitea_runner_user }}" system: yes shell: /bin/bash home: "{{ gitea_runner_home }}" create_home: yes comment: "Gitea Runner Service User" - name: Create gitea-runner directories file: path: "{{ item }}" state: directory owner: "{{ gitea_runner_user }}" group: "{{ gitea_runner_user }}" mode: '0755' loop: - "{{ gitea_runner_config_dir }}" - "{{ gitea_runner_data_dir }}" - "{{ gitea_runner_log_dir }}" - name: Create gitea-runner configuration file template: src: gitea-runner-config.yml.j2 dest: "{{ gitea_runner_config_dir }}/config.yml" owner: "{{ gitea_runner_user }}" group: "{{ gitea_runner_user }}" mode: '0600' notify: restart gitea-runner - name: Create gitea-runner systemd service file template: src: gitea-runner.service.j2 dest: /etc/systemd/system/gitea-runner.service owner: root group: root mode: '0644' notify: - reload systemd - restart gitea-runner - name: Create gitea-runner environment file template: src: gitea-runner.env.j2 dest: /etc/default/gitea-runner owner: root group: root mode: '0600' notify: restart gitea-runner - name: Create runner registration script template: src: register-runner.sh.j2 dest: "{{ gitea_runner_home }}/register-runner.sh" owner: "{{ gitea_runner_user }}" group: "{{ gitea_runner_user }}" mode: '0755' - name: Check if runner is already registered stat: path: "{{ gitea_runner_data_dir }}/.runner" register: runner_registered - name: Register gitea runner command: "{{ gitea_runner_home }}/register-runner.sh" become_user: "{{ gitea_runner_user }}" when: not runner_registered.stat.exists register: registration_result - name: Display registration result debug: var: registration_result.stdout_lines when: registration_result is defined and registration_result.stdout_lines is defined - name: Create runner startup script template: src: start-runner.sh.j2 dest: "{{ gitea_runner_home }}/start-runner.sh" owner: "{{ gitea_runner_user }}" group: "{{ gitea_runner_user }}" mode: '0755' - name: Create logrotate configuration for gitea-runner template: src: gitea-runner.logrotate.j2 dest: /etc/logrotate.d/gitea-runner owner: root group: root mode: '0644' - name: Install Docker (required for runner) package: name: docker.io state: present - name: Add gitea-runner user to docker group user: name: "{{ gitea_runner_user }}" groups: docker append: yes - name: Start and enable Docker service systemd: name: docker state: started enabled: yes - name: Start and enable gitea-runner service systemd: name: gitea-runner state: started enabled: yes daemon_reload: yes - name: Check gitea-runner service status systemd: name: gitea-runner register: service_status - name: Display service status debug: msg: "Gitea Runner service is {{ service_status.status.ActiveState }}" handlers: - name: reload systemd systemd: daemon_reload: yes - name: restart gitea-runner systemd: name: gitea-runner state: restarted