knowhow
v0.0.18
Published
KnowHow is an environment management/workflow tool that can execute tasks on any host.
Downloads
4
Maintainers
Readme
KnowHow
A decentralized Nodejs workflow tool used to manage software on any server.
KnowHow is a tool that can be used to run any task on any cluster of machines virtual or physical. Examples can be as complex as configuring an enterprise weblogic cluster on a specific set of hosts or as simple as updating personal ssh keys. Think of it as a personal Puppet or Chef without the overhead. The only requirement for KnowHow is an ssh login on a host you are using or managing. KnowHow creates an agent that allows you to remotely execute and deliver files. KnowHow and its agents are operated through a simple web interface. The most important benefit of KnowHow is the knowledge is retained and processes are repeatable. Once a workflow is set up it should be repeatable on any environment.
####Documentation >> ####Live Demo >> ####Project homepage >>
##Subprojects
- knowhow-agent manages execution on a single host
- knowhow-server manages over execution of jobs, repositories and workflows
- knowhow-api nodejs api to knowhow server functionality
- knowhow-example-repo examples of jobs and workflows
- knowhow-shell a node api for executing knowhow json jobs
#Key Concepts
####knowhow-agent
A knowhow agent is a simple web application that provides a control interface to execute knowhow jobs. Knowhow-agents run as a specific user on a specific port(default 3000), and are coordinated by the knowhow-server.
####knowhow-server
Knowhow-server, this project, manages agents, jobs, workflows and repositories. It is a web application accessed through the browser http://localhost:3001.
####knowhow-api
Knowhow-api provides a nodejs programming interface to a knowhow server. It supports all functionality available via the knowhow server web GUI, and allows full automation of a knowhow server. It also includes the command tool KHCommand, which allows any api command to be executed from a shell script.
####repository
A collection of json objects, and other dependent files that represent jobs, environments, and workflows. Repositories are currently file based and is a directory with the following top folders: environments, jobs, workflows. Each folder contains the specifc types of objects: jobs for job objects, environments environment json objects, and workflows for workflow objects. The may be other nested folder structures underneath one of the top 3 directories. Eventually there will be database based repositories. See knowhow_example_repo for an example repository structure.
####job
A knowhow job is a json object that represents a task or shell script. Jobs contain a list of shell commands with reponses to specific text if necessary. Jobs also define environment variables that can be referenced through the json object for easier automation. See the knowhow-shell project for how to use knowhow jobs directly from node.
####environment
An environment is a collection of hosts that run knowhow-agents. Environments are referenced by workflow objects to coordinate across different hosts.
####workflow
A workflow is a directive of jobs or tasks that get run against an environment.
Installation
For node users:
npm install -g knowhow
For everyone else there is an RPM that includes a nodejs binary:
sudo rpm -ivh https://github.com/jfelten/knowhow/releases/download/0.0.10/knowhow-0.0.10-1.el6.x86_64.rpm
Getting Started
To start the server execute:
startKHServer
please follow the getting started section here: knowhow-server
To start the agent execute:
startKHAgent --port=<PORT_NUM> default port is 3001 if not supplied
To run a knowhow server directly from a cloned project:
node node_modules/knowhow_server/server.js
To run a knowhow agent directly from a cloned project:
node node_modules/knowhow_agent/agent.js
Open the knowhow server in a browser Ex: http://localhost:3001
Example Repository
The example repository acts as a tutorial. Import this repository to get started. Navigate to Repositories tab and then select the "New Repository" sub tab.