mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
Update dev tooling and related docs
This commit is contained in:
parent
49822bff31
commit
f7eaeedbfc
21 changed files with 506 additions and 463 deletions
86
README.md
86
README.md
|
|
@ -14,19 +14,23 @@ As of version 2.0.0, all providers other than the dummy one are now separate gem
|
|||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
|
||||
VMPooler is available as a gem. To use the gem run `gem install vmpooler` or add it to your Gemfile and install via bundler. You will also need to install any needed providers in the same manner.
|
||||
The recommended method of installation is via the Helm chart located in [puppetlabs/vmpooler-deployment](https://github.com/puppetlabs/vmpooler-deployment). That repository also provides Docker images of VMPooler.
|
||||
|
||||
### Dependencies
|
||||
|
||||
#### Redis
|
||||
|
||||
VMPooler requires a [Redis](http://redis.io/) server. This is the data store used for VMPooler's inventory and queuing services.
|
||||
|
||||
### Configuration
|
||||
#### Other gems
|
||||
|
||||
VMPooler itself and the dev environment talked about below require additional Ruby gems to function. You can update the currently required ones for VMPooler by running `./update-gemfile-lock.sh`. The gems for the dev environment can be updated by running `./docker/update-gemfile-lock.sh`. These scripts will utilize the container on the FROM line of the Dockerfile to update the Gemfile.lock in the root of this repo and in the docker folder, respectively.
|
||||
|
||||
## Configuration
|
||||
|
||||
Configuration for VMPooler may be provided via environment variables, or a configuration file.
|
||||
|
||||
#### Note on JRuby 9.2.11.x
|
||||
### Note on JRuby 9.2.11.x
|
||||
|
||||
We have found when running VMPooler on JRuby 9.2.11.x we occasionally encounter a stack overflow error that causes the pool\_manager application component to fail and stop doing work. To address this issue on JRuby 9.2.11.x we recommend setting the JRuby option `invokedynamic.yield=false`. To set this with JRuby 9.2.11.1 you can specify the environment variable `JRUBY_OPTS` with the value `-Xinvokedynamic.yield=false`.
|
||||
|
||||
|
|
@ -71,39 +75,7 @@ The following YAML configuration sets up two pools, `debian-7-i386` and `debian-
|
|||
|
||||
See the provided YAML configuration example, [vmpooler.yaml.example](vmpooler.yaml.example), for additional configuration options and parameters or for supporting multiple providers.
|
||||
|
||||
### Running via Docker
|
||||
|
||||
A [Dockerfile](/docker/Dockerfile) is included in this repository to allow running VMPooler inside a Docker container. A configuration file can be used via volume mapping, and specifying the destination as the configuration file via environment variables, or the application can be configured with environment variables alone. The Dockerfile provides an entrypoint so you may choose whether to run API, or manager services. The default behavior will run both. To build and run:
|
||||
|
||||
```bash
|
||||
docker build -t vmpooler . && docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
|
||||
```
|
||||
|
||||
To run only the API and dashboard:
|
||||
|
||||
```bash
|
||||
docker run -p 80:4567 -it vmpooler api
|
||||
```
|
||||
|
||||
To run only the manager component:
|
||||
|
||||
```bash
|
||||
docker run -it vmpooler manager
|
||||
```
|
||||
|
||||
### docker-compose
|
||||
|
||||
A docker-compose file is provided to support running VMPooler easily via docker-compose. This is useful for development because your local code is used to build the gem used in the docker-compose environment.
|
||||
|
||||
```bash
|
||||
docker-compose -f docker/docker-compose.yml up
|
||||
```
|
||||
|
||||
### Running Docker inside Vagrant
|
||||
|
||||
A Vagrantfile is included in this repository. Please see [vagrant instructions](docs/vagrant.md) for details.
|
||||
|
||||
## API and Dashboard
|
||||
## Components
|
||||
|
||||
VMPooler provides an API and web front-end (dashboard) on port `:4567`. See the provided YAML configuration example, [vmpooler.yaml.example](vmpooler.yaml.example), to specify an alternative port to listen on.
|
||||
|
||||
|
|
@ -129,13 +101,45 @@ A dashboard is provided to offer real-time statistics and historical graphs. It
|
|||
|
||||
- [vagrant-vmpooler](https://github.com/briancain/vagrant-vmpooler): Use Vagrant to create and manage your VMPooler instances.
|
||||
|
||||
## Development and further documentation
|
||||
## Development
|
||||
|
||||
### docker-compose
|
||||
|
||||
A docker-compose file is provided to support running VMPooler and associated tools locally. This is useful for development because your local code is used to build the gem used in the docker-compose environment. The compose environment also pulls in the latest providers via git. Details of this setup are stored in the `docker/` folder.
|
||||
|
||||
```bash
|
||||
docker-compose -f docker/docker-compose.yml build && \
|
||||
docker-compose -f docker/docker-compose.yml up
|
||||
```
|
||||
|
||||
### Running docker-compose inside Vagrant
|
||||
|
||||
A Vagrantfile is included in this repository so as to provide a reproducible development environment.
|
||||
|
||||
```bash
|
||||
vagrant up
|
||||
vagrant ssh
|
||||
cd /vagrant
|
||||
docker-compose -f docker/docker-compose.yml build && \
|
||||
docker-compose -f docker/docker-compose.yml up
|
||||
```
|
||||
|
||||
The Vagrant environment also contains multiple rubies you can utilize for spec test and the like. You can see a list of the pre-installed ones when you log in as part of the message of the day.
|
||||
|
||||
For more information about setting up a development instance of VMPooler or other subjects, see the [docs/](docs) directory.
|
||||
|
||||
### Build status
|
||||
### URLs when using docker-compose
|
||||
|
||||
[](https://github.com/puppetlabs/vmpooler/actions/workflows/testing.yml)
|
||||
| Endpoint | URL |
|
||||
|-------------------|-----------------------------------------------------------------------|
|
||||
| Redis Commander | [http://localhost:8079](http://localhost:8079) |
|
||||
| API | [http://localhost:8080/api/v1]([http://localhost:8080/api/v1) |
|
||||
| Dashboard | [http://localhost:8080/dashboard/](http://localhost:8080/dashboard/) |
|
||||
| Metrics (API) | [http://localhost:8080/prometheus]([http://localhost:8080/prometheus) |
|
||||
| Metrics (Manager) | [http://localhost:8081/prometheus]([http://localhost:8081/prometheus) |
|
||||
| Jaeger | [http://localhost:8082](http://localhost:8082) |
|
||||
|
||||
Additionally, the Redis instance can be accessed at `localhost:6379`.
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue