add terraform script for buildgrid server
This commit is contained in:
parent
a669eb5f0c
commit
decf957c61
152
images/terraform-buildgrid/buildgrid.tf
Normal file
152
images/terraform-buildgrid/buildgrid.tf
Normal file
@ -0,0 +1,152 @@
|
||||
terraform {
|
||||
backend "remote" {
|
||||
organization = "uazo-bromite"
|
||||
|
||||
workspaces {
|
||||
name = "bromite-ci"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "oci" {
|
||||
tenancy_ocid = "${var.tenancy_ocid}"
|
||||
user_ocid = "${var.user_ocid}"
|
||||
fingerprint = "${var.fingerprint}"
|
||||
private_key_path = "${var.private_oci_key_path}"
|
||||
region = "${var.region}"
|
||||
}
|
||||
|
||||
resource "oci_core_vcn" "ci_vcn" {
|
||||
compartment_id = "${var.compartment_id}"
|
||||
cidr_blocks = ["10.0.1.0/24"]
|
||||
}
|
||||
|
||||
resource "oci_core_internet_gateway" "ci_internet_gateway" {
|
||||
vcn_id = oci_core_vcn.ci_vcn.id
|
||||
compartment_id = "${var.compartment_id}"
|
||||
enabled = true
|
||||
}
|
||||
|
||||
resource "oci_core_default_route_table" "ci_route_table" {
|
||||
compartment_id = "${var.compartment_id}"
|
||||
manage_default_resource_id = oci_core_vcn.ci_vcn.default_route_table_id
|
||||
route_rules {
|
||||
network_entity_id = oci_core_internet_gateway.ci_internet_gateway.id
|
||||
destination = "0.0.0.0/0"
|
||||
destination_type = "CIDR_BLOCK"
|
||||
}
|
||||
}
|
||||
|
||||
resource "oci_core_default_security_list" "ci_security_list" {
|
||||
compartment_id = "${var.compartment_id}"
|
||||
manage_default_resource_id = oci_core_vcn.ci_vcn.default_security_list_id
|
||||
egress_security_rules {
|
||||
stateless = false
|
||||
destination = "0.0.0.0/0"
|
||||
destination_type = "CIDR_BLOCK"
|
||||
protocol = "all"
|
||||
}
|
||||
|
||||
ingress_security_rules {
|
||||
protocol = "6" # TCP
|
||||
source = "0.0.0.0/0"
|
||||
tcp_options {
|
||||
min = 50051
|
||||
max = 50051
|
||||
}
|
||||
}
|
||||
|
||||
ingress_security_rules {
|
||||
protocol = "6" # TCP
|
||||
source = "0.0.0.0/0"
|
||||
tcp_options {
|
||||
min = 22
|
||||
max = 22
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "oci_core_subnet" "ci_subnet" {
|
||||
vcn_id = oci_core_vcn.ci_vcn.id
|
||||
cidr_block = "10.0.1.0/24"
|
||||
compartment_id = "${var.compartment_id}"
|
||||
}
|
||||
|
||||
resource "oci_core_instance" "buildgrid0" {
|
||||
display_name = "buildgrid0"
|
||||
availability_domain = "${var.availability_domain}"
|
||||
compartment_id = "${var.compartment_id}"
|
||||
shape = "VM.Standard.E2.1.Micro"
|
||||
|
||||
create_vnic_details {
|
||||
assign_public_ip = true
|
||||
subnet_id = oci_core_subnet.ci_subnet.id
|
||||
}
|
||||
|
||||
source_details {
|
||||
source_type = "image"
|
||||
source_id = "ocid1.image.oc1.eu-frankfurt-1.aaaaaaaa3mdsbx7kel54yf55ugtfwsvegivhvtidxlfrofwzqlfsg4nb4dxa"
|
||||
}
|
||||
|
||||
metadata = {
|
||||
ssh_authorized_keys = file("${var.ssh_authorized_keys}")
|
||||
}
|
||||
|
||||
timeouts {
|
||||
create = "15m"
|
||||
}
|
||||
|
||||
connection {
|
||||
type = "ssh"
|
||||
host = "${self.public_ip}"
|
||||
user = "${var.userid}"
|
||||
private_key = file("${var.public_key}")
|
||||
timeout = "5m"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
source = "buildgrid.yml"
|
||||
destination = "buildgrid.yml"
|
||||
}
|
||||
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"set -o errexit",
|
||||
|
||||
"echo waiting 90s",
|
||||
"sleep 90s",
|
||||
|
||||
"echo apt updating",
|
||||
"sudo apt-get update",
|
||||
"sudo apt-get -y upgrade",
|
||||
|
||||
"echo installing pre-reqs",
|
||||
"sudo apt-get install -y python3 python3-venv git firewalld",
|
||||
|
||||
"echo cloning buildgrid repo",
|
||||
"git clone https://gitlab.com/BuildGrid/buildgrid.git",
|
||||
"cd buildgrid/",
|
||||
|
||||
"echo setting up",
|
||||
"python3 -m venv env",
|
||||
"env/bin/python -m pip install --upgrade setuptools pip wheel",
|
||||
"env/bin/python -m pip install --editable .",
|
||||
|
||||
"echo opening tcp port",
|
||||
"sudo firewall-cmd --zone=public --permanent --add-port=50051/tcp",
|
||||
"sudo firewall-cmd --reload",
|
||||
|
||||
"nohup env/bin/bgd server start ../buildgrid.yml &",
|
||||
"sleep 30s",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
data "oci_core_instance" "instance" {
|
||||
instance_id = oci_core_instance.buildgrid0.id
|
||||
}
|
||||
|
||||
output "instance_ip" {
|
||||
value = data.oci_core_instance.instance.public_ip
|
||||
}
|
||||
#terraform output instance_ip
|
60
images/terraform-buildgrid/buildgrid.yml
Normal file
60
images/terraform-buildgrid/buildgrid.yml
Normal file
@ -0,0 +1,60 @@
|
||||
server:
|
||||
- !channel
|
||||
port: 50051
|
||||
insecure-mode: true
|
||||
|
||||
description: >
|
||||
BuildGrid's default configuration:
|
||||
- Unauthenticated plain HTTP at :50051
|
||||
- Single instance: [unnamed]
|
||||
- In-memory data, max. 2Gio
|
||||
- DataStore: sqlite:///./example.db
|
||||
- Hosted services:
|
||||
- ActionCache
|
||||
- Execute
|
||||
- ContentAddressableStorage
|
||||
- ByteStream
|
||||
|
||||
authorization:
|
||||
method: none
|
||||
|
||||
monitoring:
|
||||
enabled: false
|
||||
|
||||
instances:
|
||||
- name: 'default_instance'
|
||||
description: |
|
||||
The unique '' instance.
|
||||
|
||||
storages:
|
||||
- !disk-storage &cas-storage
|
||||
path: !expand-path $HOME/cas
|
||||
|
||||
schedulers:
|
||||
- !memory-scheduler &state-database
|
||||
storage: *cas-storage
|
||||
|
||||
caches:
|
||||
- !lru-action-cache &build-cache
|
||||
storage: *cas-storage
|
||||
max-cached-refs: 256
|
||||
cache-failed-actions: true
|
||||
allow-updates: true
|
||||
|
||||
services:
|
||||
- !action-cache
|
||||
cache: *build-cache
|
||||
|
||||
- !execution
|
||||
storage: *cas-storage
|
||||
action-cache: *build-cache
|
||||
scheduler: *state-database
|
||||
max-execution-timeout: 7200
|
||||
|
||||
- !cas
|
||||
storage: *cas-storage
|
||||
|
||||
- !bytestream
|
||||
storage: *cas-storage
|
||||
|
||||
thread-pool-size: 5000
|
43
images/terraform-buildgrid/variables.tf
Normal file
43
images/terraform-buildgrid/variables.tf
Normal file
@ -0,0 +1,43 @@
|
||||
|
||||
variable "tenancy_ocid" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "user_ocid" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "fingerprint" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "private_oci_key_path" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "compartment_id" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "availability_domain" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "ssh_authorized_keys" {
|
||||
sensitive = true
|
||||
}
|
||||
variable "public_key" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "subnet_id" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "userid" {
|
||||
sensitive = true
|
||||
}
|
Loading…
Reference in New Issue
Block a user