Lynx
Lynx copied to clipboard
🐺 A Fast, Secure and Reliable Terraform Backend, Set up in Minutes.
Lynx
A Fast, Secure and Reliable Terraform Backend, Set up in Minutes.
Lynx is a Fast, Secure and Reliable Terraform Backend. It is built in Elixir with Phoenix framework.
Features:
- Simplified Setup: Easy installation and maintenance for hassle-free usage.
- Team Collaboration: Manage multiple teams and users seamlessly.
- User-Friendly Interface: Enjoy a visually appealing dashboard for intuitive navigation.
- Project Flexibility: Support for multiple projects within each team.
- Environment Management: Create and manage multiple environments per project.
- State Versioning: Keep track of Terraform state versions for better control.
- Rollback Capability: Easily revert to previous states for efficient infrastructure management.
- Terraform Locking Support: The project also supports Terraform locking, ensuring state integrity and preventing concurrent operations that could lead to data corruption
- RESTful Endpoints: for seamless teams, users, projects, environments, and snapshots management.
- Snapshots Support: for both projects and environments to ensure data integrity and provide recovery options at specific points in time.
- Terraform Provider: Automate creation/updates of teams, users, projects, environments and snapshots with terraform.
Upcoming Features:
- OAuth2 Authentication Support: Support for OAuth2 Providers like Azure AD OAuth, Keycloak, Okta ... etc
Docker Deployment
- To run with docker and docker-compose. Make sure you update
server_name
innginx.conf
file.
$ git clone https://github.com/Clivern/Lynx.git app
$ cd app
$ docker-compose up -d
Here is a video demonstration
Ubuntu Deployment
- Install elixir and
PostgreSQL
$ apt-get update
$ apt-get upgrade -y
$ apt-get install -y postgresql \
elixir \
erlang-dev \
make \
build-essential \
erlang-os-mon \
inotify-tools \
erlang-xmerl
- Setup
PostgreSQL
database, username and password
# Create PostgreSQL user with password
$ sudo -u postgres psql -c "CREATE USER lynx WITH PASSWORD 'lynx';"
$ sudo -u postgres psql -c "ALTER USER lynx CREATEDB;"
# Create database
$ sudo -u postgres psql -c "CREATE DATABASE lynx_dev OWNER lynx;"
- Configure Environment Variables: Set up the required environment variables from
.env.example
.
$ mkdir -p /etc/lynx
$ cd /etc/lynx
$ git clone https://github.com/Clivern/Lynx.git app
$ cd /etc/lynx/app
$ cp .env.example .env.local # Adjust the database configs
- Migrate the database
$ make deps
$ make migrate
- Create a systemd service file
/etc/systemd/system/lynx.service
[Unit]
Description=Lynx
[Service]
Type=simple
Environment=HOME=/root
EnvironmentFile=/etc/lynx/app/.env.local
WorkingDirectory=/etc/lynx/app
ExecStart=/usr/bin/mix phx.server
[Install]
WantedBy=multi-user.target
$ systemctl enable lynx.service
$ systemctl start lynx.service
Development
To run postgresql
with docker
or podman
$ docker run -itd \
-e POSTGRES_USER=lynx \
-e POSTGRES_PASSWORD=lynx \
-e POSTGRES_DB=lynx_dev \
-p 5432:5432 \
--name lyx \
postgres:15.2
$ podman run -itd \
-e POSTGRES_USER=lynx \
-e POSTGRES_PASSWORD=lynx \
-e POSTGRES_DB=lynx_dev \
-p 5432:5432 \
--name lyx \
postgres:15.2
# https://github.com/dbcli/pgcli
$ psql -h 127.0.0.1 -U lynx -d lynx_dev -W
Then run lynx
with the following commands
$ cp .env.example .env.local
$ export $(cat .env.local | xargs)
$ make deps
$ make migrate
$ make run
$ make test
API Documentation
To explore the API documentation, copy the content of api.yml
and paste in https://editor.swagger.io/.
Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Lynx
is maintained under the Semantic Versioning guidelines and release process is predictable and business-friendly.
See the Releases section of our GitHub project for changelogs for each release version of Lynx
. It contains summaries of the most noteworthy changes made in each release. Also see the Milestones section for the future roadmap.
Bug tracker
If you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/clivern/lynx/issues
Security Issues
If you discover a security vulnerability within Lynx
, please send an email to [email protected]
Contributing
We are an open source, community-driven project so please feel free to join us. see the contributing guidelines for more details.
License
© 2023, Clivern. Released under MIT License.
Lynx is authored and maintained by @clivern.