aboutsummaryrefslogtreecommitdiffstats
path: root/modules/auto_installation/manifests/init.pp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/auto_installation/manifests/init.pp')
-rw-r--r--modules/auto_installation/manifests/init.pp140
1 files changed, 140 insertions, 0 deletions
diff --git a/modules/auto_installation/manifests/init.pp b/modules/auto_installation/manifests/init.pp
new file mode 100644
index 00000000..642cddfd
--- /dev/null
+++ b/modules/auto_installation/manifests/init.pp
@@ -0,0 +1,140 @@
+# what should be possible :
+# install a base system
+# - mandriva
+# - mageia
+# - others ? ( for testing package ? )
+
+# install a server
+# - by name, with a valstar clone
+
+class auto_installation {
+ class variables {
+ $pxe_dir = "/var/lib/pxe"
+ # m/ for menu. There is limitation on the path length so
+ # while we will likely not hit the limit, it may be easier
+ $pxe_menu_dir = "${pxe_dir}/pxelinux.cfg/m/"
+ }
+
+ class download {
+ import "download.rb"
+ }
+
+ class pxe_menu inherits variables {
+ package { 'syslinux':
+
+ }
+
+ file { $pxe_dir:
+ ensure => directory,
+ }
+
+ file { "${pxe_dir}/pxelinux.0":
+ ensure => "/usr/lib/syslinux/pxelinux.0",
+ }
+
+ file { "${pxe_dir}/menu.c32":
+ ensure => "/usr/lib/syslinux/menu.c32"
+ }
+
+ file { "${pxe_dir}/pxelinux.cfg":
+ ensure => directory,
+ }
+ # m for menu, there is some limitation on the path length so I
+ # prefer to
+ file { "${pxe_menu_dir}":
+ ensure => directory,
+ }
+
+ # TODO make it tag aware
+ $menu_entries = list_exported_ressources('Auto_installation::Pxe_menu_base')
+ # default file should have exported resources
+ file { "${pxe_dir}/pxelinux.cfg/default":
+ ensure => present,
+ content => template('auto_installation/default'),
+ }
+ Auto_installation::Pxe_menu_base <<| tag == $fqdn |>>
+ }
+
+ define pxe_menu_base($content) {
+ include auto_installation::variables
+ file { "${auto_installation::variables::pxe_menu_dir}/${name}":
+ ensure => present,
+ content => $content,
+ }
+ }
+
+ define pxe_menu_entry($kernel_path, $append, $label) {
+ @@auto_installation::pxe_menu_base { $name:
+ tag => $fqdn,
+ content => template('auto_installation/menu'),
+ }
+ }
+
+ # define pxe_linux_entry
+ # meant to be exported
+ # name
+ # label
+ # kernel
+ # append
+ class netinst_storage {
+ # to ease the creation of test iso
+ $netinst_path = "/var/lib/libvirt/netinst"
+
+ file { $netinst_path:
+ ensure => directory,
+ require => Package[libvirt-utils],
+ }
+
+ libvirtd::storage { "netinst":
+ path => $netinst_path,
+ require => File[$netinst_path],
+ }
+ }
+
+ define download_file($destination_path, $download_url) {
+ exec { "wget -q -O ${destination_path}/${name} ${download_url}/${name}":
+ creates => "${destination_path}/${name}",
+ }
+ }
+
+ define mandriva_installation_entry($version, $arch = 'x86_64') {
+ include netinst_storage
+ $protocol = "ftp"
+ $server = "ftp.free.fr"
+ $mirror_url_base = "/pub/Distributions_Linux/MandrivaLinux/"
+ $mirror_url_middle = $version ? {
+ "cooker" => "devel/cooker/${arch}/",
+ default => "official/${version}/${arch}/"
+ }
+ $mirror_url = "${mirror_url_base}/${mirror_url_middle}"
+
+ $mirror_url_end = "isolinux/alt0"
+
+ $destination_path = "${netinst_storage::netinst_path}/${name}"
+
+ file { "${destination_path}":
+ ensure => directory,
+ }
+
+ $download_url = "${protocol}\\://${server}/${mirror_url}/${mirror_url_end}"
+
+
+ download_file { ['all.rdz','vmlinuz']:
+ destination_path => $destination_path,
+ download_url => $download_url,
+ require => File[$destination_path],
+ }
+
+ pxe_menu_entry { "mandriva_${version}_${arch}":
+ kernel_path => "${name}/vmlinuz",
+ label => "Mandriva ${version} ${arch}",
+ #TODO add autoinst.cfg
+ append => "${name}/all.rdz useless_thing_accepted=1 lang=fr automatic=int:eth0,netw:dhcp,met:${protocol},ser:${server},dir:${mirror_url} ",
+ }
+ }
+ #
+ # define a template for autoinst
+ # - basic installation
+ # - server installation ( with server name as a parameter )
+
+}