Comment puis-je configurer cloud-init sur la coutume AMIs dans AWS? (CentOS)
Définition des données de l'utilisateur pour les instances AWS semble vraiment utile pour toutes sortes de bootstrap de type actions. Malheureusement, je utiliser un custom CentOS AMI qui n'a pas provenir de l'un de ses AMIs pour le PCI raisons, de sorte cloud-init n'est pas déjà installé et configuré. Je ne veux vraiment, pour définir un nom d'hôte et exécuter un petit script bash. Comment puis-je le faire fonctionner?
- Qu'est-ce que le "PCI" dans ce contexte?
- Il se réfère aux lignes directrices établies par le payment Card Industry Data Security Council. La conformité est nécessaire pour le traitement de paiements par carte de crédit, et est généralement un solide norme de sécurité.
- whereswalden: ok, merci. faut regarder le "jargon" tu sais.
Vous devez vous connecter pour publier un commentaire.
cloud-init est un très puissant, mais très sans-papiers de l'outil. Même une fois qu'il est installé, il y a beaucoup de modules active par défaut qui écrasent les choses que vous avez déjà défini sur votre AMI. Voici les instructions pour une quantité minimale d'installation à partir de zéro:
Instructions
Installer cloud-init à partir d'un référentiel standard. Si vous êtes inquiet au sujet de PCI, vous ne voulez probablement pas à utiliser AWS personnalisée de dépôts.
Modifier
/etc/cloud/cloud.cfg
, un fichier yaml, afin de refléter la configuration de votre choix. Ci-dessous est une configuration minimale à la documentation de chaque module.Si il y a un
defaults.cfg
dans/etc/cloud/cloud.cfg.d/
, de le supprimer.De prendre avantage de cette configuration, définissez les paramètres suivants userdata pour les nouvelles instances:
Vous pouvez aussi tout simplement exécuter un script bash en remplaçant
#cloud-config
avec#!/bin/bash
et de mettre le script bash dans le corps, mais si vous le faites, vous devez supprimer tous les nom d'hôte modules decloud_init_modules
.Notes Complémentaires
Noter que c'est une configuration minimale, et le cloud-init est capable de gérer les utilisateurs, les clés ssh, les points de montage, etc. Regardez les références ci-dessous pour plus de documentation sur les fonctions en question.
En général, il semble que le cloud-init ne la substance basée sur les modules spécifiés. Certains modules, comme "disable-ec2-métadonnées", faire des trucs tout simplement par le fait d'être spécifié. D'autres, comme "runcmd", seulement de faire des trucs si leurs paramètres sont spécifiés, soit dans le cloud.cfg, ou dans le cloud-config userdata. La plupart de la documentation ci-dessous seulement vous dire ce que les paramètres sont possibles pour chaque module, pas ce que le module est appelé, mais le nuage par défaut.cfg doit avoir un module complet de la liste pour commencer. Le meilleur moyen que j'ai trouvé pour désactiver un module est tout simplement de le supprimer de la liste.
Dans certains cas, "rhel" peut travailler mieux pour la "distribution" de la balise que "amazon". Je n'ai pas vraiment compris quand.
Références
/etc/cloud/cloud.cfg
sauvés dans l'AMI et l'AMI reconstruit? merciExpansion sur l'état de la réponse pour ceux qui cherchent à créer un CentOS AMI qui est
cloud-init
activé (et capable de l'exécuter réellement votre CloudFormation scripts), vous pourriez avoir un certain succès en procédant comme suit:sudo yum install -y cloud-init
rm -rf /var/lib/cloud/data
rm -rf /var/lib/cloud/instance
rm -rf /var/lib/cloud/instances/*
/etc/cloud/cloud.cfg
avec la configuration dans la réponseci-dessus, mais assurez-vous de définir
distro: rhel
Avait un diable de temps à essayer de comprendre pourquoi mon UserData n'a pas été invoquée jusqu'à ce que j'ai réalisé que les images dans le marché naturellement qu'exécuter vos Données personnelles une fois par exemple ET bien sûr, ils avaient déjà exécuté. En supprimant les indicateurs que ceux qui avaient déjà été exécutée avec la modification de la
distro: rhel
dans lecloud.cfg
fichier a fait le tour.Pour les curieux, le
distro:
valeur doit correspondre à l'un des scripts python dans/usr/lib/python2.6/site-packages/cloudinit/distros
. Il s'avère que l'AMI j'ai lancé avait pas deamazon.py
, si vous avez besoin d'utiliserrhel
pour CentOS. Selon l'AMI de vous lancer et de la version de cloud-init, YMMV.Voici un bref tutoriel sur la façon d'exécuter des scripts au démarrage à l'aide de cloud-init sur AWS EC2 (CentOS).
Fichier de Configuration
Le fichier de configuration ci-dessous est sur AWS CentOS6. Pour Amazon Linux, voir ici.
Arborescence De Répertoire
Ici est ce que le cloud chemin
/var/lib/cloud/scripts
ressemble:Contenu des Fichiers de Script
Voici le contenu de l'exemple des fichiers de script.
Les fichiers doivent être en vertu de l'utilisateur
root
. Voir mon chemin sur créer le script de démarrage.Résultat de l'Exécution
Dans le cas de démarrage initial
Dans le cas d'un redémarrage
Dans le cas de démarrage à partir de l'AMI
Référence
Le moment où le script est exécuté dans le cloud-init (CentOS6) a été examiné (traduit)