X LEGACY Installation d'un serveur linux sous vmware - Offirmo-team/wiki GitHub Wiki

Installation d'un machine de développement/production professionelle [ virtualisée]]. Si besoin, réviser [administration linux.

Une fois fini, voir maintenance d'une machine linux. Voir aussi Installation d'un serveur web sur Amazon EC2.

Introduction

En développement, il est préférable d'avoir un système de test séparé de sa propre machine, afin de pouvoir tester autant que l'on veut sans craindre de casser une partie importante.

Une machine virtuelle est idéale dans ce but. On choisit VMware Server contre VirtualBox car :

  1. VMware est gratuit aussi
  2. VMware a des performances supérieures (à vérifier)
  3. VMware est un standard professionnel, bon à avoir sur son CV

Un exemple de serveur linux virtuel : http://www.vmware.com/appliances/directory/va/116463 et encore un http://thecloudmarket.com/image/ami-22e2154b--ubuntu-10-10-64-bit-rails-3-and-mongodb-1-6

Création de la machine virtuelle

Introduction

On va partir sur une distribution Ubuntu serveur. Cette distribution est tout à fait convenable, couramment utilisée en production, et on peut bénéficier d'un support pro si nécessaire.

On choisira par contre une version "long time support" (LTS), les versions "latest" d'ubuntu étant plus instables.

