Skip to main content

CNC is the first framework for application deployment, a fully distributed and customizable PaaS developer experience, based on docker-compose config files

Project description

cnc logo

CNC

Introduction

cnc is an open-source framework that equips developers with the right tools to deploy applications with precision. Rooted in the principles of Infrastructure as Code (IaC) using terraform, cnc translates high level service definitions into reference architecture based infrastructure across various environments — whether it’s for development, staging, production, or ephemeral environments. For those who have used AWS's Amplify CLI, think of cnc as a broader, adaptable framework that supports your unique deployment needs.

Core Lifecycle Events Managed by cnc:

  • Provision: Uses terraform to create, manage, and dismantle cloud resources, ensuring each environment is crafted to fit its specific purpose.
  • Build: Assembles the necessary deployment artifacts for each environment, from docker containers to static assets for web applications.
  • Deploy: Seamlessly updates infrastructure to deploy new artifacts, such as modifying k8s manifests or updating ECS services.
  • Toolbox: A toolbox is a managed shell against a cnc-managed environment, making it easy to get a REPL or run database migrations, for example

Getting Started with cnc:

  • Experience cnc in just a few minutes: install and see for yourself the power of cnc in under 5 minutes without needing any cloud permissions or incurring any costs.
  • Rapid Deployment: Have your first environment up and running in less than 15 minutes, demonstrating the straightforward power of cnc.

cnc is designed to be a powertool that empowers you to build and manage your infrastructure with the same attention to detail and creativity that you bring to your code. Just like web devs use frameworks to build better products, with cnc, you gain the freedom to implement your vision precisely as intended, making each project not only functional but finely tuned to your standards.

Hello World

Install CNC

Intall cnc from the PyPI Python Package Index. For example, using pip:

pip install cocnc

Save config files

You can make a new directory, nothing but the following 2 files is needed by cnc. Save as cnc.yml:

services:
  app:
    command: "my command"
    x-cnc:
      type: backend
    build:
      context: .
  db:
    x-cnc:
      type: database
      version: 15
    image: postgres

Save as environments.yml:

name: my-first-app
provider: gcp
flavor: run-lite
version: 1

collections:
- name: dev
  region: us-east1
  base_domain: mydevsite.com
  account_id: "foo-bar-123"
  environments:
  - name: dev
    environment_variables:
    - name: FOO
      value: bar

cnc has robust environment configuration options, including support for environment variables from cloud secrets, terraform outputs, or aliasing from other variables. Read more about configuration here.

See CNC in action

All this will do is manipulate text files in your /tmp directory and won't actually touch anything in your code or cloud. It's the best way to get to Aha! quickly before diving in deeper.

# print the terraform we would run, as generated from the 2 ymls above
# we do --no-cleanup here so you can inspect the files yourself in /tmp if you want to.
# You can leave this off to cleanup after the command runs automatically
cnc provision debug --no-cleanup

# look at the generated build script
# you can look at the files referenced, for example the build-functions scripts, by going to the /tmp path in your terminal
cnc build perform dev --debug --no-cleanup

# same for deploy
cnc deploy perform dev --debug --no-cleanup

Add a 2nd environment (e.g. dev2) to the environments.yml and run the commands again, see the power of the framework!

Documentation

Access full documentation and in-depth tutorials at the CNC Documentation.

Community & Support

  • Issues: Report bugs or suggest features via GitHub Issues.
  • Support: For direct support, contact our team at cnc@withcoherence.com.

Contributing

Interested in contributing to CNC? Check out our Developers Getting Started guide for guidelines and project setup instructions.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cocnc-0.2.19.tar.gz (119.1 kB view details)

Uploaded Source

Built Distribution

cocnc-0.2.19-py3-none-any.whl (198.6 kB view details)

Uploaded Python 3

File details

Details for the file cocnc-0.2.19.tar.gz.

File metadata

  • Download URL: cocnc-0.2.19.tar.gz
  • Upload date:
  • Size: 119.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for cocnc-0.2.19.tar.gz
Algorithm Hash digest
SHA256 7dd12117a9aa495b21bf3d3833ea9e5c992af89d64bab4933ee5289fb4b697f4
MD5 7d9e8324bb8415fc563960c336a29bad
BLAKE2b-256 cc6ad65158094d9d34bf94c5cd79e5b2eb043c26b19bf195ef1bace2abb5b3c3

See more details on using hashes here.

File details

Details for the file cocnc-0.2.19-py3-none-any.whl.

File metadata

  • Download URL: cocnc-0.2.19-py3-none-any.whl
  • Upload date:
  • Size: 198.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for cocnc-0.2.19-py3-none-any.whl
Algorithm Hash digest
SHA256 1189da637ad982995d1ea74a288b83e47cd6c2bcf2b24b0a492fd82cd5aeda1d
MD5 448268e54ce81c78297cf5c0526a22e4
BLAKE2b-256 c4be92250d20b4ce2f4cf3b22c7a95a503ca6923cf52aee7b72fa843c0d2a818

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page