-
Notifications
You must be signed in to change notification settings - Fork 0
Creation d'un VM puppetizé via un template
Fabrice Bacchella edited this page Jan 18, 2014
·
6 revisions
Cette exemple suppose qu’un serveur Puppet est déjà installé et accessible.
Créer un fichier serveur.yaml avec le contenu suivant :
---
security_groups:
- puppetclient
- default
ami_name: amzn-ami-pv-2013.03.1.x86_64-ebs
ressource:
- rootsshkey.mime
- puppetize
ressources_dir:
- .../ressources
variables:
- puppetmaster=<puppetmaster>
- ssh_private_key=/root/.ssh/id_rsa
la variable puppetmaster contient le nom du puppetmaster suivi éventuellement de :port, par exemple puppetmaster.domain:8141
Dans un répertoire .../ressources
placer le fichier puppetize:
#!/bin/bash -e
if [ -n "ssh_private_key" ] ; then
eval $(ssh-agent)
ssh-add $ssh_private_key
fi
puppetmaster_host=${puppetmaster%:*}
puppetmaster_port=${puppetmaster#$puppetmaster_host}
puppetmaster_port=${puppetmaster_port#:}
puppetmaster_port=${puppetmaster_port:-8140}
rpm --import http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
yum install -y http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
yum makecache
yum -y install puppet
yum update -y
if [ -n "puppetmaster_host" ] ; then
puppet agent --server=$puppetmaster_host --no-daemonize --verbose --onetime --color=false --masterport $puppetmaster_port --pluginsync true || true
ssh -o StrictHostKeyChecking=no $puppetmaster_host puppet cert sign $(facter fqdn)
puppet agent --server=$puppetmaster_host --no-daemonize --verbose --onetime --color=false --masterport $puppetmaster_port --pluginsync true
yum update -y
puppet agent --no-daemonize --verbose --onetime
fi
Dans ce même répertoire, placer la clé privé ssh (de préférence chiffré) du compte root du serveur puppet dans un fichier rootsshkey.mime:
Content-Type: multipart/mixed; boundary="===============4167197775032028261=="
MIME-Version: 1.0
--===============4167197775032028261==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="/root/.ssh/id_rsa"
X-Owner: root:root
X-Mode: 0400
<le contenu de /root/.ssh/id_rsa>
--===============4167197775032028261==--
Il ne vous reste plus qu’à créer la VM avec la commande :
oscmd ami run -T .../serveur.yaml -t <instance.type> -H <hostname>
La vm est automatiquement créée, puppet téléchargé. L'exécution demandera le mot de déchiffrement du fichier /root/.ssh/id_rsa si nécessaire et rajoute automatiquement la machine dans la PKI puppet.