GithubHelp home page GithubHelp logo

taitounited / taito-cli Goto Github PK

View Code? Open in Web Editor NEW
13.0 11.0 1.0 15.72 MB

An extensible toolkit for DevOps and NoOps

Home Page: https://taitounited.github.io/taito-cli/

License: MIT License

Shell 90.39% JavaScript 9.42% CSS 0.18%
taito-cli multicloud cloud-native devops kubernetes serverless

taito-cli's Introduction

Taito CLI

Taito is a Finnish word meaning "ability" or "skill".

Taito command line interface is an extensible toolkit for developers and DevOps personnel. It defines a standard set of commands that can be used in any project no matter the technology or infrastructure. Thus, developers and DevOps personnel may always run the same familiar set of commands from project to project without thinking about the underlying infrastructure. This is made possible by shipping all required tools as a Docker container image, implementing the commands with plugins, and defining project specific settings in a configuration file. Continuous integration scripts also become more reusable and maintainable as they are based on the same set of commands and settings.

To get started see the website. For a command reference, see help.txt or run taito -h. For troubleshooting, see trouble.txt or run taito trouble.

Container images

Taito CLI container repository provides the following stable image optimized for local command line usage:

  • cli: Taito CLI image to be used locally on command line. This is the default Docker image for Taito CLI. It includes tools for all major cloud providers.

Stable images optimized for CI/CD:

  • ci: CI/CD image for building and testing.
  • ci-dockerd: CI/CD image for building and testing. Includes also dockerd that is required in some CI/CD environments.
  • ci-deploy: CI/CD image for deployment without any cloud provider specific tools.
  • ci-aws: CI/CD image for deployment on Amazon Web Services.
  • ci-azure: CI/CD image for deployment on Microsoft Azure.
  • ci-gcp: CI/CD image for deployment on Google Cloud Platform.
  • ci-do: CI/CD image for deployment on Digital Ocean.
  • ci-openshift: CI/CD image for deployment on OpenShift.
  • ci-all: CI/CD image that includes tools for all cloud providers.

TIP: If your CI/CD pulls the whole Docker image on each build, optimize the image pull by setting up caching on your CI/CD, or by using your own Docker registry as a mirror. You can also create a custom Docker image that includes only the tools you actually need.

TIP: Read this if you cannot use Taito CLI on your CI/CD or you want to avoid pulling a Taito CLI docker container image on each build.

Special purpose Docker images:

  • all: Taito CLI image that contains all tools required either locally or on CI/CD. It is used for running the Taito CLI integration test suite.

Alternative versions for each image:

  • *-canary: Canary version includes all the latest implemented features.
  • *-dev: Development version includes the latest changes made during Taito CLI development.
  • *-N.N.N: Docker image tagged with Taito CLI version number in case you need an older version of Taito CLI. Note that it is recommended to always use the latest stable Taito CLI release available instead of a tagged version.

Contributing

TODO: Something about Taito CLI vs external extensions.

Development

Website development

For website development, see the www/README.md.

Taito CLI development

Install Taito CLI normally using the installation instructions. You can run a taito command in development mode by using the -d, --dev flag (e.g. taito -d status). In the development mode your local taito-cli directory is mounted in the Taito CLI container. If you are working with your own fork, update your PATH or taito symlink so that it points to your forked version of the Taito CLI.

How to implement a command:

  1. Fork taito-cli repository.
  2. Add a new bash(.sh), python(.py) or javascript(.js) file to one of the plugin folders and make it executable with chmod +x FILE. Try to implement one of the Taito CLI prefined commands if it suits your purpose (see the help.txt).
  3. Add unit tests for your command. You can execute a single unit test by executing the corresponding bats file. All unit tests are run automatically on git push and during CI build, but you can also run them manually with the taito unit command.
  4. Make sure that the plugin description written in plugin README.md is up-to-date.
  5. If you implemented some new plugin specific commands, add the command descriptions to the help.txt file of your plugin. Also, add the plugin specific commands to autocomplete.sh and descriptions.sh files located in root of plugins directory.
  6. Add the plugin to plugins.md file if it is not there already.
  7. Make a pull request.

For detailed instructions, see plugin development instructions on the docs and on the tutorial.

License

Taito CLI is licensed under the MIT license and maintained by Taito United.

taito-cli's People

Contributors

janim avatar keskiju avatar temzasse avatar villeheikkila avatar wuppious avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

jonesus

taito-cli's Issues

Move commands to separate extensions

Leave only basic, link and template plugins in taito-cli. Move all other commands to separate extensions: taito-cli-project, taito-cli-misc.

NOTE: When ci mode is enabled, the extension probably should be downloaded to the project workspace instead of "home directory".

Taito-cli editor plugins

Closing this issue as a duplicate. Atom plugin already exists and there is a separate issue for VS Code: #80

Advanced CI/CD workflows

  • Manual review before deployment if certain files have been changed since the last deployment: CI/CD scripts, Kubernetes / Helm / Terraform templates.
  • Send a direct message to the developer who broke the build.

For example: Jenkins for workflows + Google Container Builder for building. Or just Jenkins by itself on non-gcloud environments.

Install Jenkins on Kubernetes using Helm and/or Terraform: https://github.com/mcuadros/terraform-provider-helm, https://hub.kubeapps.com/charts/stable/jenkins

Bare zone example

Setup Kubernetes, Postgres and object storage clusters, and Jenkins, on virtual machines or bare-metal servers using e.g. the following technologies:

  • Ansible
  • Terraform
  • Kubeadm
  • Helm
  • PAF

NOTE: We already have an working Postgres cluster using PAF.

Google Cloud zone example hardening

Taito-cli integration test tuning

  • Execute all tests against locally installed minikube and postgres.
  • Execute tests using docker hub or travis instead of google container builder?

Related to #3

Backup data to another provider

Especially required for storage buckets as data is really gone if the whole bucket is deleted. Versioning doesn't help in that case, I think.

Code Climate or SonarQube?

Full-stack-template already includes Code Climate support, but it is run only locally, because Code Climate docker image is HUGE!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.