Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(UI) User Interface for installing and managing Postgres clusters #589

Closed
vitabaks opened this issue Feb 28, 2024 · 16 comments
Closed

(UI) User Interface for installing and managing Postgres clusters #589

vitabaks opened this issue Feb 28, 2024 · 16 comments
Assignees
Labels
enhancement Improvement of the current functionality new feature New functionality

Comments

@vitabaks
Copy link
Owner

vitabaks commented Feb 28, 2024

Currently, the process of installing and managing PostgreSQL clusters is conducted through the command line, which can be inconvenient for users who are less familiar with terminal operations. We propose to create a graphical user interface (GUI) that would make the installation and management processes of PostgreSQL clusters more intuitive and accessible.

Objectives:

  1. Simplify the PostgreSQL installation process by providing a graphical installer.
  2. Develop a comprehensive GUI for managing PostgreSQL clusters, including the creation, configuration, and maintenance of clusters.
  3. Integrate the ability to launch Ansible playbooks directly from the GUI to automate routine cluster management operations.
  4. Ensure support for various operating systems, including Windows, Linux, and macOS (perhaps it should be a web interface).

Anticipated Benefits:

  • Improved accessibility and usability for users without deep technical knowledge.
  • Increased efficiency in managing clusters by simplifying routine tasks.
  • Expansion of the project's user base by attracting new users who prefer graphical interfaces.
  • Providing a self-managed alternative to cloud managed databases, which may be particularly relevant for organizations seeking to increase control over their data.

Resource Request:
The implementation of this feature will require resources in the form of fronted and backend developers, testers, as well as PostgreSQL and Ansible specialists to ensure integration and compatibility.

Conclusion:
Introducing a graphical interface for the installation and management of PostgreSQL clusters will significantly improve user experience and make the product accessible to a wider audience. This step could represent a significant enhancement to our project and contribute to its dissemination and popularity.


Consider sponsoring the project via GitHub or Patreon

@vitabaks vitabaks added the new feature New functionality label Feb 28, 2024
@vitabaks vitabaks changed the title TODO: User Interface (UI) for iInstalling and managing Postgres clusters TODO: User Interface (UI) for installing and managing Postgres clusters Feb 28, 2024
@vitabaks vitabaks added the enhancement Improvement of the current functionality label Feb 28, 2024
@vitabaks
Copy link
Owner Author

vitabaks commented Mar 1, 2024

Draft (prototype):

PostgreSQL Cluster Console is a web interface designed initially for deployment and later for the management of PostgreSQL clusters. It is packaged in Docker, allowing it to run on various operating systems, whether on a corporate server or a personal laptop.

This solution includes a service designed to execute a Docker image, which encapsulates the postgresql_cluster project code. Deployment and management tasks for the clusters are conducted using Ansible. This setup means that the service can launch the required playbook (integrated within the postgresql_cluster container) using the ansible-playbook command. It can include necessary tags (--tags option) specific to the task at hand (such as creating only a database or user) and variables (--extra-vars option) that are determined based on user selections within the web interface.

For the design foundation (open to discussion and designer input), we can draw inspiration from the implementation of Google Cloud console. This approach aids in conceptualizing an intuitive and effective user interface.

image
image

