-
Notifications
You must be signed in to change notification settings - Fork 9
/
playbook.yml
138 lines (124 loc) · 4.18 KB
/
playbook.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
---
- hosts: all
vars:
RUNNER_VERSION: 2.169.1
vars_files:
- secret.yml
vars_prompt:
- name: ORG
prompt: What is the GitHub organization associated with this self-hosted runner?
private: no
- name: REPO
prompt: What is the GitHub repository associated with this self-hosted runner?
private: no
- name: RUNNER_NAME
prompt: What is the runner's name on GitHub?
private: no
default: github-action-runner
tasks:
- name: Verify that user exists on the server
become: yes
user:
name: "{{ ansible_user }}"
groups: sudo,adm
state: present
- name: Showing the input variables
debug:
msg: "Setting up a GitHub runner {{ RUNNER_NAME }} for repository: https://github.com/{{ ORG }}/{{ REPO }}"
- name: Requesting registration
uri:
url: https://api.github.com/repos/{{ ORG }}/{{ REPO }}/actions/runners/registration-token
method: POST
headers:
Authorization: "Token {{ PERSONAL_ACCESS_TOKEN }}"
Accept: "application/json"
status_code: 201
register: URI_OUTPUT
tags:
- uninstall
- name: Creating a directory for the runner
file:
path: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}
state: directory
- name: Downloading and extracting the runner
unarchive:
src: https://github.com/actions/runner/releases/download/v{{ RUNNER_VERSION }}/actions-runner-linux-x64-{{ RUNNER_VERSION }}.tar.gz
dest: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}
creates: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}/config.sh
remote_src: yes
- name: Configuring the GitHub Action runner
args:
chdir: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}
creates: .runner
command:
argv:
- ./config.sh
- --url
- "https://github.com/{{ ORG }}/{{ REPO }}"
- --name
- "{{ RUNNER_NAME }}"
- --token
- "{{ URI_OUTPUT['json']['token'] }}"
- --unattended
- --replace
- name: Install the GitHub Action runner as a service
args:
chdir: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}
creates: /etc/systemd/system/actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
become: yes
command: ./svc.sh install
- name: Enable starting the runner service when the machine starts
become: yes
systemd:
name: actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
enabled: yes
tags:
- enable
- name: Starting the runner service
become: yes
systemd:
name: actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
state: started
tags:
- start
- name: Stopping the runner service
become: yes
systemd:
name: actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
state: stopped
tags:
- never
- stop
- name: Disable starting the runner service when the system boots
become: yes
systemd:
name: actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
enabled: no
tags:
- never
- disable
- name: Restart the runner service
become: yes
systemd:
name: actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
state: restarted
tags:
- never
- restart
- name: Unregister the runner with GitHub
args:
chdir: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}
removes: /etc/systemd/system/actions.runner.{{ ORG }}-{{ REPO }}.{{ RUNNER_NAME }}.service
become: yes
command: ./svc.sh uninstall
tags:
- never
- uninstall
- name: Uninstall the runner service
args:
chdir: /home/tester/opt/actions-runner/{{ ORG }}/{{ REPO }}/{{ RUNNER_NAME }}
removes: .runner
command: ./config.sh remove --token {{ URI_OUTPUT['json']['token'] }}
tags:
- never
- uninstall