Tool for generating Spinnaker application/pipelines and k8s manifests

jarvis

Just A Rather Very Intelligent System

Get

git clone [email protected]:ealebed/jarvis.git

Build

cd jarvis
go install github.com/ealebed/jarvis

or

make install

Build docker image

make image

Use

jarvis -h

Syntax

Use the following syntax to run jarvis commands from your terminal window:

jarvis [command] [subcommand] [flags]

Flags are

flag Description
--config string; path to Spin CLI config file (default $HOME/.spin/config)
--dry-run bool; print output / save generated files without real changing system configuration (default true)
--gate-endpoint string; Gate (API server) endpoint (default "http://localhost:8084")
-h, --help help for selected command
--org string; GitHub source owner organization (default "ealebed")
--version jarvis version

Commands are

command Description
account, acc manage Spinnaker accounts (clusters)
application, app manage Spinnaker application’s lifecycle
help help about any command
manifest manage Kubernetes manifests from remote repository
pipeline, pipe manage Spinnaker pipelines

Account subcommands are

subcommand Description
get returns the specified spinnaker account
list, ls returns list of all spinnaker accounts

Application subcommands are

subcommand Description
delete, del delete the specified application
get returns the specified spinnaker application
list, ls returns list of all spinnaker applications
save, create save/update the provided spinnaker application
save-all, create-all save/update all spinnaker applications from provided GitHub repository

Manifest subcommands are

subcommand Description
delete, del delete yaml manifest(s) for provided application
save, create, generate save/update yaml manifest(s) for provided application
save-all, create-all, generate-all save/update yaml manifest(s) for for all applications from provided GitHub repository

Pipeline subcommands are

subcommand Description
delete, del delete the provided pipeline from the provided spinnaker application
delete-all, prune delete all pipelines in the provided spinnaker application
disable, off disable pipelines in the provided spinnaker application
disable-all disable all pipelines in the provided spinnaker account(cluster)
enable, on enable pipelines in the provided spinnaker application
enable-all enable all pipelines in the provided spinnaker account(cluster)
execute, exec execute the provided pipeline in the provided spinnaker application
execute-all execute all pipelines in the provided spinnaker application or kubernetes cluster
get returns the pipeline with the provided name from the provided spinnaker application
list, ls returns list of all pipelines for the provided spinnaker application
save, create save/update pipeline(s) for the provided spinnaker application
save-all, create-all save/update pipeline(s) for all spinnaker applications from provided GitHub repository

Examples: Common operations

Manage Spinnaker applications

# Create a new (or update existing) Spinnaker application using the definition in configuration.json (from remote GitHub repository).
jarvis application save --name=jarvis-test-application --repo=test-k8s --local=false --dry-run=false

# Create a new (or update existing) Spinnaker application using the definition in configuration.json (from remote GitHub repository and custom branch).
jarvis application save --name=jarvis-test-application --repo=test-k8s --branch=custom --local=false --dry-run=false

# Create a new (or update existing) Spinnaker application using the definition in configuration.json (from local GitHub repository).
jarvis application save --name=jarvis-test-application --dry-run=false

# Create (or update if exist) all Spinnaker applications using the definitions in configuration.json (from remote GitHub repository).
jarvis application save-all --repo=test-k8s --local=false --dry-run=false

# Create (or update if exist) all Spinnaker applications using the definitions in configuration.json (from remote GitHub repository and custom branch).
jarvis application save-all --repo=test-k8s --branch=custom --local=false --dry-run=false

# Create (or update if exist) all Spinnaker applications using the definitions in configuration.json (from local GitHub).
jarvis application save-all --dry-run=false

# List all Spinnaker applications.
jarvis application list

# Retrieve a single Spinnaker application.
jarvis application get --name=jarvis-test-application

# Delete a single Spinnaker application.
jarvis application delete --name=jarvis-test-application --dry-run=false

Manage Kubernetes manifests

# Create a new (or update existing) Kubernetes manifest(s) with custom commit message for provided application using the definitions in configuration.json (from remote GitHub repository).
jarvis manifest save --name=jarvis-test-application --commit-message="Custom message" --repo=test-k8s --local=false --dry-run=false

