/[vz-tools]/trunk/vz-create.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/vz-create.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 8 by dpavlin, Sun Jan 7 13:35:10 2007 UTC revision 18 by dpavlin, Tue Apr 17 12:46:31 2007 UTC
# Line 10  use Regexp::Common qw/net/; Line 10  use Regexp::Common qw/net/;
10  # default debian distribution  # default debian distribution
11  my $dist = 'etch';  my $dist = 'etch';
12  # debian mirror to use  # debian mirror to use
13  my $debian_mirror_uri = 'http://debian.carnet.hr/debian';  my $debian_mirror_uri = 'http://www.debian.org/debian';
14  # split physicial machine in how meny virtual ones?  # split physicial machine in how meny virtual ones?
15  my $ve_total = 2;  my $ve_total = 4;
16  # swap size (Mb)  # swap size (Mb)
17  my $swap_size = 512;  my $swap_size = 512;
18    # diskspace
19    my $diskspace = '2G:4G';
20    
21    my $config_file = $0;
22    $config_file =~ s!-create.pl!-tools.conf!;
23    warn "## $config_file\n";
24    if (-e $config_file) {
25            open(my $fh, '<', $config_file) || die "can't open $config_file: $!";
26            eval join("\n", <$fh>);
27            close($fh);
28            die "Error in $config_file: $@" if ($@);
29    }
30    
31  print "Creating new OpenVZ instance...\n";  print "Creating new OpenVZ instance...\n";
32    
33  my $arg = shift @ARGV;  my $arg = shift @ARGV || '';
34    
35  my ($hostname, $ip);  my ($hostname, $ip) = ('localhost','');
36    
37  if ($arg =~ m/$RE{net}{IPv4}/) {  if ($arg =~ m/$RE{net}{IPv4}/) {
38          $ip = $arg;          $ip = $arg;
39          chomp($hostname);          chomp($hostname);
40          $hostname = host($arg);          $hostname = host($arg);
41          $hostname =~ s/^.*\s(\S+)$/$1/;          $hostname =~ s/^.*\s(\S+)$/$1/;
42  } else {  } elsif ($arg) {
43          $hostname = $arg;          $hostname = $arg;
44          $ip = host($arg);          $ip = host($arg);
45          chomp($ip);          chomp($ip);
# Line 42  $hostname ||= prompt('Enter hostname: ') Line 54  $hostname ||= prompt('Enter hostname: ')
54    
55  my @ip_split = split(/\./,$ip);  my @ip_split = split(/\./,$ip);
56    
57  my $ve_id = sprintf('%03d%03d', $ip_split[2], $ip_split[3]);  my $ve_id = sprintf('%d%03d', $ip_split[2], $ip_split[3]);
58    
59  my $vz_root = '/vz';  my $vz_root = '/vz';
60    
# Line 54  warn ">> creating directories\n"; Line 66  warn ">> creating directories\n";
66    
67  mkdir('-p', "$vz_root/root/$ve_id", "$vz_root/private/$ve_id");  mkdir('-p', "$vz_root/root/$ve_id", "$vz_root/private/$ve_id");
68    
69  warn ">> installing debian\n";  warn ">> installing debian $dist from $debian_mirror_uri\n";
70    
71  if (! -e "$vz_root/private/$ve_id/etc/debian_version") {  if (! -e "$vz_root/private/$ve_id/etc/debian_version") {
72    
# Line 84  if (-e $conf_path) { Line 96  if (-e $conf_path) {
96          print $tmp "OSTEMPLATE=debian-3.1\n";          print $tmp "OSTEMPLATE=debian-3.1\n";
97          close($tmp);          close($tmp);
98    
99          vzctl('set', $ve_id, '--applyconfig', 'vps.basic', '--save');  #       vzctl('set', $ve_id, '--applyconfig', 'vps.basic', '--save');
100          vzctl('set', $ve_id, '--ipadd', $ip, '--save');          vzctl('set', $ve_id, '--ipadd', $ip, '--save');
101          vzctl('set', $ve_id, '--hostname', $hostname, '--save');          vzctl('set', $ve_id, '--hostname', $hostname, '--save');
102            vzctl('set', $ve_id, '--diskspace', $diskspace, '--save');
103  }  }
104    
105  sub create_file {  sub create_file {
# Line 104  create_file( Line 117  create_file(
117          "deb $debian_mirror_uri $dist main contrib non-free\n"          "deb $debian_mirror_uri $dist main contrib non-free\n"
118  );  );
119    
120  vzctl('start', $ve_id, '--wait');  vzctl('start', $ve_id);
121    
122  my $customize_sh = <<'__END_OF_SH__';  my $customize_sh = <<'__END_OF_SH__';
123    
# Line 112  my $customize_sh = <<'__END_OF_SH__'; Line 125  my $customize_sh = <<'__END_OF_SH__';
125  pwconv  pwconv
126    
127  # upgrade to lastest version  # upgrade to lastest version
128  apt-get update  apt-get -y update
129  apt-get upgrade  apt-get -y upgrade
130    
131  # install additional packages  # install additional packages
132  apt-get -y install vim less ssh sudo screen  apt-get -y install vim less ssh sudo screen telnet finger
133    
134  # remove unwanted packages  # remove unwanted packages
135  apt-get -y remove nano  apt-get -y remove nano
136    
137  # apt-iselect helper  # apt-iselect helper
138  wget -O /usr/local/bin/apt-iselect http://www.rot13.org/~dpavlin/projects/scripts/apt-iselect && chmod 755 /usr/local/bin/apt-iselect  wget -t 1 -T 5 -O /usr/local/bin/apt-iselect http://www.rot13.org/~dpavlin/projects/scripts/apt-iselect
139    chmod 755 /usr/local/bin/apt-iselect
140    
141  # lock root user  # lock root user
142  usermod -L root  usermod -L root
# Line 166  foreach my $l (split(/\n/, $customize_sh Line 180  foreach my $l (split(/\n/, $customize_sh
180    
181  #vzctl('stop', $ve_id);  #vzctl('stop', $ve_id);
182    
183    my $passwd = prompt('root passwd: ', -echo=>'*');
184    vzctl('set', $ve_id, '--userpasswd', 'root:' . $passwd ) if ($passwd);
185    
186    my $login = prompt('create login: ');
187    if ($login) {
188            $passwd = prompt("$login passwd: ", -echo=>'*');
189            vzctl('exec', $ve_id, "useradd --create-home $login");
190            vzctl('set', $ve_id, '--userpasswd', "$login:$passwd" );
191    }

Legend:
Removed from v.8  
changed lines
  Added in v.18

  ViewVC Help
Powered by ViewVC 1.1.26