diff --git a/roles/gitlab/tasks/main.yml b/roles/gitlab/tasks/main.yml
index 8d48051d936900e7c6151febcb89ed74ca74aa67..88d8be8482400fbbd512b6cb1c18c24a6570b189 100644
--- a/roles/gitlab/tasks/main.yml
+++ b/roles/gitlab/tasks/main.yml
@@ -1,4 +1,22 @@
 ---
+- name: Configure Gitlab repository
+  template:
+    src: apt/sources.list.d/gitlab_gitlab-ce.list.j2
+    dest: /etc/apt/sources.list.d/gitlab_gitlab-ce.list
+    mode: 0644
+    owner: root
+    group: root
+
+- name: Install Gitlab
+  apt:
+    update_cache: true
+    install_recommends: false
+    name:
+      - gitlab-ce
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
 - name: Add Gitlab configuration
   template:
     src: gitlab.rb.j2
diff --git a/roles/gitlab/templates/apt/sources.list.d/gitlab_gitlab-ce.list.j2 b/roles/gitlab/templates/apt/sources.list.d/gitlab_gitlab-ce.list.j2
new file mode 100644
index 0000000000000000000000000000000000000000..ac85516b12ae64f514454988a5db63a57fd1dd62
--- /dev/null
+++ b/roles/gitlab/templates/apt/sources.list.d/gitlab_gitlab-ce.list.j2
@@ -0,0 +1,4 @@
+{{ ansible_header | comment }}
+
+deb https://packages.gitlab.com/gitlab/gitlab-ce/debian/ {{ ansible_distribution_release }} main
+deb-src https://packages.gitlab.com/gitlab/gitlab-ce/debian/ {{ ansible_distribution_release }} main