# Create a new (or update existing) Kubernetes manifest(s) with default commit message for provided application using the definitions in configuration.json (from local GitHub repository).
jarvis manifest save --name=jarvis-test-application --dry-run=false

# Create a new (or update existing) Kubernetes manifests for all applications from configuration.json (from remote GitHub repository and custom branch).
jarvis manifest save-all --repo=test-k8s --branch=custom --local=false --dry-run=false

# Delete Kubernetes manifest(s) for provided application using the definitions in configuration.json (from remote GitHub repository).
jarvis manifest delete --name=jarvis-test-application --repo=test-k8s --local=false --dry-run=false

Manage Spinnaker pipelines

# Create a new (or update existing) Spinnaker pipeline(s) using the definition in configuration.json (from remote GitHub repository).
jarvis pipeline save --name=jarvis-test-application --repo=test-k8s --local=false --dry-run=false

# Create a new (or update existing) Spinnaker pipeline(s) using the definition in configuration.json (from local GitHub repository).
jarvis pipeline save --name=jarvis-test-application --dry-run=false

# Create a new (or update existing) pipeline(s) for all Spinnaker applications using the definition in configuration.json (from remote GitHub repository).
jarvis pipeline save-all --repo=test-k8s --local=false --dry-run=false

# Create a new (or update existing) pipeline(s) for all Spinnaker applications using the definition in configuration.json (from local GitHub repository).
jarvis pipeline save-all --dry-run=false

# List all pipelines in the provided Spinnaker application.
jarvis pipeline list

# Retrieve a single pipeline from the provided Spinnaker application.
jarvis pipeline get --name=jarvis-test-application --pipeline="deploy-gke1-dc(production)"

# Start a single pipeline execution from the provided Spinnaker application.
jarvis pipeline execute --name=jarvis-test-application --pipeline="deploy-gke1-dc(production)" --dry-run=false

# Start all pipelines execution from the provided Spinnaker application.
jarvis pipeline execute-all --name=jarvis-test-application --dry-run=false

# Start all pipelines execution in all Spinnaker applications from the provided Kubernetes cluster.
jarvis pipeline execute-all --account=gke1 --dry-run=false

# Enable pipelines in the provided Spinnaker application.
jarvis pipeline enable --name=jarvis-test-application --dry-run=false

# Enable all pipelines in the provided Spinnaker account(Kubernetes cluster).
jarvis pipeline enable-all --account=sgp1 --dry-run=false

# Disable pipelines in the provided Spinnaker application.
jarvis pipeline disable --name=jarvis-test-application --dry-run=false

# Disable all pipelines in the provided Spinnaker account(Kubernetes cluster).
jarvis pipeline disable-all --account=sgp1 --dry-run=false

# Delete a single pipeline from the provided Spinnaker application.
jarvis pipeline delete --name=jarvis-test-application --pipeline="deploy-gke1-dc(production)" --dry-run=false

# Delete all pipelines from the provided Spinnaker application.
jarvis pipeline delete-all --name=jarvis-test-application --dry-run=false

Sample definition application(s) properties are in configuration.json file repository

Owner
Yevhen Lebid
I am infrastructure administrator, focused on high availability, devops technique and monitoring.
Yevhen Lebid
Similar Resources

Substation is a cloud native toolkit for building modular ingest, transform, and load (ITL) data pipelines

Substation Substation is a cloud native data pipeline toolkit. What is Substation? Substation is a modular ingest, transform, load (ITL) application f

Dec 30, 2022

Build powerful pipelines in any programming language.

Build powerful pipelines in any programming language.

Gaia is an open source automation platform which makes it easy and fun to build powerful pipelines in any programming language. Based on HashiCorp's g

Jan 3, 2023

🏯 Monitor your (gitlab/github) CI/CD pipelines via command line interface with fortress

🏯 Monitor your (gitlab/github) CI/CD pipelines via command line interface with fortress

__ _ / _| | | | |_ ___ _ __| |_ _ __ ___ ___ ___ | _/ _ \| '__| __| '__/ _ \/ __/ _

