]>
git.proxmox.com Git - pve-installer.git/blob - Proxmox/Install/Config.pm
f959f014fc81b8731e7179a2c50a1549fe2d9a98
1 package Proxmox
::Install
::Config
;
7 use JSON
qw(from_json to_json);
9 use Proxmox
::Install
::ISOEnv
;
12 my $iso_env = Proxmox
::Install
::ISOEnv
::get
();
14 my $country = Proxmox
::Install
::RunEnv
::get
('country');
15 if (!defined($iso_env->{locales
}->{country
}->{$country})) {
16 log_warn
("ignoring detected country '$country', invalid or unknown\n");
21 # installer behavior related
24 # disk and filesystem related
34 timezone
=> 'Europe/Vienna',
37 # root credentials & details
39 mailto
=> 'mail@example.invalid',
43 mngmt_nic_id
=> undef,
44 hostname
=> 'proxmox',
45 domain
=> 'example.invalid',
48 # TODO add disksel$i => undef entries
53 # merge a $new hash into the current config, with $new taking precedence
59 for my $k (sort keys $new->%*) { # first check all
60 croak
"unknown key '$k'" if !exists($current->{$k})
62 $current->{$_} = $new->{$_} for sort keys $new->%*; # then merge
67 my $_cfg = undef; # NOTE: global singleton
70 $_cfg = init_cfg
() if !defined($_cfg);
71 return defined($k) ?
$_cfg->{$k} : $_cfg;
77 croak
"unknown key '$k'" if !exists($cfg->{$k});
81 sub parse_kernel_cmdline
{
84 my $cmdline = Proxmox
::Install
::RunEnv
::get
('kernel_cmdline');
86 if ($cmdline =~ m/\s(ext4|xfs)(\s.*)?$/) {
90 if ($cmdline =~ m/hdsize=(\d+(\.\d+)?)[\s\n]/i) {
94 if ($cmdline =~ m/swapsize=(\d+(\.\d+)?)[\s\n]/i) {
95 $cfg->{swapsize
} = $1;
98 if ($cmdline =~ m/maxroot=(\d+(\.\d+)?)[\s\n]/i) {
102 if ($cmdline =~ m/minfree=(\d+(\.\d+)?)[\s\n]/i) {
103 $cfg->{minfree
} = $1;
106 my $iso_env = Proxmox
::Install
::ISOEnv
::get
();
107 if ($iso_env->{product
} eq 'pve') {
108 if ($cmdline =~ m/maxvz=(\d+(\.\d+)?)[\s\n]/i) {
116 sub set_autoreboot
{ set_key
('autoreboot', $_[0]); }
117 sub get_autoreboot
{ return get
('autoreboot'); }
119 sub set_filesys
{ set_key
('filesys', $_[0]); }
120 sub get_filesys
{ return get
('filesys'); }
122 sub set_hdsize
{ set_key
('hdsize', $_[0]); }
123 sub get_hdsize
{ return get
('hdsize'); }
125 sub set_swapsize
{ set_key
('swapsize', $_[0]); }
126 sub get_swapsize
{ return get
('swapsize'); }
128 sub set_maxroot
{ set_key
('maxroot', $_[0]); }
129 sub get_maxroot
{ return get
('maxroot'); }
131 sub set_minfree
{ set_key
('minfree', $_[0]); }
132 sub get_minfree
{ return get
('minfree'); }
134 sub set_maxvz
{ set_key
('maxvz', $_[0]); }
135 sub get_maxvz
{ return get
('maxvz'); }
137 sub set_country
{ set_key
('country', $_[0]); }
138 sub get_country
{ return get
('country'); }
140 sub set_timezone
{ set_key
('timezone', $_[0]); }
141 sub get_timezone
{ return get
('timezone'); }
143 sub set_keymap
{ set_key
('keymap', $_[0]); }
144 sub get_keymap
{ return get
('keymap'); }
146 sub set_password
{ set_key
('password', $_[0]); }
147 sub get_password
{ return get
('password'); }
149 sub set_mailto
{ set_key
('mailto', $_[0]); }
150 sub get_mailto
{ return get
('mailto'); }
152 sub set_mngmt_nic
{ set_key
('mngmt_nic', $_[0]); }
153 sub get_mngmt_nic
{ return get
('mngmt_nic'); }
155 sub set_mngmt_nic_id
{ set_key
('mngmt_nic_id', $_[0]); }
156 sub get_mngmt_nic_id
{ return get
('mngmt_nic_id'); }
158 sub set_hostname
{ set_key
('hostname', $_[0]); }
159 sub get_hostname
{ return get
('hostname'); }
161 sub set_domain
{ set_key
('domain', $_[0]); }
162 sub get_domain
{ return get
('domain'); }
164 sub get_fqdn
{ # virtual config
165 my ($hostname, $domain) = (get
('hostname'), get
('domain'));
166 return defined($hostname) && defined($domain) ?
"${hostname}.${domain}" : undef;