Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sdslabs/gctl
Gasper on the command line. Deploy and manage applications and databases from the terminal.
https://github.com/sdslabs/gctl
cli cloud database gasper golang server
Last synced: 6 days ago
JSON representation
Gasper on the command line. Deploy and manage applications and databases from the terminal.
- Host: GitHub
- URL: https://github.com/sdslabs/gctl
- Owner: sdslabs
- License: mit
- Created: 2020-06-01T20:00:05.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-22T18:30:25.000Z (over 1 year ago)
- Last Synced: 2024-06-20T03:36:18.208Z (5 months ago)
- Topics: cli, cloud, database, gasper, golang, server
- Language: Go
- Homepage:
- Size: 9.4 MB
- Stars: 20
- Watchers: 10
- Forks: 1
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Overview
`gctl` is [Gasper](https://gasper-docs.netlify.app/) on the command line. It allows user to deploy and manage applications and databases from terminal.
## Installation
> Using this package requires a working Go environment. [See the install instructions for Go](https://golang.org/doc/install).
**gctl** can be installed using following command.
```
$ go get github.com/sdslabs/gctl
```If you get following output, that means gctl is successfully installed.
```
$ gctl
Gasper is an intelligent Platform as a Service (PaaS) used for deploying and managing applications and databases in any cloud topology.
```To execute commands of gctl, run [Gasper](https://gasper-docs.netlify.app/) on your local environment.
## Login
After Gasper is up and successfully running, generate PA Token to login in command-line.
Login to gasper using following command to generate the PA token
```
$ curl -X POST \
http://localhost:3000/auth/login \
-H 'Content-Type: application/json' \
-H 'Authorization-Type: gctlToken' \
-d '{
"email": "[email protected]",
"password": "alphadose"
}'{
"code":200,
"expire":"2020-10-10T21:27:30+05:30","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImVtYWlsIjoiZ21haGFrMUBnbWFpbC5jb20iLCJleHAiOjE2MDIzNTE4MTAsImdjdGxfdXVpZCI6IiIsIm9yaWdfaWF0IjoxNjAyMzQ4MjEwLCJ1c2VybmFtZSI6Im1haGFrIn0.bImaUw9p8K_2QMpMqCAyHQHzX2aukDaRpXTDXmAkAoc"
}
```After getting the PA token, login to gctl using command `gctl login` with flag e for email and t for token. Both of the flags are required.
```
$ gctl login -e [email protected] -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImVtYWlsIjoiZ21haGFrMUBnbWFpbC5jb20iLCJleHAiOjE2MDIzNTE4MTAsImdjdGxfdXVpZCI6IiIsIm9yaWdfaWF0IjoxNjAyMzQ4MjEwLCJ1c2VybmFtZSI6Im1haGFrIn0.bImaUw9p8K_2QMpMqCAyHQHzX2aukDaRpXTDXmAkAoc
Logged in successfully
```Now that we have logged in, we are ready deploy and maintain our applications and databases through command-line.
## Application Deployment
* Create a new application using command `gctl create app`. You can provide required details of the app either through a form in terminal or passing a json file in a flag.
1. Create an app by entering details in a form in the terminal.
```
$ gctl create app
*App Name: test
*Language: php
*Application Password: ****
*Git URL: https://github.com/sdslabs/gasper-sample-php
Is this repo private? [yes/no]: no
Branch:
*Index: index.php
Port: 8000
Does this repo contain Gasperfile.txt? [yes/no]: no
Build Commands:
Run Commands:
Environment Variables(key:value):
App created successfully
Container Id: 32e81f3d244d09da489aec03bea932ae7d96e8e2f5bd9484fc7a21a7e0e967dd Container Port: 44437 Docker Image: docker.io/sdsws/php:3.0 App Url: test.app.sdslabs.co Host Ip: 192.168.43.137 Name Servers: [8.8.8.8 8.8.4.4] Instance Type: application Language: php Owner: [email protected] Ssh Cmd: ssh -p 2222 [email protected] Id: 5f8c8d094374798e04edf3d6
```Fields with * are required.
2. Provide app details in a config json file. Just create the json file with necessary data. Example for required json data to deploy an app can be found in example section of [Gasper Docs](https://gasper-docs.netlify.app/). Run the command `gctl create app {filename} {language}` in the same folder where your config file is and the app will be deployed.
- Fetch details of an app using the command `gctl fetch app -n {name}` where n is flag for the name of the app.
- Fetch details of all the apps using the command `gctl fetch app`.
- Delete an app using the command `gctl delete app {app name}`.
- Rebuild an app using the command `gctl rebuild {app name}`.
- Fetch logs of apps using the command `gctl fetch logs {app name} {number of logs}`. The second argument, which is for number of logs, is optional.
- Update an app using a json config file with command `gctl update app {app name} {filename}`. Config file format should be like the one you provided while creating the app. You can also provide details by filling a form in terminal using the command `gctl update app`.
## Database Deployment
- A new database can be created either by providing details in flags with the command or by filling a terminal form.
Following example shows how to create a mysql database via Gasper using gctl -1. Using flags -
```
$ gctl create db -t mysql -n alphamysql -p alphamysql
Database created
```
Here flag t is for database type, n is for database name and p is for database password.2. Using terminal form -
```
$ gctl create db
*Database Name: alphatmysql
*Application Password: ***********
Database Type: mysql
Database created
```- Fetch details of a database using the command `gctl fetch db -n {name}` where n is flag for the name of the db.
- Fetch details of all the databases using the command `gctl fetch db`.
- Delete a database using the command `gctl delete db {db name}`.
## Instances
Fetch details of all the instances using command `gctl fetch instances`.
## Logout
Logout from a system using the command `gctl logout`. You can also revoke the token from sws or using following curl command.
```
$ curl -X PUT http://localhost:3000/auth/revoke -H 'Content-Type: application/json' -d '{
"email": "[email protected]",
"password": "alphadose"
}'
{"message":"token revoked","success":true}
```## Contributing
We are always open for contributions. If you find any feature missing, or just want to report a bug, feel free to open an issue and/or submit a pull request regarding the same.
For more information on contribution, refer to the [contributing documentation](./CONTRIBUTING.md).
## Contact
If you have a query regarding the product or just want to say hello then feel free to visit
[chat.sdslabs.co](http://chat.sdslabs.co/) or drop a mail at [[email protected]](mailto:[email protected]).Made with :heart: by [SDSLabs](https://github.com/sdslabs)