aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defaults/main.yml3
-rw-r--r--handlers/main.yml5
-rw-r--r--tasks/buildkite.yml62
-rw-r--r--tasks/docker.yml30
-rw-r--r--tasks/main.yml13
-rw-r--r--vars/main.yml19
6 files changed, 132 insertions, 0 deletions
diff --git a/defaults/main.yml b/defaults/main.yml
new file mode 100644
index 0000000..c23fe49
--- /dev/null
+++ b/defaults/main.yml
@@ -0,0 +1,3 @@
+---
+buildkite_config: []
+buildkite_extra_packages: []
diff --git a/handlers/main.yml b/handlers/main.yml
new file mode 100644
index 0000000..4855161
--- /dev/null
+++ b/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart buildkite-agent
+ systemd:
+ name: buildkite-agent
+ state: restarted
diff --git a/tasks/buildkite.yml b/tasks/buildkite.yml
new file mode 100644
index 0000000..ae0b391
--- /dev/null
+++ b/tasks/buildkite.yml
@@ -0,0 +1,62 @@
+---
+- name: Add Buildkite GPG apt Key
+ ansible.builtin.get_url:
+ url: "https://keys.openpgp.org/vks/v1/by-fingerprint/{{ buildkite_gpg_fingerprint }}"
+ dest: /etc/apt/trusted.gpg.d/buildkite.asc
+
+- name: Add Buildkite Repository
+ apt_repository:
+ repo: >-
+ deb
+ [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/buildkite.asc]
+ https://apt.buildkite.com/buildkite-agent stable main
+ filename: buildkite
+
+- name: Install buildkite-agent
+ apt:
+ name:
+ - buildkite-agent
+
+- name: Add buildkite-agent default configuration
+ ansible.builtin.lineinfile:
+ create: true
+ path: /etc/buildkite-agent/buildkite-agent.cfg
+ regexp: "^{{ item.key }}="
+ line: |
+ {{ item.key }}={% if item.quote | default(true) %}"{{ item.value }}"{% else %}{{ item.value }}{% endif %}
+ owner: "buildkite-agent"
+ group: "buildkite-agent"
+ loop: "{{ buildkite_default_config }}"
+ notify:
+ - restart buildkite-agent
+
+- name: Add buildkite-agent user configuration
+ ansible.builtin.lineinfile:
+ path: /etc/buildkite-agent/buildkite-agent.cfg
+ regexp: "^{{ item.key }}="
+ line: |
+ {{ item.key }}={% if item.quote | default(true) %}"{{ item.value }}"{% else %}{{ item.value }}{% endif %}
+ owner: "buildkite-agent"
+ group: "buildkite-agent"
+ loop: "{{ buildkite_config }}"
+ notify:
+ - restart buildkite-agent
+
+- name: Copy environment hook
+ ansible.builtin.copy:
+ dest: /etc/buildkite-agent/hooks/environment
+ owner: "buildkite-agent"
+ group: "buildkite-agent"
+ content: |
+ #!/bin/bash
+ set -euo pipefail
+
+ {{ buildkite_environment_hook }}
+ notify:
+ - restart buildkite-agent
+
+- name: Ensure buildkite-agent is enabled
+ systemd:
+ name: buildkite-agent
+ state: started
+ enabled: true
diff --git a/tasks/docker.yml b/tasks/docker.yml
new file mode 100644
index 0000000..0e4d2a0
--- /dev/null
+++ b/tasks/docker.yml
@@ -0,0 +1,30 @@
+---
+- name: Add Docker GPG apt Key
+ ansible.builtin.get_url:
+ url: https://download.docker.com/linux/debian/gpg
+ dest: /etc/apt/trusted.gpg.d/docker.asc
+
+- name: Add Docker Repository
+ apt_repository:
+ repo: >-
+ deb
+ [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker.asc]
+ https://download.docker.com/linux/debian
+ {{ ansible_distribution_release }}
+ stable
+ filename: docker
+
+- name: Install docker
+ apt:
+ name:
+ - docker-ce
+ - docker-ce-cli
+ - containerd.io
+ - docker-buildx-plugin
+ - docker-compose-plugin
+
+- name: Ensure docker is enabled
+ systemd:
+ name: docker
+ state: started
+ enabled: true
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000..484adfc
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,13 @@
+---
+- name: Install required system packages
+ apt:
+ name: "{{ buildkite_packages + buildkite_extra_packages }}"
+
+- include_tasks: buildkite.yml
+- include_tasks: docker.yml
+
+- name: Add buildkite-agent user to docker group
+ user:
+ name: buildkite-agent
+ groups: [docker]
+ append: true
diff --git a/vars/main.yml b/vars/main.yml
new file mode 100644
index 0000000..18c0ea8
--- /dev/null
+++ b/vars/main.yml
@@ -0,0 +1,19 @@
+---
+buildkite_packages:
+ - apt-transport-https
+ - ca-certificates
+ - curl
+ - dirmngr
+ - gnupg
+
+buildkite_default_config:
+ - key: name
+ value: "%hostname-%spawn"
+ - key: build-path
+ value: /var/lib/buildkite-agent/builds
+ - key: hooks-path
+ value: /etc/buildkite-agent/hooks
+ - key: plugins-path
+ value: /etc/buildkite-agent/plugins
+
+buildkite_gpg_fingerprint: 32A37959C2FA5C3C99EFBC32A79206696452D198