Préparation

  • Installer VMware Server pour la virtualisation. C'est totalement gratuit.
  • Télécharger le CD ubuntu serveur stable [http://www.ubuntu.com/server ici], actuellement 12.04 LTS "Long Term Support".
  • Ouvrir l'interface d'administration sous Internet Explorer 32 bits lancé en tant qu'administrateur (actuellement le seul où on peut ouvrir correctement la console)

Création

  • Créer une machine virtuelle avec les caractéristiques suivantes :
    • Name un truc cool, du genre "Ubuntu Server 12.04 dev"
    • Guest Operating System : Ubuntu serveur 64 bits
      • 32bits fonctionne toujours, 64 bits uniquement si votre processeur le supporte et si le constructeur de votre ordinateur ne l'a pas bridé...
    • Memory And Processors
      • En théorie pas besoin d'énormément de mémoire sous linux. Perso, en utilisation usuelle, consommation de ~200Mo. À titre d'exemple, les instances amazon micro ont 613 Mo. MAIS si on veut faire des tâches intensives. Mettre 2048Mo. (min 768Mo si vous manquez de RAM)
      • Nombre de processeurs : maxi !
    • Hard Disk -> "New virtual disk", puis :
      • Taille : perso, après 3 mois d'utilisation serveur, usage 6.3 Go. Donc mettre 8~12Go est OK.
      • policies -> optimize for performance car de toute façon nos données sont sauvées sous github.
    • Network Adapter
      • En ajouter une "bridged". On en ajoutera une autre ensuite mais on ne peut pas le faire ici.
    • CD/DVD Drive
      • oui, le faire pointer vers le CD ubuntu serveur préalablement téléchargé
    • Floppy Drive
      • non, disquette inutile.
    • USB Controller
      • C'est une machine serveur, sans interface graphique. Donc pas besoin de souris, inutile de lui donner accès à l'USB de la machine hôte
    • Ready To Complete
      • Ajouter une deuxième interface réseau avant de finir, en mode "HostOnly"
    • Final :
Please verify that your new virtual machine is configured correctly.
Name:Ubuntu Server 12.04 dev
Location:[standard]
Guest Operating System:Ubuntu Linux (64-bit)
Memory:1536 MB
Processors:2
Hard Disk:40 GB
Network Adapter:Using "Bridged"
CD/DVD Drive:Using "[standard]/ubuntu-12.04.1-server-...
USB Controller:No
Network Adapter #2:Using "HostOnly"
  • Derniers réglages ! Autoriser l'ordinateur hôte à être un "bridge" dans votre firewall si nécessaire. C'est indispensable pour qu'une machine virtuelle puisse accéder au réseau, avec VIPRE notamment.
  • Démarrer la machine virtuelle.

Installation du système

C'est le premier boot. Attention à ne pas se tromper.

  • Le menu de choix de langue s'affiche.
    • Inutile de tenter F2, F3, F4... ils sont indisponibles tant qu'on n'a pas choisi une langue. Choisir la langue que vous voulez, elle sera redemandée avant l'install de toute façon. On prend "English" pour une compatibilité maximale et éviter des problèmes liés à l'internationalisation.
    • F4 : choisir "Install a minimal virtual machine" (ben oui)
    • Le clavier sera redemandé par la suite, et on n'a pas encore besoin de taper de toute manière.
    • c'est parti...
  • Langue :English, location : France (pour le décalage horaire), clavier : détection auto ou choix manuel
  • Interface principale : eth0, qui doit se connecter au réseau correctement si tout va bien.
  • Host name : ubuntuserver2
  • Suivre les instructions jusqu'à "partition disk". Rien de bien sorcier.
  • Partition disk : ça devient un peu plus subtil
    • Choisir "disque entier avec LVM". LVM c'est bien.
    • Choix de la quantité d'espace à utiliser : ben max, puisqu'on sait très bien ce qu'on fait.
    • Valider le partitionnement standard
  • Suivre les instructions jusqu'à la création du compte admin
    • J'ai choisi : Real/full name "Admyn"
      • username : admyn
      • password : yyyy
  • Autres questions :
    • on ne chiffre pas le disque, ni la LVM. C'est une machine virtuelle : On chiffrera le disque réel si ce niveau de sécurité est nécessaire.
    • l'accès aux dépôts peut être difficile. C'est normal (voir ci-après) on corrigera plus tard.
  • Mises à jour / Lanscape : À un moment, plusieurs choix sont offerts : pas de majs auto / Majs autos et Landscape. Je serai partisan d'accepter les majs auto, quitte à en désactiver certaines par la suite. Landscape n'est pas utile pour une seule machine. https://help.ubuntu.com/10.04/serverguide/C/automatic-updates.html
  • Package selection : on veut tout faire manuellement, on ne coche donc rien et rien n'est installé pour le moment. Et voilà, fini ! On peut maintenant redémarrer (pas besoin de "retirer" le CD), se loguer et tester le réseau avec
ping www.google.com

Je recommande ensuite d'éteindre la machine virtuelle (sudo halt) et de faire un snapshot dans VMWare, au cas où.

Installation automatique via puppet

Le plan est de maintenant utiliser puppet pour automatiser ce qui reste de l'installation. Mais avant de l'utiliser, il nous faut préparer deux ou trois choses.

utils de base

La console VMware est insupportable. Installer ssh immédiatement :

sudo apt-get install ssh

puis installer vim pour éditer quelques fichiers :

sudo apt-get install vim

Interface réseau privée

Comme nous allons utiliser cette machine comme une machine de développement, nous allons vouloir échanger rapidement et confidentiellement avec elle depuis la machine hôte. Il est préférable de faire cela sur une interface réseau dédiée. C'est pour cela que nous avons ajouté tout à l'heure une interface réseau de type "host only". (merci http://slashcrisis.blogspot.com/2007/08/shared-folder-with-vmware-server.html)

Il faut configurer cette interface supplémentaire. Elle sera en DHCP comme la première, mais étant en "host only", elle n'ira pas chercher son adresse IP auprès de la box la plus proche mais auprès du serveur DHCP interne de vmware. Ce sera comme si on avait un réseau privé entre notre machine réelle et la machine virtuelle.

Configurer une interface réseau de manière définitive se fait en modifiant /etc/network/interfaces :

sudo vi /etc/network/interfaces

On a alors ceci :


# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Que l'on complète avec ceci :


# another interface
auto eth1
iface eth1 inet dhcp

Ensuite, problème de DNS car les deux serveurs DHCP (la "box" et vmware) donnent un serveur DNS différent et le client DHCP ne conserve que la dernière réponse visiblement... Je ne sais pas comment mettre des priorités... on va résoudre le problème en forçant le DNS à ceux de google :

sudo vi /etc/dhcp3/dhclient.conf

puis à côté ou à la place de la ligne commentée


#prepend domain-name-servers 127.0.0.1;

mettre ceci :

prepend domain-name-servers 8.8.8.8,8.8.4.4;

Ce ne sont pas les plus rapides puisqu'ils sont aux USA, mais notre serveur, limité à quelques tâches bien précises, ne fera pas beaucoup d'accès DNS de toute manière.

Ensuite, pour que les modifications soient prises en compte immédiatement :

sudo ifup eth1

Seulement ifup, car l'interface n'étant pas préalablement configurée, elle était down. Si ce n'est pas le cas, faire plutôt :

sudo ifdown eth1
sudo ifup eth1

Pour vérifier que cela marche bien, on peut lancer, sur la machine hôte, VMware -> VMware server -> Manage virtual networks et vérifier que l'adresse prise par eth1 est bien dans le DHCP du réseau "hostonly", normalement VMnet1.

fully qualified domain name

Pour que puppet fonctionne correctement, il faut que notre système ait un fully qualified domain name. Il s'agit, en théorie, d'identifier notre machine de manière unique sur internet. Il nous faut pour cela une IP fixe. Celle obtenue par le DHCP de l'interface "host only" suffira pour l'instant, à condition que le serveur puppet soit lui aussi sur ce réseau virtuel "host only".

il faut juste changer le fichier /etc/hosts et y ajouter la ligne (avec deux noms à la fois) :

i.p.de.eth1   devyejv2.vm.local devyejv2

Note : supprimer éventuellement la ligne concurrente

127.0.0.1 devyejv2

qui n'est de toute façon pas conseillée. (XXX vrai ?? ça a l'air de marcher pourtant)

NOTE : bien évidemment, avec cette config, il y aura un souci si la machine change d'adresse IP (réinstall ou exécution sur une autre machine hôte). Il faudra alors mettre à jour le fichier host ou trouver un meilleur moyen d'indiquer le fqdn. (XXX revérifier le coup du 127.0.0.1)

Comprendre puppet

[puppet]] est un outil de déploiement automatique de machines, basé (la plupart du temps) sur un modèle client/serveur.

