1 |
misc |
1442 |
# what should be possible : |
2 |
|
|
# install a base system |
3 |
|
|
# - mandriva |
4 |
|
|
# - mageia |
5 |
|
|
# - others ? ( for testing package ? ) |
6 |
|
|
|
7 |
|
|
# install a server |
8 |
|
|
# - by name, with a valstart clone |
9 |
|
|
|
10 |
|
|
class auto_installation { |
11 |
misc |
1443 |
class variables { |
12 |
|
|
$pxe_dir = "/var/lib/pxe" |
13 |
misc |
1444 |
# m/ for menu. There is limitation on the path length so |
14 |
|
|
# while we will likely not hit the limit, it may be easier |
15 |
|
|
$pxe_menu_dir = "$pxe_dir/pxelinux.cfg/m/" |
16 |
misc |
1443 |
} |
17 |
|
|
|
18 |
misc |
1472 |
class download { |
19 |
|
|
import "download.rb" |
20 |
|
|
} |
21 |
|
|
|
22 |
misc |
1443 |
class pxe_menu inherits variables { |
23 |
misc |
1442 |
package { 'syslinux': |
24 |
|
|
|
25 |
|
|
} |
26 |
|
|
|
27 |
|
|
file { $pxe_dir: |
28 |
|
|
ensure => directory, |
29 |
|
|
} |
30 |
|
|
|
31 |
|
|
file { "$pxe_dir/pxelinux.0": |
32 |
|
|
ensure => "/usr/lib/syslinux/pxelinux.0", |
33 |
|
|
} |
34 |
|
|
|
35 |
|
|
file { "$pxe_dir/menu.c32": |
36 |
|
|
ensure => "/usr/lib/syslinux/menu.c32" |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
file { "$pxe_dir/pxelinux.cfg": |
40 |
|
|
ensure => directory, |
41 |
|
|
} |
42 |
misc |
1444 |
# m for menu, there is some limitation on the path lenght so I |
43 |
|
|
# prefer to |
44 |
|
|
file { "$pxe_menu_dir": |
45 |
|
|
ensure => directory, |
46 |
|
|
} |
47 |
misc |
1442 |
|
48 |
misc |
1445 |
# TODO make it tag aware |
49 |
|
|
$menu_entries = list_exported_ressources('Auto_installation::Pxe_menu_base') |
50 |
misc |
1442 |
# default file should have exported ressources |
51 |
|
|
file { "$pxe_dir/pxelinux.cfg/default": |
52 |
|
|
ensure => present, |
53 |
|
|
content => template('auto_installation/default'), |
54 |
misc |
1445 |
} |
55 |
|
|
Auto_installation::Pxe_menu_base <<| tag == $fqdn |>> |
56 |
misc |
1442 |
} |
57 |
|
|
|
58 |
misc |
1445 |
define pxe_menu_base($content) { |
59 |
|
|
include auto_installation::variables |
60 |
|
|
file { "$auto_installation::variables::pxe_menu_dir/$name": |
61 |
|
|
ensure => present, |
62 |
|
|
content => $content, |
63 |
|
|
} |
64 |
|
|
} |
65 |
|
|
|
66 |
misc |
1473 |
define pxe_menu_entry($kernel_path, $append, $label) { |
67 |
misc |
1445 |
@@auto_installation::pxe_menu_base { $name: |
68 |
|
|
tag => $fqdn, |
69 |
|
|
content => template('auto_installation/menu'), |
70 |
|
|
} |
71 |
|
|
} |
72 |
|
|
|
73 |
misc |
1442 |
# define pxe_linux_entry |
74 |
|
|
# meant to be exported |
75 |
|
|
# name |
76 |
|
|
# label |
77 |
|
|
# kernel |
78 |
|
|
# append |
79 |
misc |
1474 |
class netinst_storage { |
80 |
|
|
# to ease the creation of test iso |
81 |
|
|
$netinst_path = "/var/lib/libvirt/netinst" |
82 |
misc |
1442 |
|
83 |
misc |
1474 |
file { $netinst_path: |
84 |
|
|
ensure => directory, |
85 |
misc |
1970 |
require => Package[libvirt-utils], |
86 |
misc |
1474 |
} |
87 |
|
|
|
88 |
|
|
libvirtd::storage { "netinst": |
89 |
|
|
path => $netinst_path, |
90 |
|
|
require => File[$netinst_path], |
91 |
|
|
} |
92 |
|
|
} |
93 |
|
|
|
94 |
misc |
1475 |
define download_file($destination_path, $download_url) { |
95 |
|
|
exec { "wget -q -O $destination_path/$name $download_url/$name": |
96 |
|
|
creates => "$destination_path/$name", |
97 |
|
|
} |
98 |
|
|
} |
99 |
|
|
|
100 |
|
|
define mandriva_installation_entry($version, $arch = 'x86_64') { |
101 |
|
|
include netinst_storage |
102 |
|
|
$protocol = "ftp" |
103 |
|
|
$server = "ftp.free.fr" |
104 |
|
|
$mirror_url_base = "/pub/Distributions_Linux/MandrivaLinux/" |
105 |
|
|
$mirror_url_middle = $version ? { |
106 |
|
|
"cooker" => "devel/cooker/$arch/", |
107 |
|
|
default => "official/$version/$arch/" |
108 |
|
|
} |
109 |
|
|
$mirror_url = "$mirror_url_base/$mirror_url_middle" |
110 |
|
|
|
111 |
|
|
$mirror_url_end = "isolinux/alt0" |
112 |
|
|
|
113 |
|
|
$destination_path = "$netinst_storage::netinst_path/$name" |
114 |
|
|
|
115 |
|
|
file { "$destination_path": |
116 |
|
|
ensure => directory, |
117 |
|
|
} |
118 |
|
|
|
119 |
tmb |
2154 |
$download_url = "$protocol\\://$server/$mirror_url/$mirror_url_end" |
120 |
misc |
1475 |
|
121 |
|
|
|
122 |
|
|
download_file { ['all.rdz','vmlinuz']: |
123 |
|
|
destination_path => $destination_path, |
124 |
|
|
download_url => $download_url, |
125 |
|
|
require => File[$destination_path], |
126 |
|
|
} |
127 |
|
|
|
128 |
|
|
pxe_menu_entry { "mandriva_$version_$arch": |
129 |
|
|
kernel_path => "$name/vmlinuz", |
130 |
|
|
label => "Mandriva $version $arch", |
131 |
|
|
#TODO add autoinst.cfg |
132 |
|
|
append => "$name/all.rdz useless_thing_accepted=1 lang=fr automatic=int:eth0,netw:dhcp,met:$protocol,ser:$server,dir:$mirror_url ", |
133 |
|
|
} |
134 |
|
|
} |
135 |
misc |
1442 |
# |
136 |
|
|
# define a template for autoinst |
137 |
|
|
# - basic installation |
138 |
|
|
# - server installation ( with server name as a parameter ) |
139 |
|
|
|
140 |
|
|
} |