starlyng-server-management


Namestarlyng-server-management JSON
Version 0.2.2 PyPI version JSON
download
home_pagehttps://github.com/starlyngapp/server-management
SummaryManage servers by rebooting using BCM in case of crashes.
upload_time2024-12-13 02:16:38
maintainerNone
docs_urlNone
authorJustin Sherwood
requires_python>=3.7
licenseMIT
keywords server management bcm reboot
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Starlyng Server Management

This project manages servers by automatically rebooting them using Baseboard Management Controller (BCM) when crashes occur.

## Prerequisites

Before you begin, ensure you have met the following requirements:
* Python 3.x installed
* Basic understanding of Python and virtual environments
* ipmitool installed on the server you will run the script:
  * Ubuntu: `sudo apt-get install ipmitool`
  * macOS: `brew install ipmitool`
* If outside local network, configure port forwarding on your router:
  * Forward BCM port 623 to each server's unique port (62300-62399)
  * Example: Forward port 62300 to 192.168.50.13:623, port 62301 to 192.168.50.14:623
  * Port range must be between 62300-62399

## Running

### Using VSCode/Cursor

**Run the Program:**
   - Go to the Run and Debug view (⌘+Shift+D, or Ctrl+Shift+D on Windows)
   - Select the pre-configured launch configuration from the dropdown menu
   - Click the green play button (F5) or use the "Run" menu to start the program

## Setting Up Your Development Environment

1. Clone the repository:
   ```bash
   git clone https://github.com/starlyngapp/server-management.git
   cd server-management
   ```

2. Setup Environment for VSCode:

* Open the Command Palette (Ctrl+Shift+P)
* Search for the Python: Create Environment command, and select it
* Select Venv
* Select Python interpreter
* Select dependencies to install

3. Install Required Packages

Install all dependencies listed in the dev-requirements.txt file:

```bash
pip install -r dev-requirements.txt
```

## Installation

To install only the package (without dev dependencies):

```bash
pip install starlyng_server_management
```

To install development dependencies (useful for contributing to the project):

```bash
pip install starlyng_server_management[dev]
```

Alternatively, you can install the development dependencies using:

```bash
pip install -r dev-requirements.txt
```

## Create and activate a virtual environment:
   * macOS/Linux:
     ```bash
     python -m venv venv
     source venv/bin/activate
     ```
   * Windows:
     ```bash
     python -m venv venv
     venv\Scripts\activate
     ```

## Releases to PyPi

This should be done through creating a new release in GitHub

## Environment Configuration

To configure server management, you need to set up environment variables. This can be done by creating a `.env` file in the root of the project.

An example `.env` file is provided as `.env.example`. You can copy this file and update the values as needed.

### Steps to Configure Environment Variables

1. **Copy the example environment file:**

```sh
cp .env.example .env
```

2. **Open the `.env` file and update the values:**

```env
# .env
# List of server IPs and ports in the format ip:port, separated by commas
BCM_SERVERS=192.168.1.1:623,192.168.1.2:623

# BCM username
BCM_USER=user

# BCM password
BCM_PASSWORD=secret
```

3. **Save the `.env` file.**

The `BCM_SERVERS` variable should be a comma-separated list of server IP addresses and ports.

## Usage

To run the main function:

```bash
server_management
```

## PyPI

