# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/get_url_module.html # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/user_module.html # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/stat_module.html # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/command_module.html # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html --- - name: check runner token ansible.builtin.fail: msg: no token is set! when: RUNNER_TOKEN == None - name: create runner user ansible.builtin.user: name: "{{ RUNNER_USER }}" create_home: yes home: "{{ RUNNER_DIR }}" - name: download runner delegate_to: localhost run_once: true ansible.builtin.get_url: url: "{{ RUNNER_DOWNLOAD_URL }}" dest: "/{{ RUNNER_DOWNLOAD_DIR }}/{{ RUNNER_NAME }}" mode: '0440' - name: copy runner binary copy: src: "{{ RUNNER_DOWNLOAD_DIR }}/{{ RUNNER_NAME }}" dest: "{{ RUNNER_DIR }}/{{ RUNNER_NAME }}" owner: "{{ RUNNER_USER }}" group: "{{ RUNNER_GROUP | default(RUNNER_USER) }}" mode: '0770' - name: create runner config ansible.builtin.template: src: conf.yml.j2 dest: "{{ RUNNER_DIR }}/conf.yml" owner: "{{ RUNNER_USER }}" group: "{{ RUNNER_GROUP | default(RUNNER_USER) }}" mode: '0660' - name: create runner service file notify: reload daemons ansible.builtin.template: src: runner.service.j2 dest: "/etc/systemd/system/{{ RUNNER_SERVICE_NAME }}" owner: root group: root mode: '0600' - name: flush handlers meta: flush_handlers - name: check if runner registerd stat: path: "{{ RUNNER_DIR }}/.runner" register: stat_result - name: register runner command: "{{ RUNNER_DIR }}/{{ RUNNER_NAME }} register --no-interactive --instance {{ RUNNER_INSTANCE }} --token {{ RUNNER_TOKEN }}" when: - not stat_result.stat.exists - RUNNER_TOKEN != None - name: enable runner notify: restart runner ansible.builtin.service: name: "{{ RUNNER_SERVICE_NAME }}" enabled: yes