• Stars
    star
    157
  • Rank 238,399 (Top 5 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MAAS Terraform Ansible

MAASTA (MAAS Terraform Ansible)

GitHub last commit GitHub license GitHub stars GitHub forks GitHub issues

Twitter LinkedIn

Stargaze GitHub Repo stars if you find it useful.

MAASTA is a wrapper to create an Ansible inventory for MAAS instances that are provisioned by Terraform.

This script is used to build an end to end automation DevOps lifecycle.

What is MAAS?

MAAS (Metal as a Service) is a tool to turns real servers into bare-metal cloud. With MAAS, you can automate server provisioning and installing OS remotely on both physical and virtual servers. MAAS.io for more information.

What is Terraform?

Terraform is an infrastructure as code tool which is used originally for provisioning cloud instances on various cloud providers. With Terraform and the aid of the IaC, we can provision machines and cloud instances with codes and without direct human interactions. Terraform is responsible for provisioning systems, usually Immutable ones. Terraform.io for more information.

What is Ansible?

Ansible is another IaC tool but for configuration management. With the aid of Ansible, we can configure a multitude of systems without direct human interactions. Ansible is responsible for configuring existing systems, usually mutable ones. Ansible.com for more information.

Why do we need MAASTA?

Imagine you want to create the DevOps lifecycle for your on-premises infrastructure. In such a scenario, You need the MAAS to interact with your real infrastructure and bring your bare-metal or virtual machines into cloud-like infrastructure. After that, to achieve automation, you need the Terraform tool to interact with the MAAS to provisioning instances and managing them without direct human interactions. When the instances, machines, were provisioned by the Terraform, the time to configuring them comes. For configuring instances, you need the Ansible tool, but how Ansible can discover targets that are provisioned by the Terraform. The answer is MAASTA! MAASTA is used to discover Terraform provisioned MAAS instances and create an Ansible inventory file for them. With the aid of the MAASTA, you can create an end to end automation and integrate MAAS, Terraform, and Ansible together.

See /examples/README.md to get started with brief examples.

Get started guide:

MAASTA accepts two environment variables, MAAS_API_URL and MAAS_API_KEY, and reads the output of the terraform show -json command from stdin. The output of the Terraform is used to find the MAAS machines that are provisioned by the Terraform. MAASTA connects to the MAAS server and reads information (fqdn, hostname, ipaddr) of machines and creates an Ansible inventory for them. The inventory will write into inventory.yaml file.

Installation:

pip install maasta

Usage:

terraform show -json | python -m maasta

How to contribute:

Currently, MAASTA can create inventory for machines that are provisioned with Ubuntu distribution. The script is tested with minimum viable tests and may break in some situations.

Don't hesitate to contribute. In the case of a bug, please file an issue.

Copyright 2021-2022 Saeid Bostandoust [email protected]

More Repositories

1

jenkins-tutorial

The completest Jenkins tutorial, reference, awesome, examples
335
star
2

jenkins-stack-kubernetes

Scripts and manifests to deploy complete Jenkins on Kubernetes
Shell
192
star
3

kubernetes-complete-reference

Kubernetes reference, awesome, cheatsheet, concepts, tools, examples
183
star
4

jenkins-stack-docker

Docker-compose version of jenkins-stack-kubernetes
Dockerfile
150
star
5

vboxpower

VirtualBox Power Driver for MAAS
Python
142
star
6

tondra

Continuous Development on Kubernetes environments with Skaffold
Python
110
star
7

netmeter-exporter

Prometheus exporter for Netmeter
Python
104
star
8

netmeter

Network monitoring tool
Python
98
star
9

zagros

Zagros Open Source Operating System
Assembly
32
star
10

terraform-tutorial

The completest Terraform tutorial, reference, awesome, examples
HCL
31
star
11

devops-bash-scripts

The completest repository of BASH scripts for DevOps engineers
Shell
22
star
12

ssbostan

My Profile Project :)) Readme
13
star
13

prometheus-multi-tenant-proxy-server

Multi-tenant reverse proxy for Prometheus server
Go
12
star
14

xsocket

XSocket is a cross-platform Socket library
C
11
star
15

docker-with-saeid

Applications repository of Docker with Saeid tutorial
Python
10
star
16

docker-logging-awesome

Complete reference for Docker Logging systems and drivers
7
star
17

neptune

Simple API with Flask web framework
Python
6
star
18

vault-secrets-sdk-go

HCP Vault Secrets SDK for Go programming language
Go
5
star
19

librempc

Multiple Precision Arithmetic
C
5
star
20

telescope

Export kubernetes Pod info
Python
4
star
21

anakonda

Anakonda is an API-led container-based task runner
Python
3
star
22

argostart

Helm Chart to deploy the first ArgoCD Application to setup AppOfApps and AppOfAppSets patterns
Smarty
3
star
23

just-for-dockerize

Test your Dockerizing experience
Python
2
star
24

argoapps

Helm Charts to generate ArgoCD Applications for Kubernetes Platform management
2
star
25

kubernetes-opa-library

Kubernetes OPA Gatekeeper policies with a deployable Helm chart
Shell
1
star
26

vault-secrets-sdk-python

HCP Vault Secrets SDK for Python programming language
1
star
27

charts

Helm charts of my github projects
1
star
28

secret-injector

Helm Chart to deploy Sealed-Secrets and External-Secrets resources
1
star
29

london-tube-lines

An API-led container-based project for DevOps in 10 days
HCL
1
star
30

rafay-deploy-pipeline

Deploy Kubernetes workloads with Rafay Kubernetes platform
HCL
1
star
31

devops

DevOps Conference Website
HTML
1
star