Si le serveur est sur internet, pas de problème. S'il est en local, sur une autre vm par exemple, alors il faut pour qu'on puisse le trouver le déclarer dans le fichier /etc/hosts :

i.p.du.master puppetmaster.vm.local puppetmaster

Dans la suite de ce document, on utilisera juste "puppetmaster" pour indiquer le nom du serveur puppet.

Vérifications que tout fonctionne

Après tout cela, un petit reboot préventif est plus sûr. (vilaines habitudes de windows, tss)

sudo reboot

Puis vérifier le fonctionnement des commandes suivantes :

hostname --short
hostname --fqdn
ping puppetmaster
ping www.google.com

(on suppose évidemment que la machine puppetmaster est accessible)

Installation de puppet

le puppet disponible par défaut sous cet ubuntu est bien trop vieux. On va utiliser un backports, comme expliqué ici : http://bitfieldconsulting.com/puppet-tutorial-2

Il faut d'abord installer ce paquet pour avoir la commande add-apt-repository

sudo apt-get install python-software-properties

Puis rien de plus simple :

sudo add-apt-repository ppa:mathiaz/puppet-backports
sudo apt-get update
sudo apt-get install puppet

On vérifie la version

puppet --version

qui doit être >= 2.6.3

Lancement de l'installation automatique

Lancement manuel :

sudo puppet agent --server=ubuntuserver.vm.local --debug --test

Le champ "test" est important, car il évite des conflits avec l'éventuel démon puppet déjà lancé mais pas encore bien configuré.

Autres

Interface réseau rapide : voir http://www.commentcamarche.net/forum/affich-5025765-valeur-retour-commande

Alternative : Installation MANUELLE, sans puppet

Note : ce qui suis est sûrement périmé. Les fichiers puppet font foi

Bon, notre serveur est encore loin d'être satisfaisant... Il est temps d'installer quelques paquets prioritaires. Révisez apt si nécessaire.

Il est possible que le réseau ne fonctionne pas encore correctement, auquel cas on peut "remettre" (virtuellement) le CD d'install qui a été "éjecté" (virtuellement) après l'installation, et réactiver le CD comme source de paquet dans la liste des sources : Normalement juste une ligne à décommenter dans /etc/apt/sources.list, cf. apt. (ne pas oublier de monter le CD avec mount)

Installation d'un serveur ssh

Utiliser la console vmware est tout simplement abominable. Le plus urgent est l'installation d'un serveur ssh afin de pouvoir administrer le serveur depuis notre système hôte, capable de faire tourner une console plus évoluée.

On installe le serveur ssh comme ceci : http://www.commentcamarche.net/faq/6658-installer-un-serveur-ssh-sous-ubuntu

sudo apt-get install ssh

Vérifiez l'adresse IP de votre linux :

ifconfig -a

C'est gagné, on peut maintenant fermer l'insupportable fenêtre vmware et piloter notre linux depuis un client SSH évolué

