Fermer

octobre 2, 2019

Automatisation avec AWS pour les applications WordPress, Drupal et Magento


Objectif

Solutions d'installation et de configuration automatiques pour les applications WordPress, Drupal et Magento utilisant une orchestration d'infrastructure AWS CloudFormation et des outils de gestion de contenu tels que Puppet, Ansible ou Chef. La solution IaC (Infrastructure as Code) doit suivre les meilleures pratiques en matière d'architecture, telles que la configuration de la base de données dans un segment privé, l'authentification sécurisée et la mise en service. Il doit également disposer de l'optimisation de la configuration système pour les solutions Web, de base de données et prêtes à l'emploi.

Un modèle CloudFormation accepte les entrées utilisateur en tant que paramètres, par exemple les informations d'identification d'administrateur pour WordPress et les informations d'identification d'URL et d'administration pour Magento. . Le modèle va également configurer Amazon Virtual Cloud (VPC) dans AWS et créer l'infrastructure conformément aux meilleures pratiques. Il devrait également créer des sous-réseaux et lancer des instances. Il extraira le code requis du référentiel de code pour configurer l'application ou utiliser Amazon S3 à cette fin. Enfin, il effectuera l’optimisation à l’aide de Puppet et la configuration de base de WordPress.

Présentation générale

Ici, nous utilisons WordPress comme configuration de base, mais cela ne se limite pas à WordPress – vous pouvez utiliser Magento et Drupal avec de petites changements. La solution est prête à effectuer la configuration automatique et j’ai essayé de la simplifier au maximum. Je voulais également profiter de l'occasion pour utiliser différentes techniques montrant les différentes manières possibles d'intégrer différents composants requis pour la configuration et le déploiement d'applications WordPress.

Le composant impliqué

  • Amazon S3 (stockage de code)
  • AWS CloudFormation Modèle (YAML)
  • Marionnette 5.0 (configuration sans maître)
  • Nginx
  • PHP-FPM
  • MySQL
  • WP-CLI
  • WordPress

Conditions préalables

Les solutions sont bien testées la région Ouest des États-Unis (Oregon, [us-west-2]) avec les AMI d’Amazon Linux 1 et s’apprête à travailler de manière transparente avec AWS US East (Virginie du Nord, [us-east-1]). Cela peut également fonctionner pour l'ouest des États-Unis (Californie du Nord, [us-west-1]) avec un petit changement. Les solutions sont entièrement personnalisables selon les besoins.

Avant de commencer, vous devez remplir quelques conditions préalables.

  • KeyName:
    • Configurez une paire de clés SSH dans votre compte AWS (entrée CF).
  • Seau S3:
    • Veuillez créer un compartiment S3 «Code Pull» (il est codé en dur si vous souhaitez utiliser S3)
    • Suggestion: Vous pouvez utiliser GIT pour extraire du code avec un léger changement de “userdata” du exemple dans le modèle des FC.
  • Informations d'identification AWS (facultatif):
    • J'ai codé en dur les informations d'identification AWS fournies pour configurer AWS-CLI.
    • Note: Avec un petit changement de paramètre CF, vous pouvez saisir les informations d'identification AWS.
    • Suggestion: [1945900)] Vous pouvez ajouter un rôle IAM à l'instance et fournir des entrées avec CF.

Remarque: Assurez-vous que les informations d'identification AWS ont accès au compartiment S3.

Solutions

Une fois les conditions préalables définies, la Le modèle AWS CloudFormation acceptera les entrées pour définir WordPress et fournira à la sortie CF l'adresse URL du nom de domaine accessible de l'application WordPress. Le modèle CloudFormation va exécuter l'activité suivante:

CloudFormation Stack Flow

  • Collecter les entrées.
  • Provisionnez les sous-réseaux VPC, publics et privés.
  • Provisionnement d'instances Web et de bases de données (t2.small / t2. type micro) selon l’entrée (t2.small préféré) et déployez-les dans les sous-réseaux privés et publics, respectivement.
  • Fournissez des EIP pour la passerelle NAT et l’instance CM / Web.
  • Configurez des groupes de sécurité pour établir la connectivité pour la communication. .
  • Installez l'agent Puppet pour la configuration de Puppet MasterLess et extrayez le module de marionnette personnalisé requis du seau S3 (code pull).
    • À la place, j'ai utilisé des modules prêts à l'emploi, créé une configuration de modules personnalisés et placé devopshv1_AWSLinux1.tar.gz dans le référentiel de code.
  • Exécutez l'installation du module Puppet, configurez Nginx et PHP-FPM (extension PHP), puis configurez Nginx et PHP_FPM.
    • Vous pouvez modifier la configuration de Nginx et PHP-FPM en fonction de la mémoire vive du système dans le cadre de l'optimisation dans le module Puppet.
  • Utilisez la pile CF du script cfn-init pour configurer la configuration WordPress.
  • Utilisez l'instance “userdata” configurée par WP-CLI pour installer la base de données WP et finaliser son installation.
  • La sortie de pile fournit les URL des points d’accès à l’application WP.

Architecture Map

Procédure de création d’une configuration

  1. Définition des conditions préalables Clavier (KeyName) et S3 Bucket (Code pull). ] Connectez-vous au compte AWS et créez la pile CloudFormation à l'aide de
  2. téléchargez le code dans le compartiment S3, y compris le fichier devopshv1_AWSLinux1.tar.gz (extrait de la solution).
  3. Créez la pile CloudFormation dans la région Oregon.
  4. ] Fournissez une entrée au modèle CF.
  5. Le modèle de pile prendra quelques minutes pour approvisionner les ressources AWS et les configurations WP.
  6. Vérifiez la sortie de la pile pour obtenir l'URL du domaine d'accès ou l'adresse IP publique.

Application finale du programme de travail WP




Source link