[starlyng-server-management](https://pypi.org/project/starlyng-server-management/)

## Command-line Arguments

You can also override configuration using command-line arguments:

```bash
server_management --bcm_servers "192.168.1.1:623,192.168.1.2:623" --bcm_user "bcm_username" --bcm_pass "secret" --public_ip "false" --server_mgmt_dir "/path/to/server/mgmt/" --ssh_base_hostname "server" --ssh_key_path "/path/to/your/.ssh/id_rsa" --ssh_user "your_ssh_username" --ssh_vlan_id "10" --vast_api_key "vast_api_key"
```

Or locally:

```bash
python main.py --bcm_servers "192.168.1.1:623,192.168.1.2:623" --bcm_user "bcm_username" --bcm_pass "secret" --public_ip "false" --server_mgmt_dir "/path/to/server/mgmt/" --ssh_base_hostname "server" --ssh_key_path "/path/to/your/.ssh/id_rsa" --ssh_user "your_ssh_username" --ssh_vlan_id "10" --vast_api_key "vast_api_key"
```

### Building and Uploading Your Package

1. **Build the package**:

```bash
python setup.py sdist bdist_wheel
```

2. **Upload to PyPI**:

```bash
twine upload dist/*
```

Upload using specific project name referenced in .pypirc

```bash
twine upload dist/* --repository starlyng-server-management
```

## Running Tests

To run tests, execute the following command in your terminal:

```bash
pytest
```

This command will run all tests and report the results. You can also run specific tests by providing the path and filename of the test file.

## Contributing to the Project

Contributions to this project are welcome. Here's how you can contribute:

1. Fork the project.
2. Create your feature branch (git checkout -b feature/YourFeature).
3. Commit your changes (git commit -am 'Add some YourFeature').
4. Push to the branch (git push origin feature/YourFeature).
5. Open a pull request.

## Contact

If you have any questions, please contact:

- GitHub: [@justinsherwood](https://github.com/justinsherwood)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/starlyngapp/server-management",
    "name": "starlyng-server-management",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "server management bcm reboot",
    "author": "Justin Sherwood",
    "author_email": "justin@sherwood.fm",
    "download_url": "https://files.pythonhosted.org/packages/f1/2a/4f4d271a5681d54ffb87911c3d85dca7ace9e2c0c1252a917974c8241c41/starlyng_server_management-0.2.2.tar.gz",
    "platform": null,
    "description": "# Starlyng Server Management\n\nThis project manages servers by automatically rebooting them using Baseboard Management Controller (BCM) when crashes occur.\n\n## Prerequisites\n\nBefore you begin, ensure you have met the following requirements:\n* Python 3.x installed\n* Basic understanding of Python and virtual environments\n* ipmitool installed on the server you will run the script:\n  * Ubuntu: `sudo apt-get install ipmitool`\n  * macOS: `brew install ipmitool`\n* If outside local network, configure port forwarding on your router:\n  * Forward BCM port 623 to each server's unique port (62300-62399)\n  * Example: Forward port 62300 to 192.168.50.13:623, port 62301 to 192.168.50.14:623\n  * Port range must be between 62300-62399\n\n## Running\n\n### Using VSCode/Cursor\n\n**Run the Program:**\n   - Go to the Run and Debug view (\u2318+Shift+D, or Ctrl+Shift+D on Windows)\n   - Select the pre-configured launch configuration from the dropdown menu\n   - Click the green play button (F5) or use the \"Run\" menu to start the program\n\n## Setting Up Your Development Environment\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/starlyngapp/server-management.git\n   cd server-management\n   ```\n\n2. Setup Environment for VSCode:\n\n* Open the Command Palette (Ctrl+Shift+P)\n* Search for the Python: Create Environment command, and select it\n* Select Venv\n* Select Python interpreter\n* Select dependencies to install\n\n3. Install Required Packages\n\nInstall all dependencies listed in the dev-requirements.txt file:\n\n```bash\npip install -r dev-requirements.txt\n```\n\n## Installation\n\nTo install only the package (without dev dependencies):\n\n```bash\npip install starlyng_server_management\n```\n\nTo install development dependencies (useful for contributing to the project):\n\n```bash\npip install starlyng_server_management[dev]\n```\n\nAlternatively, you can install the development dependencies using:\n\n```bash\npip install -r dev-requirements.txt\n```\n\n## Create and activate a virtual environment:\n   * macOS/Linux:\n     ```bash\n     python -m venv venv\n     source venv/bin/activate\n     ```\n   * Windows:\n     ```bash\n     python -m venv venv\n     venv\\Scripts\\activate\n     ```\n\n## Releases to PyPi\n\nThis should be done through creating a new release in GitHub\n\n## Environment Configuration\n\nTo configure server management, you need to set up environment variables. This can be done by creating a `.env` file in the root of the project.\n\nAn example `.env` file is provided as `.env.example`. You can copy this file and update the values as needed.\n\n### Steps to Configure Environment Variables\n\n1. **Copy the example environment file:**\n\n```sh\ncp .env.example .env\n```\n\n2. **Open the `.env` file and update the values:**\n\n```env\n# .env\n# List of server IPs and ports in the format ip:port, separated by commas\nBCM_SERVERS=192.168.1.1:623,192.168.1.2:623\n\n# BCM username\nBCM_USER=user\n\n# BCM password\nBCM_PASSWORD=secret\n```\n\n3. **Save the `.env` file.**\n\nThe `BCM_SERVERS` variable should be a comma-separated list of server IP addresses and ports.\n\n## Usage\n\nTo run the main function:\n\n```bash\nserver_management\n```\n\n## PyPI\n\n[starlyng-server-management](https://pypi.org/project/starlyng-server-management/)\n\n## Command-line Arguments\n\nYou can also override configuration using command-line arguments:\n\n```bash\nserver_management --bcm_servers \"192.168.1.1:623,192.168.1.2:623\" --bcm_user \"bcm_username\" --bcm_pass \"secret\" --public_ip \"false\" --server_mgmt_dir \"/path/to/server/mgmt/\" --ssh_base_hostname \"server\" --ssh_key_path \"/path/to/your/.ssh/id_rsa\" --ssh_user \"your_ssh_username\" --ssh_vlan_id \"10\" --vast_api_key \"vast_api_key\"\n```\n\nOr locally:\n\n```bash\npython main.py --bcm_servers \"192.168.1.1:623,192.168.1.2:623\" --bcm_user \"bcm_username\" --bcm_pass \"secret\" --public_ip \"false\" --server_mgmt_dir \"/path/to/server/mgmt/\" --ssh_base_hostname \"server\" --ssh_key_path \"/path/to/your/.ssh/id_rsa\" --ssh_user \"your_ssh_username\" --ssh_vlan_id \"10\" --vast_api_key \"vast_api_key\"\n```\n\n### Building and Uploading Your Package\n\n1. **Build the package**:\n\n```bash\npython setup.py sdist bdist_wheel\n```\n\n2. **Upload to PyPI**:\n\n```bash\ntwine upload dist/*\n```\n\nUpload using specific project name referenced in .pypirc\n\n```bash\ntwine upload dist/* --repository starlyng-server-management\n```\n\n## Running Tests\n\nTo run tests, execute the following command in your terminal:\n\n```bash\npytest\n```\n\nThis command will run all tests and report the results. You can also run specific tests by providing the path and filename of the test file.\n\n## Contributing to the Project\n\nContributions to this project are welcome. Here's how you can contribute:\n\n1. Fork the project.\n2. Create your feature branch (git checkout -b feature/YourFeature).\n3. Commit your changes (git commit -am 'Add some YourFeature').\n4. Push to the branch (git push origin feature/YourFeature).\n5. Open a pull request.\n\n## Contact\n\nIf you have any questions, please contact:\n\n- GitHub: [@justinsherwood](https://github.com/justinsherwood)\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Manage servers by rebooting using BCM in case of crashes.",
    "version": "0.2.2",
    "project_urls": {
        "Homepage": "https://github.com/starlyngapp/server-management"
    },
    "split_keywords": [
        "server",
        "management",
        "bcm",
        "reboot"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "af19a3df71a5daa1388232086038912b0c7113d62f00fe7e9ead1599f9b8551e",
                "md5": "0f0a7cbf1a031f0b4afce89c0e795714",
                "sha256": "dc37716be64bcb54f5fe8ce4324865ce5572808366378a71767ecaa46ae2ef99"
            },
            "downloads": -1,
            "filename": "starlyng_server_management-0.2.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0f0a7cbf1a031f0b4afce89c0e795714",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 11175,
            "upload_time": "2024-12-13T02:16:36",
            "upload_time_iso_8601": "2024-12-13T02:16:36.037164Z",
            "url": "https://files.pythonhosted.org/packages/af/19/a3df71a5daa1388232086038912b0c7113d62f00fe7e9ead1599f9b8551e/starlyng_server_management-0.2.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f12a4f4d271a5681d54ffb87911c3d85dca7ace9e2c0c1252a917974c8241c41",
                "md5": "365d50c22d0f88683b31610c34294624",
                "sha256": "971bd6089842d1448afbaf4a7de957d65a0ff57b86ba829d2ab9dcfdbae22d09"
            },
            "downloads": -1,
            "filename": "starlyng_server_management-0.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "365d50c22d0f88683b31610c34294624",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 10735,
            "upload_time": "2024-12-13T02:16:38",
            "upload_time_iso_8601": "2024-12-13T02:16:38.140344Z",
            "url": "https://files.pythonhosted.org/packages/f1/2a/4f4d271a5681d54ffb87911c3d85dca7ace9e2c0c1252a917974c8241c41/starlyng_server_management-0.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-13 02:16:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "starlyngapp",
    "github_project": "server-management",
    "github_not_found": true,
    "lcname": "starlyng-server-management"
}
        
Elapsed time: 1.31748s