First try to build the module for the puppet forgelabs.
This commit is contained in:
parent
4eebf7efae
commit
8219c1003d
9
CHANGELOG.md
Normal file
9
CHANGELOG.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
### 0.0.1 - 2014/01/07
|
||||||
|
|
||||||
|
Initial release.
|
||||||
|
|
||||||
|
##### Changes
|
||||||
|
* Only prepare the system for Proxmox installation (proxmox::hypervisor::preconfig)
|
89
README.md
89
README.md
@ -1,79 +1,62 @@
|
|||||||
# proxmox
|
# proxmox
|
||||||
|
|
||||||
#### Table of Contents
|
|
||||||
|
|
||||||
1. [Overview](#overview)
|
|
||||||
2. [Module Description - What the module does and why it is useful](#module-description)
|
|
||||||
3. [Setup - The basics of getting started with proxmox](#setup)
|
|
||||||
* [What proxmox affects](#what-proxmox-affects)
|
|
||||||
* [Setup requirements](#setup-requirements)
|
|
||||||
* [Beginning with proxmox](#beginning-with-proxmox)
|
|
||||||
4. [Usage - Configuration options and additional functionality](#usage)
|
|
||||||
5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
|
|
||||||
5. [Limitations - OS compatibility, etc.](#limitations)
|
|
||||||
6. [Development - Guide for contributing to the module](#development)
|
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
A one-maybe-two sentence summary of what the module does/what problem it solves.
|
The proxmox module (will) provide a simple way to manage Proxmox hypervisor and it's virtual machines (KVM/OpenVZ) with Puppet.
|
||||||
This is your 30 second elevator pitch for your module. Consider including
|
|
||||||
OS/Puppet version it works with.
|
|
||||||
|
|
||||||
## Module Description
|
## Module Description
|
||||||
|
|
||||||
If applicable, this section should have a brief description of the technology
|
The proxmox module automates installing Proxmox on Debian systems.
|
||||||
the module integrates with and what that integration enables. This section
|
|
||||||
should answer the questions: "What does this module *do*?" and "Why would I use
|
|
||||||
it?"
|
|
||||||
|
|
||||||
If your module has a range of functionality (installation, configuration,
|
|
||||||
management, etc.) this is the time to mention it.
|
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
### What proxmox affects
|
### What proxmox affects:
|
||||||
|
|
||||||
* A list of files, packages, services, or operations that the module will alter,
|
* Package/service/configuration files for Proxmox
|
||||||
impact, or execute on the system it's installed on.
|
* A new `sources.list` file for Proxmox
|
||||||
* This is a great place to stick any warnings.
|
* System repository
|
||||||
* Can be in list or paragraph form.
|
* The static table lookup for hostnames `hosts`
|
||||||
|
|
||||||
### Setup Requirements **OPTIONAL**
|
|
||||||
|
|
||||||
If your module requires anything extra before setting up (pluginsync enabled,
|
|
||||||
etc.), mention it here.
|
|
||||||
|
|
||||||
### Beginning with proxmox
|
### Beginning with proxmox
|
||||||
|
|
||||||
The very basic steps needed for a user to get the module up and running.
|
To begin using proxmox module with default parameters, declare the hypervisor's class with `include proxmox::hypervisor`.
|
||||||
|
|
||||||
If your most recent release breaks compatibility or requires particular steps
|
|
||||||
for upgrading, you may wish to include an additional section here: Upgrading
|
|
||||||
(For an example, see http://forge.puppetlabs.com/puppetlabs/firewall).
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Put the classes, types, and resources for customizing, configuring, and doing
|
### Hypervisor
|
||||||
the fancy stuff with your module here.
|
|
||||||
|
```
|
||||||
|
class { 'proxmox::hypervisor':
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note**: The module will automatically reboot the system on the PVE Kernel. You will need to start again the puppet agent.
|
||||||
|
|
||||||
|
### VM
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
## Reference
|
## Reference
|
||||||
|
|
||||||
Here, list the classes, types, providers, facts, etc contained in your module.
|
### Classes
|
||||||
This section should include all of the under-the-hood workings of your module so
|
|
||||||
people know what the module is touching on their system but don't need to mess
|
|
||||||
with things. (We are working on automating this section!)
|
|
||||||
|
|
||||||
## Limitations
|
* `proxmox`: Main class, do nothing right now.
|
||||||
|
|
||||||
This is where you list OS compatibility, version compatibility, etc.
|
* `proxmox::hypervisor`: Install the Proxmox hypervisor on the system.
|
||||||
|
|
||||||
## Development
|
Limitations
|
||||||
|
-----------
|
||||||
|
|
||||||
Since your module is awesome, other users will want to play with it. Let them
|
This module will work only on Debian 7.x versions.
|
||||||
know what the ground rules for contributing are.
|
|
||||||
|
|
||||||
## Release Notes/Contributors/Etc **Optional**
|
Development
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Free to send contributions, fork it, ...
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
WTFPL (http://wtfpl.org/)
|
||||||
|
|
||||||
If you aren't using changelog, put your release notes here (though you should
|
|
||||||
consider using changelog). You may also add any additional sections you feel are
|
|
||||||
necessary or important to include here. Please use the `## ` header.
|
|
||||||
|
51
manifests/hypervisor.pp
Normal file
51
manifests/hypervisor.pp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# == Class: proxmox::hypervisor
|
||||||
|
#
|
||||||
|
# Manage the Proxmox hypervisor.
|
||||||
|
#
|
||||||
|
# === Parameters
|
||||||
|
#
|
||||||
|
# Document parameters here.
|
||||||
|
#
|
||||||
|
# [*sample_parameter*]
|
||||||
|
# Explanation of what this parameter affects and what it defaults to.
|
||||||
|
# e.g. "Specify one or more upstream ntp servers as an array."
|
||||||
|
#
|
||||||
|
# === Variables
|
||||||
|
#
|
||||||
|
# Here you should define a list of variables that this module would require.
|
||||||
|
#
|
||||||
|
# [*sample_variable*]
|
||||||
|
# Explanation of how this variable affects the funtion of this class and if it
|
||||||
|
# has a default. e.g. "The parameter enc_ntp_servers must be set by the
|
||||||
|
# External Node Classifier as a comma separated list of hostnames." (Note,
|
||||||
|
# global variables should not be used in preference to class parameters as of
|
||||||
|
# Puppet 2.6.)
|
||||||
|
#
|
||||||
|
# === Examples
|
||||||
|
#
|
||||||
|
# class { '::proxmox::hypervisor':
|
||||||
|
# kvm_only => true,
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# === Authors
|
||||||
|
#
|
||||||
|
# Gardouille <gardouille@gmail.com>
|
||||||
|
#
|
||||||
|
# === Copyright
|
||||||
|
#
|
||||||
|
# WTFPL <http://wtfpl.org/>
|
||||||
|
#
|
||||||
|
class proxmox::hypervisor (
|
||||||
|
$ve_package_ensure = $proxmox::params::ve_package_ensure,
|
||||||
|
$old_package_ensure = $proxmox::params::old_package_ensure,
|
||||||
|
) inherits proxmox::params {
|
||||||
|
|
||||||
|
include '::proxmox::hypervisor::preconfig'
|
||||||
|
# include '::proxmox::hypervisor::install'
|
||||||
|
# include '::proxmox::hypervisor::config'
|
||||||
|
|
||||||
|
# Class['proxmox::hypervisor::preconfig'] ->
|
||||||
|
# Class['proxmox::hypervisor::install'] ->
|
||||||
|
# Class['proxmox::hypervisor::config']
|
||||||
|
|
||||||
|
} # Public class: proxmox::hypervisor
|
61
manifests/hypervisor/preconfig.pp
Normal file
61
manifests/hypervisor/preconfig.pp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# == Class: proxmox::hypervisor::preconfig
|
||||||
|
#
|
||||||
|
# Before installing Proxmox some modifications have to be applied on the system
|
||||||
|
#
|
||||||
|
class proxmox::hypervisor::preconfig {
|
||||||
|
|
||||||
|
File {
|
||||||
|
owner => root,
|
||||||
|
group => root,
|
||||||
|
mode => 644,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hostname should be resolvable via /etc/hosts
|
||||||
|
#/files/etc/hosts/2
|
||||||
|
#/files/etc/hosts/2/ipaddr = "214.938.839.123"
|
||||||
|
#/files/etc/hosts/2/canonical = "hypervisor.domain.tld"
|
||||||
|
#/files/etc/hosts/2/alias[1] = "hypervisor"
|
||||||
|
#/files/etc/hosts/1/ipaddr = "127.0.0.1"
|
||||||
|
#/files/etc/hosts/1/canonical = "localhost"
|
||||||
|
augeas { "${::fqdn}":
|
||||||
|
context => "/files/etc/hosts",
|
||||||
|
changes => [
|
||||||
|
#"ins ipaddr ${::ipaddress}",
|
||||||
|
"set 02/ipaddr ${::ipaddress}",
|
||||||
|
"set *[ipaddr = '${::ipaddress}']/canonical ${::fqdn}",
|
||||||
|
"set *[ipaddr = '${::ipaddress}']/alias[1] $hostname",
|
||||||
|
"set *[ipaddr = '127.0.0.1']/canonical localhost",
|
||||||
|
"rm *[ipaddr = '127.0.1.1']",
|
||||||
|
],
|
||||||
|
onlyif => "match *[ipaddr = '${::ipaddress}'] size == 0",
|
||||||
|
}
|
||||||
|
->
|
||||||
|
# Remove Enterprise repository (need a subscription)
|
||||||
|
file { '/etc/apt/sources.list.d/pve-enterprise.list':
|
||||||
|
ensure => absent,
|
||||||
|
}
|
||||||
|
->
|
||||||
|
# Add the standard repository (~community)
|
||||||
|
apt::source {'proxmox':
|
||||||
|
ensure => present,
|
||||||
|
location => 'http://download.proxmox.com/debian',
|
||||||
|
release => $::lsbdistcodename,
|
||||||
|
repos => 'pve-no-subscription',
|
||||||
|
include_src => false,
|
||||||
|
key => '9887F95A',
|
||||||
|
key_server => 'keyserver.ubuntu.com',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the grub default to saved to be able to use grub-set-default during
|
||||||
|
# the installation
|
||||||
|
if ! defined(Augeas["grub_default"]) {
|
||||||
|
augeas { "grub_default":
|
||||||
|
context => "/files/etc/default/grub",
|
||||||
|
changes => [
|
||||||
|
"set GRUB_DEFAULT saved",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} # Private class: proxmox::hypervisor::preconfig
|
@ -1,41 +1,24 @@
|
|||||||
# == Class: proxmox
|
# == Class: proxmox
|
||||||
#
|
#
|
||||||
# Full description of class proxmox here.
|
# This class do nothing right now.
|
||||||
#
|
# Please use proxmox::hypervisor to manage proxmox.
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# Document parameters here.
|
|
||||||
#
|
|
||||||
# [*sample_parameter*]
|
|
||||||
# Explanation of what this parameter affects and what it defaults to.
|
|
||||||
# e.g. "Specify one or more upstream ntp servers as an array."
|
|
||||||
#
|
|
||||||
# === Variables
|
|
||||||
#
|
|
||||||
# Here you should define a list of variables that this module would require.
|
|
||||||
#
|
|
||||||
# [*sample_variable*]
|
|
||||||
# Explanation of how this variable affects the funtion of this class and if
|
|
||||||
# it has a default. e.g. "The parameter enc_ntp_servers must be set by the
|
|
||||||
# External Node Classifier as a comma separated list of hostnames." (Note,
|
|
||||||
# global variables should be avoided in favor of class parameters as
|
|
||||||
# of Puppet 2.6.)
|
|
||||||
#
|
#
|
||||||
# === Examples
|
# === Examples
|
||||||
#
|
#
|
||||||
# class { 'proxmox':
|
# class { 'proxmox':
|
||||||
# servers => [ 'pool.ntp.org', 'ntp.local.company.com' ],
|
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
# === Authors
|
# === Authors
|
||||||
#
|
#
|
||||||
# Author Name <author@domain.com>
|
# Gardouille <gardouille@gmail.com>
|
||||||
#
|
#
|
||||||
# === Copyright
|
# === Copyright
|
||||||
#
|
#
|
||||||
# Copyright 2015 Your name here, unless otherwise noted.
|
# WTFPL <http://wtfpl.org/>
|
||||||
#
|
#
|
||||||
class proxmox {
|
class proxmox {
|
||||||
|
|
||||||
|
notify { "hello world": }
|
||||||
|
|
||||||
}
|
|
||||||
|
} # Public class: proxmox
|
||||||
|
18
manifests/params.pp
Normal file
18
manifests/params.pp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# == Class: proxmox::params
|
||||||
|
#
|
||||||
|
class proxmox::params {
|
||||||
|
case $::osfamily {
|
||||||
|
'Debian': {
|
||||||
|
if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '7.0') >= 0 {
|
||||||
|
$ve_package_ensure = 'present'
|
||||||
|
$old_package_ensure = 'absent'
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
fail("Proxmox only works with Debian system; osfamily (${::osfamily}) or lsbdistid (${::lsbdistid}) is unsupported")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} # Private class: proxmox::params
|
@ -1,14 +1,21 @@
|
|||||||
{
|
{
|
||||||
"name": "gardouille-proxmox",
|
"name": "gardouille-proxmox",
|
||||||
"version": "0.1.0",
|
"version": "0.0.1",
|
||||||
"author": "gardouille",
|
"author": "gardouille",
|
||||||
"summary": "Manage Proxmox hypervisor and KVM virtual machines or OpenVZ containers.",
|
"summary": "Manage Proxmox hypervisor and KVM virtual machines or OpenVZ containers.",
|
||||||
"license": "wtfpl",
|
"license": "wtfpl",
|
||||||
"source": "https://git.101010.fr/puppet/proxmox",
|
"source": "https://git.101010.fr/puppet/proxmox",
|
||||||
"project_page": "https://git.101010.fr/puppet/proxmox",
|
"project_page": "https://git.101010.fr/puppet/proxmox",
|
||||||
"issues_url": null,
|
"issues_url": https://git.101010.fr/puppet/proxmox/issues,
|
||||||
|
"tags": ["proxmox", "system", "debian"],
|
||||||
|
"operatingsystem_support": [
|
||||||
|
{
|
||||||
|
"operatingsystem":"Debian",
|
||||||
|
"operatingsystemrelease":"7.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
{"name":"puppetlabs-stdlib","version_requirement":">= 4.5.0"}
|
{ "name": "puppetlabs/apt", "version_requirement": ">= 1.7.0" },
|
||||||
|
{ "name": "puppetlabs/stdlib", "version_requirement": ">= 4.5.0" },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
tests/hypervisor.pp
Normal file
3
tests/hypervisor.pp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class { 'proxmox::hypervisor':
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user