Skip to content

Commit feb7bc2

Browse files
committed
Remove ansible and configure instance with user_data
1 parent 9e83ecc commit feb7bc2

File tree

5 files changed

+124
-105
lines changed

5 files changed

+124
-105
lines changed

main.tf

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,36 @@
1-
resource "aws_key_pair" "ansible" {
2-
public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDMI/oUO7c6QPEUhjQktSRnLDp6VX1IRBzQH9CB4l30C9BBKSS2rhLBkEYopJQkKbFeWbwxEMPL/QWdsOAQnsCTujGAbUMZ8Yepe6kk22nOsvIjsfO+yxptJOUxX3xFmWp2aDr/A/wxAopr80vsI9QpaP86DYSZUimlUxoXS2JjPHbpPC2UICj7FVLqmM4BjxTJUuFoy4664htdtuNNTO5X98DRWfHsZj9mzMeKcxgf7sV1t8el3lC0Yi2qoOs+K7iSlA81YFhc9r7rs+BRZSDrBykiu5ImFdasfjaG7q2eUG0ypO22FT8FPIz7c3CZTTX/I+W2BBWFQu3YlCjUKFuxGpL6ApNQMNsvzvKsSdJMsVFKREgMkRR9JmbTz52qEdc2zuSROOrH0Ov/NVko4Daj+B3seUeCqZTM4Uy7/aP+k/ZsHijOFs4X3u69gdN8CH8/BVUefknfNksc317E40F3WeWfMmyyBv0tKKc8OffFu0tdddG2BKXm/f4mQM7fD5s= ansible"
3-
key_name = "ansible"
4-
1+
locals {
52
tags = {
6-
Name = "ansible"
3+
Name = "gitlab-docker-runner"
74
ManagedBy = "Terraform"
85
}
6+
runner_user_data = templatefile("templates/runner.tftpl", {
7+
gitlab_url = var.gitlab_url
8+
runner_registration_token = var.runner_registration_token
9+
docker_image = var.docker_image
10+
runner_description = var.runner_description
11+
runner_tags = "\"${join(", ", var.runner_tags)}\""
12+
run_untagged_jobs = var.run_untagged_jobs
13+
runner_locked = var.runner_locked
14+
})
915
}
1016

11-
resource "aws_instance" "terraform-gitlab-docker-runner" {
12-
ami = "ami-074cc9cf7a6bfbd02"
13-
instance_type = "c6g.medium"
14-
count = 2
15-
key_name = aws_key_pair.ansible.id
16-
vpc_security_group_ids = ["sg-0ecbf0cc9789639b8"]
17-
subnet_id = "subnet-0add22dd44185ea41"
18-
associate_public_ip_address = false
17+
resource "aws_key_pair" "gitlab_docker_runner" {
18+
count = var.ssh_public_key != null ? 1 : 0
19+
key_name = "gitlab-docker-runner"
20+
public_key = var.ssh_public_key
1921

20-
provisioner "local-exec" {
21-
command = "ansible-playbook playbooks/gitlab_runner.yaml -i ${self.private_ip}, -u ubuntu --private-key '/Users/rajattomar/.ssh/ansible/id_rsa' --extra-vars 'ip=${self.private_ip}'"
22-
}
22+
tags = local.tags
23+
}
2324

24-
tags = {
25-
Name = "terraform-gitlab-docker-runner"
26-
ManagedBy = "Terraform"
27-
}
25+
resource "aws_instance" "gitlab_docker_runner" {
26+
count = var.instance_count
27+
ami = var.ami_id
28+
instance_type = var.instance_type
29+
key_name = var.ssh_public_key != null ? aws_key_pair.gitlab_docker_runner[0].key_name : null
30+
vpc_security_group_ids = var.vpc_security_group_ids
31+
subnet_id = var.subnet_id
32+
user_data = local.runner_user_data
33+
user_data_replace_on_change = var.user_data_replace_on_change
34+
35+
tags = local.tags
2836
}

playbooks/gitlab_runner.yaml

Lines changed: 0 additions & 81 deletions
This file was deleted.

templates/runner.tftpl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#! /bin/bash
2+
3+
sudo gitlab-runner register \
4+
--non-interactive \
5+
--url ${gitlab_url} \
6+
--registration-token ${runner_registration_token} \
7+
--executor docker \
8+
--docker-image ${docker_image} \
9+
--description ${runner_description} \
10+
--tag-list ${runner_tags} \
11+
--run-untagged=${run_untagged_jobs} \
12+
--locked=${runner_locked} \
13+
--access-level="not_protected"

variables.tf

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
variable "ami_id" {
2+
description = "AMI to use for the instance"
3+
type = string
4+
default = "ami-01783a07b28906745"
5+
}
6+
7+
variable "instance_type" {
8+
description = "Type of instance to provision"
9+
type = string
10+
default = "t2.micro"
11+
}
12+
13+
variable "instance_count" {
14+
description = "Number of instances to provision"
15+
type = number
16+
default = 2
17+
}
18+
19+
variable "vpc_security_group_ids" {
20+
description = "List of security group IDs to associate"
21+
type = list(string)
22+
default = []
23+
}
24+
25+
variable "subnet_id" {
26+
description = "VPC Subnet ID to launch in"
27+
type = string
28+
default = ""
29+
}
30+
31+
variable "user_data_replace_on_change" {
32+
description = "Recreate the instance when the user data changes"
33+
type = bool
34+
default = true
35+
}
36+
37+
variable "gitlab_url" {
38+
description = "Gitlab URL"
39+
type = string
40+
default = ""
41+
}
42+
43+
variable "runner_registration_token" {
44+
description = "Gitlab registration token"
45+
type = string
46+
default = ""
47+
}
48+
49+
variable "docker_image" {
50+
description = "Docker image to use"
51+
type = string
52+
default = "alpine"
53+
}
54+
55+
variable "runner_description" {
56+
description = "Description for Gitlab Runners"
57+
type = string
58+
default = "Docker Runner"
59+
}
60+
61+
variable "runner_tags" {
62+
description = "Runner tags"
63+
type = list(string)
64+
default = ["docker", "aws"]
65+
}
66+
67+
variable "run_untagged_jobs" {
68+
description = "Run untagged jobs or not"
69+
type = bool
70+
default = true
71+
}
72+
73+
variable "runner_locked" {
74+
description = "Lock the runner or not"
75+
type = bool
76+
default = false
77+
}
78+
79+
variable "ssh_public_key" {
80+
description = "SSH public key to use for the key pair"
81+
type = string
82+
default = null
83+
}

provider.tf renamed to versions.tf

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,3 @@ terraform {
88

99
required_version = "~> 1.3.0"
1010
}
11-
12-
provider "aws" {
13-
region = "ap-south-1"
14-
}

0 commit comments

Comments
 (0)