diff --git a/tasks/config.yml b/tasks/config.yml new file mode 100644 index 0000000..794b273 --- /dev/null +++ b/tasks/config.yml @@ -0,0 +1,30 @@ +# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html +# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html +--- +- name: delete .runner file for redeploy + ansible.builtin.file: + state: absent + path: "{{ RUNNER_DIR }}/.runner" + when: RUNNER_REDEPLOY + +- name: register runner + notify: restart runner + ansible.builtin.command: + cmd: "{{ RUNNER_DIR }}/{{ RUNNER_NAME }} register --no-interactive --instance {{ RUNNER_INSTANCE }} --token {{ RUNNER_TOKEN }}" + chdir: "{{ RUNNER_DIR }}" + creates: "{{ RUNNER_DIR }}/.runner" + when: + - RUNNER_TOKEN != None + +- name: ensure correct access rights for .runner file + ansible.builtin.file: + path: "{{ RUNNER_DIR }}/.runner" + owner: "{{ RUNNER_USER }}" + group: "{{ RUNNER_GROUP }}" + mode: '0660' + +- name: enable runner + notify: restart runner + ansible.builtin.service: + name: "{{ RUNNER_SERVICE_NAME }}" + enabled: yes \ No newline at end of file diff --git a/tasks/install.yml b/tasks/install.yml new file mode 100644 index 0000000..d62be23 --- /dev/null +++ b/tasks/install.yml @@ -0,0 +1,49 @@ +# 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/service_module.html +--- +- name: create runner user + ansible.builtin.user: + name: "{{ RUNNER_USER }}" + create_home: yes + groups: "{{ RUNNER_USER_GROUPS }}" + append: true + 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: config.yml.j2 + dest: "{{ RUNNER_DIR }}/config.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 \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 0f754ad..879682c 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,83 +1,9 @@ -# 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/command_module.html -# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html +# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/include_tasks_module.html --- -- name: check runner token - ansible.builtin.fail: - msg: no token is set! - when: RUNNER_TOKEN == None +- name: install runner + tags: [install] + include_tasks: install.yml -- name: create runner user - ansible.builtin.user: - name: "{{ RUNNER_USER }}" - create_home: yes - groups: "{{ RUNNER_USER_GROUPS }}" - append: true - 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: config.yml.j2 - dest: "{{ RUNNER_DIR }}/config.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: delete .runner file for redeploy - ansible.builtin.file: - state: absent - path: "{{ RUNNER_DIR }}/.runner" - when: RUNNER_REDEPLOY - -- name: register runner - notify: restart runner - ansible.builtin.command: - cmd: "{{ RUNNER_DIR }}/{{ RUNNER_NAME }} register --no-interactive --instance {{ RUNNER_INSTANCE }} --token {{ RUNNER_TOKEN }}" - chdir: "{{ RUNNER_DIR }}" - creates: "{{ RUNNER_DIR }}/.runner" - when: - - RUNNER_TOKEN != None - -- name: ensure correct access rights for .runner file - ansible.builtin.file: - path: "{{ RUNNER_DIR }}/.runner" - owner: "{{ RUNNER_USER }}" - group: "{{ RUNNER_GROUP }}" - mode: '0660' - -- name: enable runner - notify: restart runner - ansible.builtin.service: - name: "{{ RUNNER_SERVICE_NAME }}" - enabled: yes \ No newline at end of file +- name: config env + tags: [install, config] + include_tasks: config.yml \ No newline at end of file