Foreman plugin that adds Proxmox compute resource: managing virtual machines and containers using the fog-proxmox module.
It is intended to satisfy this feature.
If you like it and need more features you can contribute or simply support it:
You can support the plugin development via the following methods:
Fog-proxmox | Proxmox | Foreman-fog-proxmox | Foreman | Ruby |
---|---|---|---|---|
<0.6 | <5.3 | <0.6 | <=1.20 | >=2.3 |
=0.6 | <5.4 | =0.6 | =1.21 | >=2.3 |
<=0.8 | <6.0 | >=0.7 | >=1.22 | >=2.3 |
<0.9 | <6.0 | =0.9 | >=1.22 | >=2.3 |
>=0.9 | >=5.4 | >=0.9.1 | >=1.22 | >=2.3 |
>=0.10 | >=5.4 | >=0.9.4 | >=1.22 | >=2.5 |
>=0.11 | >=5.4 | >=0.10 | >=1.22 | >=2.5 |
>=0.12 | >=6.1 | >=0.11 | >=2.0 | >=2.5 |
>=0.14 | >=6.2 | =0.13.0 | >=2.4 | >=2.7 |
>=0.14 | >=6.2 | >=0.13.1 | >=2.3 | >=2.5 |
>=0.14 | >=6.2 | >=0.14.0 | >=2.5 | >=2.5 |
Please see the Foreman manual for complete instructions:
Install from package is the easiest way to install the plugin. Choose the latest release plugins repository. If you don't find it in the same foreman release repository, get it from the nightly
repository.
Then you can install it with the package manager, in Debian/Ubuntu:
sudo apt-get install ruby-foreman-fog-proxmox
and in Fedora/Redhat Linux:
sudo dnf install rubygem-foreman_fog_proxmox
Redhat, CentOS or Fedora users should also setup Selinux to allow foreman and all its plugins to work.
See complete details in plugin installation from gem
Here is a Debian sample:
- Install foreman from OS packages:
sudo apt install -y foreman foreman-pgsql
- Use only foreman user (not root!)
sudo -u foreman ...
- In /usr/share/foreman/bundler.d directory, add Gemfile.local.rb file and add this line in it:
echo "gem 'foreman_fog_proxmox'" | sudo -u foreman tee /usr/share/foreman/bundler.d/Gemfile.local.rb
- Install the gem plugin:
sudo -u foreman /usr/bin/foreman-ruby /usr/bin/bundle install
- Precompile plugin assets:
You need nodejs installed in order to use foreman-assets package.
/usr/bin/foreman-ruby /usr/bin/bundle exec bin/rake plugin:assets:precompile[foreman_fog_proxmox]
- Compile plugin translations if (french) needed :
/usr/bin/foreman-ruby /usr/bin/bundle exec bin/rake plugin:gettext[foreman_fog_proxmox]
- Complete installation of foreman 1.22 with foreman-installer:
sudo apt install -y foreman-installer
sudo foreman-installer
If you don't want to have HTTP 503 errors when apt is trying to install puppetserver, then add this before launching foreman-installer:
echo 'Acquire::http::User-agent "Mozilla/5.0 (Linux)";' | sudo tee /etc/apt/apt.conf.d/96useragent
See complete details in plugin installation from gem
Then you can check plugin installation after login into your new foreman server seeing the about foreman page:
- You need a Proxmox VE 5.4+ server running.
- You need ruby >= 2.5. You can install it with asdf-vm.
- You also need nodejs in your dev machine to run webpack-dev-server. You can install it with asdf-vm.
- Fork this github repo.
- Clone it on your local machine
- Install foreman v1.22+ on your machine:
git clone https://github.com/theforeman/foreman -b develop
- Create a Gemfile.local.rb file in foreman/bundler.d/
- Add this line:
gem 'foreman_fog_proxmox', :path => '../../theforeman/foreman_fog_proxmox'
gem 'fog-proxmox', :path => '../../fog/fog-proxmox' # optional if you need to modify fog-proxmox code too
gem 'ruby-debug-ide' # dev
gem 'debase' # dev
gem 'solargraph' # dev
gem 'simplecov' # test
- In foreman directory, install dependencies:
gem install bundler
# prerequisites postgresql-XX-client library on OS (XX=major release installed in OS)
bundle config set without 'libvirt ovirt mysql2'
bundle config build.pg --with-pg-config=/usr/pgsql-XX/bin/pg_config
bundle install
npm install
- Configure foreman settings:
cp config/settings.yaml.test config/settings.yaml
add these lines to config/settings.yml:
:webpack_dev_server: true
- SQLite is no more default rails dev or test database, instead add:
DATABASE_URL=nulldb://nohost
- (Optional) test and dev with postgresql database:
cp config/model.mappings.example config/model.mappings
cp config/database.yml.example config/database.yml
add these lines to each environment in config/database.yml:
username: foreman
password: foreman
cp config/ignored_environments.yml.sample config/ignored_environments.yml
docker run --name foreman-db -v foreman_data:/var/lib/postgresql/data -e POSTGRES_DB=foreman -e POSTGRES_USER=foreman -e POSTGRES_PASSWORD=foreman -p 5432:5432 -d postgres
bundle exec bin/rake db:migrate
# reboot if settings.NAME error in schema
bundle exec bin/rake db:seed assets:precompile locale:pack webpack:compile
- You can reset admin password if needed:
bundle exec bin/rake permissions:reset
- You should write tests and you can execute those specific to this plugin:
first, create database foreman-test
with psql commands:
docker exec -it foreman-db psql -U foreman
foreman=# create database "foreman-test";
then add test schema and seeds:
RAILS_ENV=test bundle exec bin/rake db:migrate
# reboot if error: "ActiveRecord::RecordNotFound: Couldn't find Setting with [WHERE "settings"."name" = $1]"
RAILS_ENV=test bundle exec bin/rake db:seed
Finally you can test all:
export DISABLE_SPRING=true
bundle exec bin/rake test:foreman_fog_proxmox
or just one:
export DISABLE_SPRING=true
bundle exec bin/rake test TEST=../foreman_fog_proxmox/test/functional/compute_resources_controller_test.rb DATABASE_URL=nulldb://nohost
- Check code syntax with rubocop and foreman rules:
bundle exec bin/rake foreman_fog_proxmox:rubocop
- See deface overrides result:
bundle exec bin/rake deface:get_result['hosts/_compute_detail']
- In foreman directory, after you modify foreman_fog_proxmox specific assets (proxmox.js, etc) you have to precompile it:
bundle exec bin/rake plugin:assets:precompile[foreman_fog_proxmox]
- In foreman directory, after you modify foreman_fog_proxmox translations (language, texts in new files, etc) you have to compile it:
bundle exec bin/rake plugin:gettext[foreman_fog_proxmox]
- In foreman directory, run in a new terminal the webpack-dev-server:
./node_modules/.bin/webpack-dev-server --config config/webpack.config.js
- Or without webpack-dev-server, add this line in config/settings.yml:
:webpack_dev_server: false
then compile webpack assets:
bundle exec bin/rake webpack:compile
- In foreman directory, run rails server:
bundle exec bin/rails server
- Or you can launch all together:
bundle exec foreman start
If you want to delete vm on host destroy, add this line in config/settings.yml:
:destroy_vm_on_host_delete: false
See details in foreman plugin development
If you like it and still want to improve it, sponsor me!
- You can reach the contributors.
- Translate it in your favorite language
- Bug reports and pull requests are welcome on GitHub at ForemanFogProxmox.
Please read more information about how to contribute.
The code is available as open source under the terms of the GNU Public License v3.