All Projects → Yetics → armkit

Yetics / armkit

Licence: Apache-2.0 license
Define infrastructure resources using programming constructs and provision them using Azure ARM templates

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to armkit

Aws Cf Templates
A cloudonaut.io project. Engineered by widdix.
Stars: ✭ 2,399 (+4698%)
Mutual labels:  infrastructure
Catalyst
Accelerated deep learning R&D
Stars: ✭ 2,804 (+5508%)
Mutual labels:  infrastructure
Magento-2-aws-cluster-terraform
Magento 2 AWS autoscaling cluster with Terraform and Packer or ImageBuilder. Adobe Commerce Cloud alternative. The best ecommerce infrastructure. Drive more sales online. Transparent billing. Developer-friendly. No hidden bottlenecks.
Stars: ✭ 107 (+114%)
Mutual labels:  infrastructure
Linode Cli
The Linode CLI
Stars: ✭ 198 (+296%)
Mutual labels:  infrastructure
Minicron
🕰️ Monitor your cron jobs
Stars: ✭ 2,351 (+4602%)
Mutual labels:  infrastructure
Awesome Digitalocean
A curated list of amazingly awesome DigitalOcean resources inspired by Awesome Sysadmin
Stars: ✭ 236 (+372%)
Mutual labels:  infrastructure
Pentagon
A framework for building repeatable, containerized, cloud-based infrastructure as code with Kubernetes.
Stars: ✭ 183 (+266%)
Mutual labels:  infrastructure
sitecore-azure-devops
Sitecore 8.2u5 DevOps Scripts
Stars: ✭ 15 (-70%)
Mutual labels:  arm-templates
Kontemplate
Extremely simple Kubernetes resource templates | Source has moved to https://git.tazj.in/tree/ops/kontemplate
Stars: ✭ 217 (+334%)
Mutual labels:  infrastructure
Red Team Infrastructure Wiki
Wiki to collect Red Team infrastructure hardening resources
Stars: ✭ 2,981 (+5862%)
Mutual labels:  infrastructure
Temporal
☄️ Temporal is an easy-to-use, enterprise-grade interface into distributed and decentralized storage
Stars: ✭ 202 (+304%)
Mutual labels:  infrastructure
Oci Cli
Command Line Interface for Oracle Cloud Infrastructure
Stars: ✭ 207 (+314%)
Mutual labels:  infrastructure
Rdbox
RDBOX is an advanced IT platform for robotics and IoT developers that highly integrates cloud-native and edge computing technologies.
Stars: ✭ 246 (+392%)
Mutual labels:  infrastructure
Deploykit
A toolkit for creating and managing declarative, self-healing infrastructure.
Stars: ✭ 2,237 (+4374%)
Mutual labels:  infrastructure
nrjmx
Command line tool to connect to a JMX server and retrieve the MBeans it exposes.
Stars: ✭ 28 (-44%)
Mutual labels:  infrastructure
Infra
Infrastructure to set up the public Compiler Explorer instances and compilers
Stars: ✭ 184 (+268%)
Mutual labels:  infrastructure
Keepalived
Keepalived
Stars: ✭ 2,877 (+5654%)
Mutual labels:  infrastructure
infrastructure
Flux based GitOps repository for my home lab infrastructure.
Stars: ✭ 14 (-72%)
Mutual labels:  infrastructure
django-angular2-fullstack-devops
All-in-one django/angular2 seed with cli interface for multi-environment devops on aws using ansible/packer/terraform
Stars: ✭ 54 (+8%)
Mutual labels:  infrastructure
Doctl
The official command line interface for the DigitalOcean API.
Stars: ✭ 2,856 (+5612%)
Mutual labels:  infrastructure

Armkit (Azure Cloud Development Kit)

Badges

Build npm version

Contributing and Feedback

CDK for Azure is an early experimental project and the development folks would love your feedback to help guide the project.

We welcome community contributions and pull requests. See CONTRIBUTING for information on how to set up a development environment and submit code.

Summary

Armkit, Azure Cloud Development Kit (CDK), is an open source software development framework to define cloud Infrastructure as Code (IaC) and provision it through Azure ARM Templates.

It offers a high-level object-oriented abstraction to define Azure resources imperatively using the power of modern programming languages. Using the Armkit library of infrastructure constructs, you can easily encapsulate Azure best practices in your infrastructure definition and share it without worrying about boilerplate logic.

Armkit is available in the following languages:

Background

Developers use the Armkit framework in one of the supported programming languages to define reusable cloud components called constructs, which are composed together into stacks, forming an "Armkit app".

They then use the Armkit CLI to interact with their Armkit app. The CLI allows developers to synthesize artifacts such as Azure ARM Templates, deploy stacks to development Azure accounts and diff against a deployed stack to understand the impact of a code change.

The Armkit Construct Library includes a module for each Azure service with constructs that offer rich APIs that encapsulate the details of how to use Azure. The Armkit Construct Library aims to reduce the complexity and glue-logic required when integrating various Azure services to achieve your goals on Azure.

Armkit packages:

  • @armkit/core - A library that allows users to build Azure applications contructs.
  • armkit-resources - A library for defining Azure resources using programming constructs.
  • armkit-cli - A CLI that allows users to run commands to initialize, import, and synthesize Armkit applications.

Examples

Some sample constructs are in examples. This could look like this:

helloArmkit.ts

import { Construct } from "constructs";
import { App, ArmStack } from "@yetics/armkit-core";
import {
  ContainerGroups,
  ContainerGroupPropertiesOsType,
  MicrosoftContainerInstanceContainerGroupsType,
  MicrosoftContainerInstanceContainerGroupsApiVersion,
} from "./.generated/ContainerInstance-2021-03-01";
import {
  Registries,
  MicrosoftContainerRegistryRegistriesApiVersion,
  MicrosoftContainerRegistryRegistriesType,
  SkuName,
} from "./.generated/ContainerRegistry-2019-05-01";

export class HelloArmkit extends ArmStack {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    new ContainerGroups(this, "MyContainerGroup", {
      name: "azurecdktest",
      location: "westeurope",
      apiVersion:
        MicrosoftContainerInstanceContainerGroupsApiVersion["2021_03_01"],
      type:
        MicrosoftContainerInstanceContainerGroupsType.MICROSOFT_CONTAINER_INSTANCE_CONTAINER_GROUPS,
      properties: {
        containers: [
          {
            name: "ubuntu-server",
            properties: {
              image: "ubuntu:18.04",
              command: ["sleep infinity"],
              resources: {
                requests: {
                  cpu: 1,
                  memoryInGB: 2,
                },
                limits: {
                  cpu: 1,
                  memoryInGB: 2,
                },
              },
            },
          },
        ],
        osType: ContainerGroupPropertiesOsType.LINUX,
      },
    });

    new Registries(this, "azurecdktest", {
      name: "azurecdktest",
      location: "westeurope",
      apiVersion: MicrosoftContainerRegistryRegistriesApiVersion["2019_05_01"],
      type:
        MicrosoftContainerRegistryRegistriesType.MICROSOFT_CONTAINER_REGISTRY_REGISTRIES,
      sku: {
        name: SkuName.BASIC,
      },
      properties: {
        adminUserEnabled: false,
      },
    });
  }
}

const app = new App({ outdir: "cdk.out" });
new HelloArmkit(app, "hello-armkit");
app.synth();

For a detailed walk through, see the Armkit Developer Guide.

Building

Clone the project repository

git clone https://github.com/Yetics/armkit.git

Download dependencies and build node.js

cd armkit/
yarn install
yarn build

Build the examples/basic package:

Go to examples/basic:

cd /examples/basic

Generate the armkit cdk libs:

yarn generate

Translate typescript to node.js:

yarn build

Render ARM template from CDK:

node index.js

Check out the results:

az deployment group create --resource-group <resource-group-name> --template-file @cdk-out/helloarmkit.json

Roadmap

The Armkit Roadmap project board lets developers know about our upcoming features and priorities to help them plan how to best leverage Armkitand identify opportunities to contribute to the project. See ROADMAP for more information and FAQs.

License

Armkit is distributed under the Apache License, Version 2.0.

See LICENSE and NOTICE for more information.

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].