ssh (adresse IP du serveur) -l admyn

Création d'un compte admin de secours

Avant de faire des bêtises, créons un deuxième compte local avec droits sudo, juste au cas où.

TODO

Correction des sources de dépôt

Avant d'aller plus loin, il nous faut corriger les dépôts vu que les dépôts fr ont tendance à ne jamais répondre. (cf. apt) puis mettre à jour les listes de paquets.

Rapidement, on veut avoir ça au final dans /etc/apt/sources.list :


## install CD, uncomment if needed.

#deb cdrom:[Ubuntu-Server 10.10 _Maverick Meerkat_ - Release i386 (20101007)]/ maverick main restricted

## International servers
deb http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse

#deb-src http://archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse

#deb-src http://archive.ubuntu.com/ubuntu/ maverick-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu maverick-security main restricted universe multiverse

#deb-src http://security.ubuntu.com/ubuntu maverick-security main restricted universe multiverse

## Special repository for Zend Server
deb http://repos.zend.com/zend-server/deb server non-free

## Uncomment the following two lines to add software from Canonical's

## 'partner' repository.

## This software is not part of Ubuntu, but is offered by Canonical and the

## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu maverick partner

# deb-src http://archive.canonical.com/ubuntu maverick partner

## Uncomment the following two lines to add software from Ubuntu's

## 'extras' repository.

## This software is not part of Ubuntu, but is offered by third-party

## developers who want to ship their latest software.

# deb http://extras.ubuntu.com/ubuntu maverick main

# deb-src http://extras.ubuntu.com/ubuntu maverick main

Et voilà, on peut maintenant faire un

sudo apt-get update

pour mettre à jour la liste des paquets. Au passage, cela permet de tester que le réseau fonctionne bien. Si le réseau ne fonctionne pas bien, voir du côté de votre firewall, qui a peut-être du mal à comprendre (et avec raison) que des paquets provenant d'un nouvel ordi inconnu sortent de votre ordi hôte. Perso, j'ai eu le cas avec VIPRE.

Note : ça va couiner avec le dépôt zend à propos d'une clé, c'est normal, n'y faites pas attention pour l'instant.

Mise à jour

sudo apt-get upgrade

Quelques paquets importants

Installons à présent quelques paquets qui vont nous être utiles

wget

wget permet de télécharger un fichier depuis internet. Il va (entre autres) nous permettre de corriger le problème du dépôt zend. Comme le dépôt de Zend server est "privé", il faut ajouter une clé pour l'utiliser correctement. Commencer par installer wget :

sudo apt-get install wget

Ensuite, télécharger la clé du dépôt zend qui nous manquait :

wget http://repos.zend.com/zend.key -O- | sudo apt-key add -

Et voilà. Normalement,

sudo apt-get update

devrait fonctioner parfaitement à présent.

gcc & kernel sources

Pour l'installation correcte des vmware tools ci-après, on a besoin de gcc et des sources du noyau. Installons-les : gcc :

sudo apt-get install build-essential

sources du noyau : instructions ici http://ubuntuforums.org/archive/index.php/t-225255.html

Vous pouvez voir votre version de noyau avec cette commande :

uname -r

Dans mon cas à l'écriture de cette page, cela donne 2.6.35-23-virtual. Installer les paquets suivants :

sudo apt-get install linux-source
sudo apt-get install linux-headers-virtual

Bien que ne mentionnant pas la version du noyau, c'est bien la dernière qui est installée.

Installation des vmware tools

Les vmware tools sont impossibles à installer sur les distribs récentes.

Dans notre cas, on va utiliser les open-vm-tools maintenus par la communauté qui remplacent très bien (en fait, c'est vmware qui les a mis à dispo pour modifs)

Explications : https://help.ubuntu.com/community/VMware/Tools

sudo apt-get install --no-install-recommends open-vm-dkms
sudo apt-get install --no-install-recommends open-vm-tools

Mais j'ignore comment utiliser ces outils spéciaux. À suivre...

Problèmes rencontrés

pas d'accès internet, DHCP NOK

  • vu avec firewall bloquant les VMs
  • vu avec doucle install virtualbox + vmware :
    • lancer vmware network en tant qu'admin
    • dans la section "interfaces auxquelles bridged ne doit pas s'attacher", ajouter toutes les interfaces virtualbox
    • redémarrer la VM

à trier :

source /work/home/bashrc.sh