Mar 31, 2022

Drone plugin to skip pipelines based on changed files

drone-skip-pipeline Drone plugin to skip pipelines based on changed files. Build Build the binary with the following command: export GOOS=linux export

Aug 7, 2022

🤖 DroneCI plugin to skip pipelines based on files changes

DroneCI Skip Pipeline 🤖 DroneCI plugin to skip pipelines based on files changes Motivations This DroneCI plugin enables you skip (or short-circuit) a

Dec 14, 2022

Just a playground with some interesting concepts like pipelines aka middleware, handleFuncs, request validations etc. Check it out.

Pipeline a.k.a middleware in Go Just a playground with some interesting concepts like pipelines aka middleware, handleFuncs, request validations etc.

Dec 9, 2021

A sample for okteto pipelines with terraform

Okteto Pipeline with Terraform (PubSub) This sample covers a producer/consumer a

Dec 23, 2021

Rotate is a tool for rotating out AWS Auto-Scaling Groups within a k8s cluster

k8s-r8 rotate is a tool for rotating out AWS Auto-Scaling Groups within a k8s cluster. It was developed to make upgrading AMIs as a one command experi

Mar 27, 2022

kubectl plugin for generating nginx-ingress compatible basic-auth secrets on kubernetes clusters

kubectl-htpasswd kubectl plugin for easily generating hashed basic auth secrets. Supported hash algorithms bcrypt Examples Create the secret on the cl

Jul 17, 2022
K8s-ingress-health-bot - A K8s Ingress Health Bot is a lightweight application to check the health of the ingress endpoints for a given kubernetes namespace.

k8s-ingress-health-bot A K8s Ingress Health Bot is a lightweight application to check the health of qualified ingress endpoints for a given kubernetes

Jan 2, 2022
A tool that allows you to manage Kubernetes manifests for your services in a Git repository

kuberpult Readme for users About Kuberpult is a tool that allows you to manage Kubernetes manifests for your services in a Git repository and manage t

Dec 16, 2022
Write controller-runtime based k8s controllers that read/write to git, not k8s

Git Backed Controller The basic idea is to write a k8s controller that runs against git and not k8s apiserver. So the controller is reading and writin

Dec 10, 2021
K8s-cinder-csi-plugin - K8s Pod Use Openstack Cinder Volume

k8s-cinder-csi-plugin K8s Pod Use Openstack Cinder Volume openstack volume list

Jul 18, 2022
K8s-go-structs - All k8s API Go structs

k8s-api go types Why? Its nice to have it all in a single package. . |-- pkg |

Jul 17, 2022
A fluxcd controller for managing remote manifests with kubecfg

kubecfg-operator A fluxcd controller for managing remote manifests with kubecfg This project is in very early stages proof-of-concept. Only latest ima

Nov 1, 2022
This is for managing Slack App Manifests, it is no use if you are not developing an App for Slack.

Terraform Provider Slack App This is for managing Slack App Manifests, it is no use if you are not developing an App for Slack. Requirements Terraform

May 23, 2022
GitOops is a tool to help attackers and defenders identify lateral movement and privilege escalation paths in GitHub organizations by abusing CI/CD pipelines and GitHub access controls.
GitOops is a tool to help attackers and defenders identify lateral movement and privilege escalation paths in GitHub organizations by abusing CI/CD pipelines and GitHub access controls.

GitOops is a tool to help attackers and defenders identify lateral movement and privilege escalation paths in GitHub organizations by abusing CI/CD pipelines and GitHub access controls.

Jan 2, 2023
Topology-tester - Application to easily test microservice topologies and distributed tracing including K8s and Istio

Topology Tester The Topology Tester app allows you to quickly build a dynamic mi

Jan 14, 2022
tfa is a 2fa cli tool that aims to help you to generate 2fa code on CI/CD pipelines.

tfa tfa is 2fa cli tool that aim to help you to generate 2fa code on CI/CD pipelines. You can provide secret with stdin or flag. Install brew install

Nov 27, 2022