Skip to content

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éation d’un template yaml

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.

Clone this wiki locally