All Projects → fhsinchy → Tent

fhsinchy / Tent

Licence: apache-2.0
Podman (https://podman.io/) based development-only dependency manager for Linux

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Tent

Dockly
Immersive terminal interface for managing docker containers and services
Stars: ✭ 3,034 (+4297.1%)
Mutual labels:  cli, containers
Docker Rpm Builder
Build native RPM packages for Centos/RHEL/Fedora from any Linux distro or even OSX, by leveraging docker capabilities.
Stars: ✭ 366 (+430.43%)
Mutual labels:  redhat, fedora
G
Simple go version manager, gluten-free
Stars: ✭ 307 (+344.93%)
Mutual labels:  cli, dependency-manager
nginx-conf
Nginx configuration
Stars: ✭ 18 (-73.91%)
Mutual labels:  fedora, redhat
Binci
🐳 Containerize your development workflow.
Stars: ✭ 671 (+872.46%)
Mutual labels:  cli, containers
LinuxMirrors
Linux 一键更换国内软件源
Stars: ✭ 623 (+802.9%)
Mutual labels:  fedora, redhat
Ansible Role Apache
Ansible Role - Apache 2.x.
Stars: ✭ 341 (+394.2%)
Mutual labels:  redhat, fedora
Mbt
The most flexible build tool for monorepo
Stars: ✭ 184 (+166.67%)
Mutual labels:  cli, dependency-manager
Ansible Role Security
Ansible Role - Security
Stars: ✭ 398 (+476.81%)
Mutual labels:  redhat, fedora
Bpfd
Framework for running BPF programs with rules on Linux as a daemon. Container aware.
Stars: ✭ 396 (+473.91%)
Mutual labels:  cli, containers
Autodesk-Fusion-360-for-Linux
This is a project, where I give you a way to use Autodesk Fusion 360 on Linux!
Stars: ✭ 810 (+1073.91%)
Mutual labels:  fedora, redhat
Ansible Role Docker
Ansible Role - Docker
Stars: ✭ 845 (+1124.64%)
Mutual labels:  redhat, containers
Popper
Container-native task automation engine.
Stars: ✭ 216 (+213.04%)
Mutual labels:  cli, containers
ansible-role-daemonize
Ansible Role - Daemonize.
Stars: ✭ 14 (-79.71%)
Mutual labels:  fedora, redhat
Netns
Runc hook (OCI compatible) for setting up default bridge networking for containers.
Stars: ✭ 197 (+185.51%)
Mutual labels:  cli, containers
Img
Standalone, daemon-less, unprivileged Dockerfile and OCI compatible container image builder.
Stars: ✭ 3,512 (+4989.86%)
Mutual labels:  cli, containers
Protodep
Collect necessary .proto files (Protocol Buffers IDL) and manage dependencies
Stars: ✭ 167 (+142.03%)
Mutual labels:  cli, dependency-manager
Image Bootstrap
⛅️ Creates (chroots and) bootable virtual machine images; command line tool (Python 3)
Stars: ✭ 178 (+157.97%)
Mutual labels:  cli, fedora
Cinf
Command line tool to view namespaces and cgroups, useful for low-level container prodding
Stars: ✭ 389 (+463.77%)
Mutual labels:  cli, containers
Bane
Custom & better AppArmor profile generator for Docker containers.
Stars: ✭ 902 (+1207.25%)
Mutual labels:  cli, containers

tent GitHub all releases

Tent is a CLI tool for running development dependencies such as MySQL, Mongo, ElasticSearch etc inside pre-configured containers using simple one-liners.

Running containers can be accessed via their exposed ports and can be paired with any other application on your system.

Starting a service such as mysql is as simple as executing tent start mysql and you'll never have to look back at it.

But mysql is not the only available service. A list of all the available services can be found on: services.go

Tent is heavily inspired from tighten/takeout and is an experimental project. Hence, care should be taken if you're using it in a critical environment.

Dependencies

  • Linux
  • Podman Installed
  • Podman System Service Running

If you have Podman installed, you can start the system service as follows:

## starts the podman system service
systemctl --user start podman.socket

## enables the podman system service, so it doesn't close on every reboot
systemctl --user enable podman.socket

## stops the podman system service
systemctl --user stop podman.socket

## disables the podman system service, so it doesn't start on every reboot
systemctl --user disable podman.socket

Tent assumes that you're running the service in non-root mode, hence the --user argument is necessary in the above commands.

Installation

Visit the tent release page and download the tent binary to your computer. Open up your terminal where you've donwloaded the file and execute following commands:

chmod +x ./tent

sudo mv ./tent /usr/local/bin

Now the tent command should be available everywhere in your system.

Build From Source

If you're on a Fedora system, the following command should install the necessary development dependencies.

sudo dnf groupinstall "Development Tools" -y && sudo dnf install golang btrfs-progs-devel gpgme-devel device-mapper-devel -y

And on a Ubuntu system, the following command should install the necessary development dependencies.

sudo apt install build-essential golang-go libbtrfs-dev libgpgme-dev libdevmapper-dev -y

If you're on a different system you, may look for equivalent package on the respective package repositories.

Now build and install the application as follows:

git clone https://github.com/fhsinchy/tent.git ~/tent

cd ~/tent

make install

Usage

The tent binary has following commands:

  • tent start <service name> - starts a container for the given service
  • tent stop <service name> - stops and removes a container for the given service
  • tent list - lists all running containers

Most of the services in tent utilizes volumes for persisting data, so even if you stop a service, it's data will be persisted in a volume for later usage. These volumes can listed by executing podman volume ls and can be managed like any other podman volume.

Start a Service

The generic syntax for the start command is as follows:

tent start <service name>

## starts mysql and prompts you where necessary
tent start mysql

## starts redis and mongo and prompts you where necessary
tent start redis mongo

Start Service with Default Configuration

The --default flag for the start command can be used to skip all the prompts and start a service with default configuration

tent start <service name> --default

## starts mysql with the default configuration
tent start mysql --default

## starts redis and mongo with default configuration
tent start redis mongo --default

Stop a Service

The generic syntax for the stop command is as follows:

tent stop <service name>

## stops mysql and removes the container
## prompts you if multiple containers are found
tent stop mysql

## stops all mysql containers and removes them
tent stop mysql --all

## stops redis and mongo then removes the containers.
## prompts you if multiple containers are found for any of the given services.
tent stop redis mongo

## stops all redis and mongo conainers and then removes them
tent stop redis mongo --all

Stop all Services

The --all flag for the stop command can be used to stop and remove all running tent containers at once

tent stop --all

Running Multiple Versions

Given all the services are running inside containers, you can spin up multiple versions of the same service as long as you're keeping the port different.

Run tent start mysql twice; the first time, use the --default flag, and the second time, put 5.7 as tag and 3307 as host port.

Now, if you run tent list, you'll see both services running at the same time.

+--------------+----------------+---------------+---------------+
| CONTAINER              | Image               | PORTS          |
+--------------+----------------+---------------+---------------+
| tent-mysql-5.7-3307    | docker.io/mysql:5.7 | 3307->3306/tcp |
| tent-mysql-latest-3306 | docker.io/mysql:5.7 | 3306->3306/tcp |
+--------------+----------------+---------------+---------------+

Container Management

Containers started by tent are regular containers with some pre-set configurations. So you can use regular podman commands such as ls, inspect, logs etc on them. Although tent comes with a list command, using the podman commands will result in more informative results. The target of tent is to provide plug and play containers, not to become a full-fledged podman cli.

Todo

Although tent is in a stable state right now, there things that I'll have to do. A tentative list is as follows:

  • [x] Set-up proper versioning
  • [ ] Write Tests (very important)

That's all for now, this list will certainly change as I keep going working on my project.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].