All Projects → itsksaurabh → Doact

itsksaurabh / Doact

Licence: apache-2.0
A Terraform module for hosting your own runner for CI/CD on Digital Ocean to run jobs in your GitHub Actions workflows. 🚀

Projects that are alternatives of or similar to Doact

K8s Digitalocean Terraform
Deploy latest Kubernetes cluster on DigitalOcean using Terraform
Stars: ✭ 33 (-21.43%)
Mutual labels:  digitalocean, terraform, hcl, devops
Typhoon
Minimal and free Kubernetes distribution with Terraform
Stars: ✭ 1,397 (+3226.19%)
Mutual labels:  digitalocean, terraform, hcl
Terraform Aws Cloudtrail Cloudwatch Alarms
Terraform module for creating alarms for tracking important changes and occurrences from cloudtrail.
Stars: ✭ 170 (+304.76%)
Mutual labels:  terraform, hcl, devops
Ebs bckup
Stars: ✭ 32 (-23.81%)
Mutual labels:  terraform, hcl, devops
Terraform
Terraform automation for Cloud
Stars: ✭ 121 (+188.1%)
Mutual labels:  terraform, hcl, devops
Terraform Aws Eks
Deploy a full EKS cluster with Terraform
Stars: ✭ 125 (+197.62%)
Mutual labels:  terraform, hcl, devops
Tfsec
Security scanner for your Terraform code
Stars: ✭ 3,622 (+8523.81%)
Mutual labels:  terraform, ci, digitalocean
Intro To Terraform
Sample code for the blog post series "A Comprehensive Guide to Terraform."
Stars: ✭ 550 (+1209.52%)
Mutual labels:  terraform, hcl, devops
Terratag
Terratag is a CLI tool that enables users of Terraform to automatically create and maintain tags across their entire set of AWS, Azure, and GCP resources
Stars: ✭ 385 (+816.67%)
Mutual labels:  terraform, hcl, devops
Kubernetes Digitalocean Terraform
📋 🌊 🌎 Setup a simple Kubernetes cluster in Digital Ocean using Terraform
Stars: ✭ 324 (+671.43%)
Mutual labels:  digitalocean, terraform, hcl
Config Lint
Command line tool to validate configuration files
Stars: ✭ 118 (+180.95%)
Mutual labels:  terraform, hcl, devops
Terraform Aws Secure Baseline
Terraform module to set up your AWS account with the secure baseline configuration based on CIS Amazon Web Services Foundations and AWS Foundational Security Best Practices.
Stars: ✭ 596 (+1319.05%)
Mutual labels:  terraform, hcl, devops
Terraform Multienv
A template for maintaining a multiple environments infrastructure with Terraform. This template includes a CI/CD process, that applies the infrastructure in an AWS account.
Stars: ✭ 107 (+154.76%)
Mutual labels:  terraform, devops, ci
Vishwakarma
Terraform modules to create a self-hosting Kubernetes cluster on opinionated Cloud Platform.
Stars: ✭ 127 (+202.38%)
Mutual labels:  terraform, hcl, devops
Ecs Pipeline
☁️ 🐳 ⚡️ 🚀 Create environment and deployment pipelines to ECS Fargate with CodePipeline, CodeBuild and Github using Terraform
Stars: ✭ 85 (+102.38%)
Mutual labels:  terraform, hcl, devops
Terraform Eks
Terraform for AWS EKS
Stars: ✭ 82 (+95.24%)
Mutual labels:  terraform, hcl, devops
Terraform Modules
Reusable Terraform modules
Stars: ✭ 63 (+50%)
Mutual labels:  terraform, hcl, devops
Terraform Aws Couchbase
Reusable infrastructure modules for running Couchbase on AWS
Stars: ✭ 73 (+73.81%)
Mutual labels:  terraform, hcl, devops
Terraform Aws Gitlab Runner
Terraform module for AWS GitLab runners on ec2 (spot) instances
Stars: ✭ 292 (+595.24%)
Mutual labels:  terraform, hcl, ci
Guide
Kubernetes clusters for the hobbyist.
Stars: ✭ 5,150 (+12161.9%)
Mutual labels:  digitalocean, terraform, devops

Go

What is Doact? 🚀

Doact is a Terraform module to automate the deployment and hosting process of your own runners on Digital Ocean cloud to run jobs in your GitHub Actions workflows. It makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.

Why Doact? 🧐

Doact sets up a self-hosted runner on the cloud. Self-hosted runners offer more control of hardware, operating system, and software tools than GitHub-hosted runners provide. With self-hosted runners, you can choose to create a custom hardware configuration with more processing power or memory to run larger jobs, install software available on your local network, and choose an operating system not offered by GitHub-hosted runners. You can read more about self-hosted runner here.

Note: Currently doact supports machines with Linux X64 architecture.

Prerequisites ✅

Terraform

Ensure you have Terraform installed. A handy tool to manage your Terraform version is tfenv.

On macOS it is simple to install tfenv using brew.

$ brew install tfenv

Next install a Terraform version.

$ tfenv install <version>

Note: doact is written to work with Terraform 0.11.x - it will not run on 0.12.x

DigitalOcean Personal Access Token

This module uses DigitalOcean (DO) provider is used to interact with the resources supported by DigitalOcean. The provider needs to be configured with the proper credentials before it can be used. Check Terraform DigitalOcean Provider for more detailed usage and examples. To generate a personal access token, follow this tutorial.

Note: Access tokens require repo scope for private repos and public_repo scope for public repos.

Github personal access token

The module requires Github personal access token for the admin access to the repository and to configure the runner. You can create a personal access token by following this tutorial.

SSH Public Key

Your SSH Pulic key is required to give you full access to the Droplet on which your runner is hosted. Droplets are virtual machines that run on top of virtualized hardware. You can generate your own SSH Public Key by following this tutorial.

Usage ⚙️

Update the values inside terraform.tfvars file for better experience.

Run the following commands to use the module:

To initialize Terraform:

$ terraform init

To inspect the resources that will be created:

$ terraform plan

To deploy the runner :

$ terraform apply

To delete the runner :

$ terraform destroy

Note: The above command will use the default values defined inside variables.tf file. You can change the values if required.

Optional

The ssh-keys module has been added with Docat v2.x.x to make it easier to deploy your SSH Key on Digital Ocean. Just Paste your SSH Public Key inside the file user_id_rsa.pub and peroform the above actions.

Terraform Inputs

Name Description Type Default Required
do_token Your DigitalOcean API token. string n/a yes
github_access_token Personal access token for the admin access to the repository string n/a yes
github_repo_name Name of the target repository. string n/a yes
github_username Github Username. string n/a yes
node_size Selected size for your provisioned Droplets. string "1gb" no
region Selected data center. string "blr1" no
runner_node_count Number of runner Droplets to provision. string "1" no
ubuntu Default Ubuntu LTS image. string "ubuntu-18-04-x64" no
ssh_key_ids A list of SSH IDs or fingerprints to enable in the format ["12345", "123456"] list n/a yes

Terraform Outputs

Name Description
runner-id DO instace ID for the created Runner
runner-ip IP address to access the Runner
runner-name Name of the Runner

Contributing 🍻

I welcome pull requests, bug fixes and issue reports. Before proposing a change, please discuss your change by raising an issue.

Maintainer 😎

Kumar Saurabh

Buy Me A Coffee

License

Apache License 2.0 © Kumar Saurabh

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].