As for the installation interface, we can look to Aiven for PostgreSQL as a model. In this setup, users can choose to deploy their cluster among five cloud providers: "Google Cloud", "AWS", "Azure", "DigitalOcean", and "Hetzner Cloud" (see related PR: #464).

image

Example: https://www.youtube.com/watch?v=tJfQMubaspg

In this configuration, users define the deployment region, server type, database disk size, and other parameters. To offer a list of regions, server types, and potentially approximate costs, integration with the APIs of cloud providers is necessary to fetch this data. This information will be converted into appropriate variables (details to be outlined during implementation) and passed to the ansible-playbook command via the --extra-vars option.

An additional deployment method, named "Your Own Machines" is designed for deploying the cluster onto pre-existing servers (in another cloud service or your own data center). Users will input their server details, including IP addresses and login credentials (password or private SSH key) for authorization. This information will be used to prepare an inventory file, which is then passed to the ansible-playbook command to execute the playbooks on the specified servers.

@vitabaks
Copy link
Owner Author

vitabaks commented Mar 1, 2024

сс @ThomasSanson

@vitabaks vitabaks added the help wanted Extra attention is needed label Mar 3, 2024
@riker1
Copy link

riker1 commented Mar 14, 2024

Would it be possible to integrate pgAdmin? I'm not crazy about docker instances but could be persuaded otherwise if the Google version is better.

@vitabaks
Copy link
Owner Author

vitabaks commented Mar 14, 2024

Would it be possible to integrate pgAdmin?

I'm not a fan of pgAdmin, but I think it will be possible to think about adding a simple SQL editor (e.q. pgweb) to the UI interface (in one of the future versions) when elements for managing database clusters are added.

In the first implementation, this will primarily be an interface for installing clusters.

@vitabaks vitabaks added in progress and removed help wanted Extra attention is needed labels Apr 24, 2024
@vitabaks vitabaks self-assigned this Apr 24, 2024
@rcknr
Copy link
Contributor

rcknr commented May 1, 2024

I recently found Ivory which seems to match with many of the listed requirements. Given the maturity of the project it makes sense to consider it an option for including in the project.

@vitabaks
Copy link
Owner Author

vitabaks commented May 1, 2024

@rcknr Thanks. I'll take a look at this.
We will most likely write our solution from scratch. I have already started drafting the user interface.

@rcknr
Copy link
Contributor

rcknr commented May 2, 2024

So I just had a look and I have to say that Ivory seems to be exactly what was missing for me to have an overview of the cluster's operations. You have patronictl functionality and a summary of what's going on on the server right now.
To be clear regarding requirements Ivory is designed only for monitoring existing clusters.

@vitabaks
Copy link
Owner Author

vitabaks commented May 2, 2024

We will have something more, we plan to make a (free) analog to cloud managed databases - multi-cloud PostgreSQL Service platform, which includes deployment, management, monitoring, etc.

@vitabaks vitabaks changed the title TODO: User Interface (UI) for installing and managing Postgres clusters (UI) User Interface for installing and managing Postgres clusters May 5, 2024
@vitabaks
Copy link
Owner Author

Done.

Looking ahead, we are planning to enhance the PostgreSQL Cluster Console with features that will enable you to manage your PostgreSQL clusters directly through the UI. If you’re interested in supporting the continued development of this project, please consider becoming a sponsor.

@rcknr
Copy link
Contributor

rcknr commented Aug 19, 2024

@vitabaks Could you add a screenshot please?

@vitabaks
Copy link
Owner Author

vitabaks commented Aug 19, 2024

image

Example of a cluster page:

Documentation: https://postgresql-cluster.org

@rcknr
Copy link
Contributor

rcknr commented Aug 20, 2024

Thanks! Is it possible to add this console to a deployed cluster?

@vitabaks
Copy link
Owner Author

vitabaks commented Aug 20, 2024

There is no such button in the UI yet, but I think you can add information about your cluster directly to the Console database (table: clusters, servers).

@rcknr
Copy link
Contributor

rcknr commented Aug 21, 2024

Okay, I was able to do that. However, I don't think everything is fully operational because I could not fill out many fields.
It'd be great to have an ability to import existing cluster.

@vitabaks
Copy link
Owner Author

It'd be great to have an ability to import existing cluster.

This is planned for one of the future releases.

@vitabaks
Copy link
Owner Author

Next, add cluster management functionality #754

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improvement of the current functionality new feature New functionality
Projects
None yet
Development

No branches or pull requests

4 participants
@rcknr @riker1 @vitabaks and others