{"id":13408288,"url":"https://andrewchilds.github.io/overcast/","last_synced_at":"2025-03-14T13:30:44.530Z","repository":{"id":15515029,"uuid":"18249312","full_name":"andrewchilds/overcast","owner":"andrewchilds","description":"Orchestrate VMs from your terminal","archived":false,"fork":false,"pushed_at":"2023-10-25T19:25:05.000Z","size":5047,"stargazers_count":479,"open_issues_count":9,"forks_count":36,"subscribers_count":20,"default_branch":"main","last_synced_at":"2024-10-13T21:12:16.442Z","etag":null,"topics":["digitalocean","orchestration","virtualbox","vm"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewchilds.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2014-03-29T19:48:35.000Z","updated_at":"2024-10-01T06:16:20.000Z","dependencies_parsed_at":"2022-09-16T04:52:20.414Z","dependency_job_id":"fee8f047-5191-4fa0-900b-073b817d7756","html_url":"https://github.com/andrewchilds/overcast","commit_stats":{"total_commits":378,"total_committers":6,"mean_commits":63.0,"dds":0.02910052910052907,"last_synced_commit":"82f441d920166f0e6f2174cc1aa9214eb4f2d69e"},"previous_names":[],"tags_count":108,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchilds%2Fovercast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchilds%2Fovercast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchilds%2Fovercast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewchilds%2Fovercast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewchilds","download_url":"https://codeload.github.com/andrewchilds/overcast/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243307481,"owners_count":20270262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digitalocean","orchestration","virtualbox","vm"],"created_at":"2024-07-30T20:00:51.896Z","updated_at":"2025-03-14T13:30:40.925Z","avatar_url":"https://github.com/andrewchilds.png","language":"JavaScript","funding_links":[],"categories":["Software"],"sub_categories":["Deployment Automation"],"readme":"# ![Overcast Logo](http://i.imgur.com/eCBl2NI.png)\n\nOvercast is a tiny command line program designed to make it easy to spin up, configure and manage clusters of machines across multiple cloud providers.\n\n## Devops made simple.\n\nCreate, reboot and destroy instances on DigitalOcean or locally using Virtualbox.\n\n```sh\n# Spin up a new Ubuntu 20.04 instance on DigitalOcean:\n$ overcast digitalocean create db-01\n\n# Perform a full system upgrade and then install Redis:\n$ overcast run db-01 install/core install/redis\n```\n\nRun multiple commands or multiple scripts on any of your instances over SSH. Commands can be run sequentially or in parallel. Run and test your deployment scripts across different providers.\n\n```sh\n# Create a LAMP stack using bundled install scripts:\n$ overcast run lamp-01 install/core install/apache install/mysql install/php\n\n# Run your own scripts using relative or absolute paths:\n$ overcast run app-cluster ./my-app/my-install-script /path/to/another-script\n\n# Run sequences of commands and scripts across multiple machines in parallel:\n$ overcast run app-* ./script.sh uptime \"free -m\" \"df -h\" --parallel\n```\n\nQuickly SSH in to any instance by name.\n\n```sh\n$ overcast ssh app-01\n```\n\nPush and pull files between your local machine and any of your instances.\n\n```sh\n$ overcast push app-01 nginx/myapp.conf /etc/nginx/sites-enabled/myapp.conf\n$ overcast pull app-01 /var/log/syslog ./my-local-syslog-copy\n```\n\nOvercast is a thin layer on top of your SSH client. It doesn't install or leave anything on the servers you communicate with, so Overcast itself has no real attack surface.\n\nA library of [scripts](https://github.com/andrewchilds/overcast/tree/master/scripts) and [recipes](https://github.com/andrewchilds/overcast/tree/master/recipes) are bundled to make it easy to deploy a number of common software stacks and applications.\n\n## Installation (OS X/Linux)\n\n1. Install [Node.js](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager) if not already installed.\n\n2. Install Overcast using npm.\n\n    ```sh\n    $ npm -g install overcast\n    ```\n\n3. You can now use Overcast from any directory. Running any overcast command from anywhere will create the `~/.overcast` config directory if it doesn't already exist. Add your API keys to `~/.overcast/variables.json` to use their respective commands, either manually or using the `var` command:\n\n    ```sh\n    $ overcast var set DIGITALOCEAN_API_TOKEN abc123\n    ```\n\n4. To make working with Overcast easier, you can add bash tab completion by adding the following to your `.bash_profile`:\n\n    ```sh\n    # Overcast Tab completion\n    _overcast_completions() {\n      local cur=${COMP_WORDS[COMP_CWORD]}\n      COMPREPLY=($(compgen -W \"`overcast completions`\" -- \"$cur\"))\n      return 0\n    }\n    complete -F _overcast_completions overcast\n    ```\n\n## Installation (Windows)\n\nUsing Overcast on Windows is possible, but **unsupported**.\n\n## Uninstallation\n\nSince Overcast is just a wrapper around SSH, there is nothing on your remote machines to uninstall. To uninstall Overcast from your local machine:\n\n```sh\n# To remove the Overcast package:\n$ npm -g remove overcast\n# Optionally delete your Overcast SSH keys and configuration files:\n$ rm -rf ~/.overcast\n```\n\n## Configuration\n\nOvercast looks for an `.overcast` directory in the current directory, a parent directory, or `~/.overcast`, in that order. This means you can have multiple configurations and treat your server infrastructure like source code.\n\nThe command `overcast init` will create a new configuration in the current directory. The config directory looks like this:\n\n```sh\n/.overcast\n  /keys             # SSH keys, can be your own or auto-generated by overcast\n    overcast.key\n    overcast.key.pub\n  clusters.json     # Cluster/instance definitions (see example.clusters.json)\n  variables.json    # API keys, etc (see example.variables.json)\n```\n\n## Design Goals\n\nThere are many server management frameworks out there already, but they generally involve a complex server-client implementation, a steep learning curve, or a giant, monolithic conceptual framework that requires taking a course to understand.\n\nI wanted something that had little to no learning curve, that did only what you asked it to do on the remote machines and nothing more, that just focused on multi-server provisioning and communication and leaves problems like process/state management and system monitoring to tools designed specifically for those problems.\n\n## Example App Recipes\n\n  - [Discourse](https://github.com/andrewchilds/overcast/blob/master/recipes/discourse)\n  - [Ubuntu 14.04 LAMP server](https://github.com/andrewchilds/overcast/blob/master/recipes/lamp-server)\n  - [Overcast Charts](https://github.com/andrewchilds/overcast-charts)\n\n## Command Reference\n\n### overcast aliases\n\n```\nUsage:\n  overcast aliases\n\nDescription:\n  Return a list of bash aliases for SSHing to your instances.\n\n  To use, add this to your .bash_profile:\n    test -f $HOME/.overcast_aliases \u0026\u0026 source $HOME/.overcast_aliases\n\n  And then create the .overcast_aliases file:\n    overcast aliases \u003e $HOME/.overcast_aliases\n\n  Or to automatically refresh aliases in every new terminal window\n  (which will add a couple hundred milliseconds to your startup time),\n  add this to your .bash_profile:\n    overcast aliases \u003e $HOME/.overcast_aliases\n    source $HOME/.overcast_aliases\n```\n\n### overcast cluster count\n\n```\nUsage:\n  overcast cluster count [name]\n\nDescription:\n  Return the number of instances in a cluster.\n\nExamples:\n  $ overcast cluster count db\n  \u003e 0\n  $ overcast instance create db.01 --cluster db\n  \u003e ...\n  $ overcast cluster count db\n  \u003e 1\n```\n\n### overcast cluster add\n\n```\nUsage:\n  overcast cluster add [name]\n\nDescription:\n  Adds a new cluster.\n\nExamples:\n  $ overcast cluster add db\n```\n\n### overcast cluster rename\n\n```\nUsage:\n  overcast cluster rename [name] [new-name]\n\nDescription:\n  Renames a cluster.\n\nExamples:\n  $ overcast cluster rename app-cluster app-cluster-renamed\n```\n\n### overcast cluster remove\n\n```\nUsage:\n  overcast cluster remove [name]\n\nDescription:\n  Removes a cluster from the index. If the cluster has any instances\n  attached to it, they will be moved to an \"orphaned\" cluster.\n\nExamples:\n  $ overcast cluster remove db\n```\n\n### overcast completions\n\n```\nUsage:\n  overcast completions\n\nDescription:\n  Return an array of commands, cluster names, and instance names for use\n  in bash tab completion.\n\n  To enable tab completion in bash, add this to your .bash_profile:\n\n  _overcast_completions() {\n    local cur=${COMP_WORDS[COMP_CWORD]}\n    COMPREPLY=($(compgen -W \"`overcast completions`\" -- \"$cur\"))\n    return 0\n  }\n  complete -F _overcast_completions overcast\n```\n\n### overcast digitalocean boot\n\n```\nUsage:\n  overcast digitalocean boot [name]\n\nDescription:\n  Boot up an instance if powered off, otherwise do nothing.\n```\n\n### overcast digitalocean create\n\n```\nUsage:\n  overcast digitalocean create [name] [options...]\n\nDescription:\n  Creates a new instance on DigitalOcean.\n\nOptions:                  Defaults:\n  --cluster CLUSTER       default\n  --ssh-port PORT         22\n  --ssh-key PATH          overcast.key\n  --ssh-pub-key PATH      overcast.key.pub\n  --region REGION\n  --image IMAGE\n  --size SIZE\n  --backups               false\n  --monitoring            false\n  --private-networking    false\n  --vpc-uuid\n  --with-droplet-agent    false\n\nExamples:\n  # Match using slugs:\n  $ overcast digitalocean create vm-01 --size 2gb --region sfo1\n\n  # Match using IDs or names:\n  $ overcast digitalocean create vm-02 --region \"London 1\" --image 6374128\n```\n\n### overcast digitalocean destroy\n\n```\nUsage:\n  overcast digitalocean destroy [name] [options...]\n\nDescription:\n  Destroys a DigitalOcean droplet and removes it from your account.\n  Using --force overrides the confirm dialog.\n\nOptions:     Defaults:\n  --force    false\n\nExamples:\n  $ overcast digitalocean destroy vm-01\n```\n\n### overcast digitalocean images\n\n```\nUsage:\n  overcast digitalocean images\n\nDescription:\n  List all images, including snapshots.\n```\n\n### overcast digitalocean instances\n\n```\nUsage:\n  overcast digitalocean instances\n\nDescription:\n  List all instances in your account.\n```\n\n### overcast digitalocean reboot\n\n```\nUsage:\n  overcast digitalocean reboot [name]\n\nDescription:\n  Reboot an instance using the provider API.\n```\n\n### overcast digitalocean regions\n\n```\nUsage:\n  overcast digitalocean regions\n\nDescription:\n  List all available regions.\n```\n\n### overcast digitalocean rebuild\n\n```\nUsage:\n  overcast digitalocean rebuild [name] [image]\n\nDescription:\n  Rebuilds an existing instance on DigitalOcean, preserving the IP address.\n  [image] can be image ID, name or slug.\n\nExamples:\n  # Rebuild an instance using a readymade image:\n  $ overcast digitalocean rebuild vm-01 ubuntu-14-04-x64\n\n  # Rebuild an instance using a snapshot:\n  $ overcast digitalocean rebuild vm-01 \"vm-01 backup\"\n```\n\n### overcast digitalocean resize\n\n```\nUsage:\n  overcast digitalocean resize [name] [size] [options...]\n\nDescription:\n  Shutdown, resize, and reboot a DigitalOcean instance.\n  [size] must be a valid size slug.\n  If the --skip-boot flag is used, the instance will stay powered off.\n\nOptions:         Defaults:\n  --skip-boot    false\n\nExamples:\n  # Resize an instance to 2gb:\n  $ overcast digitalocean resize vm-01 2gb\n```\n\n### overcast digitalocean snapshot\n\n```\nUsage:\n  overcast digitalocean snapshot [name] [snapshot-name]\n\nDescription:\n  Creates a named snapshot of a droplet. This will reboot the instance.\n\nExamples:\n  $ overcast digitalocean snapshot vm-01 vm-01-snapshot\n```\n\n### overcast digitalocean snapshots\n\n```\nUsage:\n  overcast digitalocean snapshots\n\nDescription:\n  List all available snapshots in your account.\n```\n\n### overcast digitalocean shutdown\n\n```\nUsage:\n  overcast digitalocean shutdown [name]\n\nDescription:\n  Shut down an instance using the provider API.\n```\n\n### overcast digitalocean sizes\n\n```\nUsage:\n  overcast digitalocean sizes\n\nDescription:\n  List all available instance sizes.\n```\n\n### overcast digitalocean sync\n\n```\nUsage:\n  overcast digitalocean sync [name]\n\nDescription:\n  Fetch and update instance metadata.\n```\n\n### overcast expose\n\n```\nUsage:\n  overcast expose [instance|cluster|all] [port...] [options]\n\nDescription:\n  Reset the exposed ports on the instance or cluster using iptables.\n  This will fail if you don't include the current SSH port.\n  Specifying --allowlist will restrict all ports to the specified address(es).\n  These can be individual IPs or CIDR ranges, such as \"192.168.0.0/24\".\n\n  Expects an Ubuntu server, untested on other distributions.\n\nOptions:\n  --user USERNAME\n  --password PASSWORD\n  --allowlist \"IP|RANGE\"\n  --allowlist-PORT \"IP|RANGE\"\n\nExamples:\n  Allow SSH, HTTP and HTTPS connections from anywhere:\n  $ overcast expose app 22 80 443\n\n  Allow SSH from anywhere, only allow Redis connections from 1.2.3.4:\n  $ overcast expose redis 22 6379 --allowlist-6379 \"1.2.3.4\"\n\n  Only allow SSH and MySQL connections from 1.2.3.4 or from 5.6.7.xxx:\n  $ overcast expose mysql 22 3306 --allowlist \"1.2.3.4 5.6.7.0/24\"\n```\n\n### overcast exposed\n\n```\nUsage:\n  overcast exposed [instance|cluster|all]\n\nDescription:\n  List the exposed ports on the instance or cluster.\n  Expects an Ubuntu server, untested on other distributions.\n\nOptions:\n  --user USERNAME\n  --password PASSWORD\n  --machine-readable, --mr\n```\n\n### overcast help\n\n```\nUsage:\n  overcast help\n\nDescription:\n  Provides help about Overcast and specific commands.\n```\n\n### overcast info\n\n```\nUsage:\n  overcast info\n  overcast info [name]\n\nDescription:\n  Prints the complete .overcast/clusters.json file.\n  Optionally display only instances matching [name].\n```\n\n### overcast init\n\n```\nUsage:\n  overcast init\n\nDescription:\n  Create an .overcast config directory in the current working directory.\n  No action taken if one already exists.\n```\n\n### overcast instance get\n\n```\nUsage:\n  overcast instance get [instance|cluster|all] [attr...] [options...]\n\nDescription:\n  Returns the attribute(s) for the instance or cluster, one per line,\n  or space-delimited using the --single-line option.\n  Deeply nested arrays and objects are supported.\n  \"origin\" is a compound attribute that returns user@ip:ssh-port.\n\nOptions:               Defaults:\n  --single-line, -s    false\n\nExamples:\n  $ overcast instance get app-01 origin\n  root@1.2.3.4:22\n\n  $ overcast instance get app-cluster ip\n  127.0.0.1\n  127.0.0.2\n  127.0.0.3\n\n  $ overcast instance get app-01 digitalocean.image.id\n  103510828\n```\n\n### overcast instance add\n\n```\nUsage:\n  overcast instance add [name] [ip] [options...]\n\nDescription:\n  Adds an existing instance to a cluster.\n\nOptions:                 Defaults:\n  --cluster CLUSTER      default\n  --ssh-port PORT        22\n  --ssh-key PATH         overcast.key\n  --user USERNAME        root\n  --password PASSWORD\n\nExamples:\n  $ overcast instance add app.01 127.0.0.1 --cluster app \\\n      --ssh-port 22222 --ssh-key $HOME/.ssh/id_rsa\n```\n\n### overcast instance list\n\n```\nUsage:\n  overcast instance list [cluster...]\n\nDescription:\n  Returns all instance names, one per line.\n  Optionally limit to one or more clusters.\n\nExamples:\n  $ overcast instance list\n  $ overcast instance list app-cluster db-cluster\n```\n\n### overcast instance remove\n\n```\nUsage:\n  overcast instance remove [name]\n\nDescription:\n  Removes an instance from the index.\n  The server itself is not affected by this action.\n\nExamples:\n  $ overcast instance remove app-01\n```\n\n### overcast instance update\n\n```\nUsage:\n  overcast instance update [instance|cluster|all] [options...]\n\nDescription:\n  Update any instance property. Specifying --cluster will move the instance\n  to that cluster. Specifying --name will rename the instance.\n\nOptions:\n  --name NAME\n  --cluster CLUSTER\n  --ip IP\n  --ssh-port PORT\n  --ssh-key PATH\n  --user USERNAME\n  --password PASSWORD\n\nExamples:\n  # Update the user and ssh-key of an instance:\n  $ overcast instance update app.01 --user myuser --ssh-key /path/to/key\n\n  # Update ssh-port of a cluster:\n  $ overcast instance update app-cluster --ssh-port 22222\n```\n\n### overcast list\n\n```\nUsage:\n  overcast list\n\nDescription:\n  List your cluster and instance definitions.\n```\n\n### overcast ping\n\n```\nUsage:\n  overcast ping [instance|cluster|all] [options]\n\nDescription:\n  Display the average ping time for an instance or cluster.\n\nOptions:             Defaults:\n  --count N, -c N    3\n\nExamples:\n  $ overcast ping app-01\n  $ overcast ping db --count 5\n```\n\n### overcast port\n\n```\nUsage:\n  overcast port [instance|cluster|all] [port]\n\nDescription:\n  Change the SSH port for an instance or a cluster. This command fails\n  if the new port has not been previously opened by iptables.\n  See also the \"expose\" and \"exposed\" commands.\n\nExamples:\n  # Expose only necessary ports:\n  $ overcast expose vm-01 22 55522 80 443\n\n  # Update SSH port from 22 to 55522:\n  $ overcast port vm-01 55522\n\n  # Close port 22:\n  $ overcast expose vm-01 55522 80 443\n```\n\n### overcast pull\n\n```\nUsage:\n  overcast pull [instance|cluster|all] [source] [dest] [options...]\n\nDescription:\n  Pull a file or directory from an instance or cluster using scp by default,\n  or using rsync if the --rsync flag is used. Source is absolute or relative\n  to the home directory. Destination can be absolute or relative to the\n  .overcast/files directory. Any reference to {instance} in the destination\n  will be replaced with the instance name.\n\nOptions:                 Defaults:\n  --rsync                false\n  --user USERNAME\n  --password PASSWORD\n\nExamples:\n  Assuming instances \"app.01\" and \"app.02\", this will expand to:\n    - .overcast/files/app.01.bashrc\n    - .overcast/files/app.02.bashrc\n  $ overcast pull app .bashrc {instance}.bashrc\n```\n\n### overcast push\n\n```\nUsage:\n  overcast push [instance|cluster|all] [source] [dest] [options...]\n\nDescription:\n  Push a file or directory to an instance or cluster using scp by default,\n  or rsync if the --rsync flag is used. Source can be absolute or relative\n  to the .overcast/files directory. Destination can be absolute or relative\n  to the home directory. Any reference to {instance} in the source will be\n  replaced with the instance name. The --exclude flag only works with rsync.\n\nOptions:                         Defaults:\n  --rsync                        false\n  --user USERNAME\n  --password PASSWORD\n  --exclude FILE_OR_DIRECTORY\n\nExamples:\n  Assuming instances \"app.01\" and \"app.02\", this will expand to:\n    - .overcast/files/app.01.bashrc\n    - .overcast/files/app.02.bashrc\n  $ overcast push app {instance}.bashrc .bashrc\n```\n\n### overcast run\n\n```\nUsage:\n  overcast run [instance|cluster|all] [command|file...]\n\nDescription:\n  Execute commands or script files on an instance or cluster over SSH.\n  Commands will execute sequentially unless the --parallel flag is used.\n  An error will stop execution unless the --continueOnError flag is used.\n  Script files can be either absolute or relative path.\n\nOptions:                         Defaults:\n  --env \"KEY=VAL KEY='1 2 3'\"\n  --user USERNAME\n  --password PASSWORD\n  --ssh-key PATH\n  --ssh-args ARGS\n  --continueOnError              false\n  --machine-readable, --mr       false\n  --parallel, -p                 false\n  --shell-command \"COMMAND\"      bash -s\n  --only-once                    false\n\nExamples:\n  # Run arbirary commands and files in sequence across all instances:\n  $ overcast run all uptime \"free -m\" \"df -h\" /path/to/my/script\n\n  # Setting environment variables:\n  $ overcast run app --env \"foo='bar bar' testing=123\" env\n\n  # Use machine-readable output (no server prefix):\n  $ overcast run app-01 uptime --mr\n\n  # Run bundled and custom scripts in sequence:\n  $ overcast run db-* install/core install/redis ./my/install/script\n\n  # Pass along arbitrary SSH arguments, for example to force a pseudo-tty:\n  $ overcast run all /my/install/script --ssh-args \"-tt\"\n```\n\n### overcast scriptvar\n\n```\nUsage:\n  overcast scriptvar [instance|cluster|all] [filename] [key] [value]\n\nDescription:\n  Set a named variable in a remote file on an instance or cluster.\n  Expects a shell variable format, for example MY_VAR_NAME=\"my_value\"\n\nOptions:                      Defaults:\n  --user USERNAME\n  --password PASSWORD\n  --continueOnError           false\n  --machine-readable, --mr    false\n  --parallel, -p              false\n\nExamples:\n  $ overcast scriptvar app-01 /path/to/file.sh MY_API_TOKEN abc123\n```\n\n### overcast slack\n\n```\nUsage:\n  overcast slack [message] [options...]\n\nDescription:\n  Sends a message to a Slack channel.\n  Requires a SLACK_WEBHOOK_URL property to be set in variables.json.\n  You can set that with the following command:\n  overcast var set SLACK_WEBHOOK_URL https://foo.slack.com/blah\n\nOptions:                Defaults:\n  --channel NAME        #alerts\n  --icon-emoji EMOJI    :cloud:\n  --icon-url URL\n  --user NAME           Overcast\n  --KEY VALUE\n\nExamples:\n  $ overcast slack \"Deploy completed.\" --icon-emoji \":satelite:\"\n  $ overcast slack \"Server stats\" --channel \"#general\" --cpu \"0.54 0.14 0.09\"\n```\n\n### overcast ssh\n\n```\nUsage:\n  overcast ssh [instance] [options...]\n\nDescription:\n  Opens an interactive SSH connection to an instance.\n\nOptions:\n  --user USERNAME\n  --password PASSWORD\n  --ssh-key PATH\n\nExamples:\n  $ overcast ssh instance-01\n  # To use a personal username and key in variables.json:\n  $ overcast vars set OVERCAST_SSH_USER my-username\n  $ overcast vars set OVERCAST_SSH_KEY /path/to/my.key\n  $ overcast ssh instance-01 # will use the above variables to attempt a connection\n```\n\n### overcast sshkey create\n\n```\nUsage:\n  overcast sshkey create [name]\n\nDescription:\n  Creates a new SSH key in the current .overcast config.\n\nExamples:\n  $ overcast sshkey create myKeyName\n  New SSH key \"myKeyName\" created.\n   - /path/to/.overcast/keys/myKeyName.key\n   - /path/to/.overcast/keys/myKeyName.key.pub\n```\n\n### overcast sshkey delete\n\n```\nUsage:\n  overcast sshkey delete [name]\n\nDescription:\n  Deletes SSH public/private key files from the current .overcast config.\n\nExamples:\n  $ overcast sshkey delete myKeyName\n  SSH key \"myKeyName\" deleted.\n```\n\n### overcast sshkey get\n\n```\nUsage:\n  overcast sshkey get [name] [option]\n\nDescription:\n  Display the requested SSH key data or path from the current .overcast config.\n  Defaults to displaying the public key data if no option found.\n\nOptions:\n  --public-data\n  --private-data\n  --public-path\n  --private-path\n\nExamples:\n  $ overcast sshkey get myKeyName\n  [public key data]\n  $ overcast sshkey get myKeyName --private-data\n  [private key data]\n```\n\n### overcast sshkey list\n\n```\nUsage:\n  overcast sshkey list\n\nDescription:\n  List the found SSH key names in the current .overcast config.\n\nExamples:\n  $ overcast sshkey list\n  myKeyName\n  overcast\n```\n\n### overcast sshkey push\n\n```\nUsage:\n  overcast sshkey push [instance|cluster|all] [name|path] [options...]\n\nDescription:\n  Push a public SSH key to an instance or cluster. Accepts a key name,\n  filename, or full path. This will overwrite the existing authorized_keys\n  file, unless you use --append.\n\nOptions:             Defaults:\n  --user USERNAME\n  --append, -a       false\n\nExamples:\n  # Generate new SSH key pair:\n  $ overcast sshkey create newKey\n\n  # Push public key to instance, update instance config to use private key:\n  $ overcast sshkey push vm-01 newKey\n  $ overcast instance update vm-01 --ssh-key newKey.key\n\n  # Same as above but using key path instead of key name:\n  $ overcast sshkey push vm-02 \"~/.ssh/id_rsa.pub\"\n  $ overcast instance update vm-02 --ssh-key \"~/.ssh/id_rsa\"\n\n  # Push public key to instance using arbitrary user:\n  $ overcast sshkey push vm-03 newKey --user myOtherUser\n\n  # Append public key to authorized_keys instead of overwriting:\n  $ overcast sshkey push vm-04 newKey --append\n```\n\n### overcast tunnel\n\n```\nUsage:\n  overcast tunnel [instance] [local-port((:hostname):remote-port)...]\n\nDescription:\n  Opens an SSH tunnel to the port(s) specified.\n  If only one port is specified, assume the same port for local/remote.\n  If no remote host is specified, assume the remote host itself (127.0.0.1).\n  Multiple tunnels can be opened over a single connection.\n\nOptions:\n  --user USERNAME\n  --password PASSWORD\n  --ssh-key PATH\n\nExamples:\n  # Tunnel local 5984 to remote 5984\n  $ overcast tunnel app-01 5984\n\n  # Tunnel local 8000 to remote 5984, local 8001 to remote 3000\n  $ overcast tunnel app-01 8000:5984 8001:3000\n\n  # Tunnel local 3000 to otherhost.com:4000\n  $ overcast tunnel app-01 3000:otherhost.com:4000\n```\n\n### overcast vars list\n\n```\nUsage:\n  overcast vars list\n\nDescription:\n  List all variables in your current config.\n```\n\n### overcast vars set\n\n```\nUsage:\n  overcast vars set [name] [value]\n\nDescription:\n  Set a variable in your current config.\n\nExamples:\n  $ overcast vars set AWS_KEY myawskey12345\n  $ overcast vars set MY_CUSTOM_VARIABLE_NAME foo\n```\n\n### overcast vars get\n\n```\nUsage:\n  overcast vars get [name]\n\nDescription:\n  Get a variable from your current config.\n\nExamples:\n  $ overcast vars get AWS_KEY\n  \u003e myawskey12345\n\n  $ overcast vars get MY_CUSTOM_VARIABLE_NAME\n  \u003e foo\n```\n\n### overcast vars delete\n\n```\nUsage:\n  overcast vars delete [name]\n\nDescription:\n  Delete a variable from your current config.\n\nExamples:\n  $ overcast vars delete MY_CUSTOM_VARIABLE_NAME\n```\n\n### overcast virtualbox boot\n\n```\nUsage:\n  overcast virtualbox boot [name]\n\nDescription:\n  Boot up a Virtualbox instance.\n```\n\n### overcast virtualbox create\n\n```\nUsage:\n  overcast virtualbox create [name] [options...]\n\nDescription:\n  Creates a new Virtualbox instance.\n\nOptions:                Defaults:\n  --cluster CLUSTER     default\n  --cpus COUNT          1\n  --image NAME          trusty64\n  --ram MB              512\n  --ip ADDRESS          192.168.22.10\n  --ssh-key PATH        overcast.key\n  --ssh-pub-key PATH    overcast.key.pub\n\nExamples:\n  $ overcast virtualbox create vm-01\n  $ overcast virtualbox create vm-02 --ram 1024 --image precise64\n```\n\n### overcast virtualbox destroy\n\n```\nUsage:\n  overcast virtualbox destroy [name] [options...]\n\nDescription:\n  Destroys a Virtualbox instance.\n  Using --force overrides the confirm dialog.\n\nOptions:     Defaults:\n  --force    false\n\nExamples:\n  $ overcast virtualbox destroy vm-01\n```\n\n### overcast virtualbox reboot\n\n```\nUsage:\n  overcast virtualbox reboot [name]\n\nDescription:\n  Reboots a Virtualbox instance.\n```\n\n### overcast virtualbox shutdown\n\n```\nUsage:\n  overcast virtualbox shutdown [name]\n\nDescription:\n  Shut down a Virtualbox instance.\n```\n\n### overcast wait\n\n```\nUsage:\n  overcast wait [seconds]\n\nDescription:\n  Show a progress bar for a specified number of seconds.\n\nExamples:\n  $ overcast wait 30\n```\n\n## Running the Tests\n\n[![Build Status](https://travis-ci.org/andrewchilds/overcast.svg?branch=master)](https://travis-ci.org/andrewchilds/overcast)\n\n```sh\nnpm test\n```\n\n## Upgrading Overcast\n\n```sh\nnpm -g update overcast\n```\n\nConfiguration files are left alone during an upgrade.\n\n## Contributing\n\nContributions are welcome. If you've got an idea for a feature or found a bug, please [open an issue](https://github.com/andrewchilds/overcast/issues). If you're a developer and want to help improve Overcast, [open a pull request](https://github.com/andrewchilds/overcast/pulls) with your changes.\n\n### Hacking Overcast\n\n```sh\ngit clone git@github.com:andrewchilds/overcast.git\ncd overcast\n\n# To use local development version:\nnode overcast [args...]\n\n# To use published version:\novercast [args...]\n```\n\n## Roadmap\n\n- Standardize Recipes\n- Tagging\n- Google Compute Engine support\n- More comprehensive script/recipe library\n- More test coverage\n\n## License\n\nMIT. Copyright \u0026copy; 2014-2022 Andrew Childs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/andrewchilds.github.io%2Fovercast%2F","html_url":"https://awesome.ecosyste.ms/projects/andrewchilds.github.io%2Fovercast%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/andrewchilds.github.io%2Fovercast%2F/lists"}