Comment déployer une application PHP de base en utilisant Ansible sur Ubuntu 14.04

introduction

Ce tutoriel couvre le processus de provisionnement d’une application PHP de base avec Ansible. L’objectif à la fin de ce didacticiel est de faire en sorte que votre nouveau serveur Web serve une application PHP de base sans une seule connexion SSH ou une commande manuelle exécutée sur le droplet cible.

Nous utiliserons le framework Laravel comme exemple d’application PHP, mais ces instructions peuvent être facilement modifiées pour prendre en charge d’autres frameworks et applications si vous en possédez déjà un.

Conditions préalables

Pour ce tutoriel, nous utiliserons Ansible pour installer et configurer Nginx, PHP et d’autres services sur un droplet Ubuntu 14.04. Ce didacticiel s’appuie sur les connaissances de base d’Ansible. Si vous êtes nouveau dans Ansible, vous pouvez le lire à travers https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-an- ubuntu-12-04-vps [ce tutoriel de base Ansible] en premier.

Pour suivre ce tutoriel, vous aurez besoin de:

  • Un droplet Ubuntu 14.04 de toute taille que nous utiliserons pour configurer et déployer notre application PHP. L’adresse IP de cette machine sera appelée «++» tout au long du tutoriel.

  • Un Ubuntu 14.04 Droplet qui sera utilisé pour Ansible. C’est la Droplet à laquelle vous serez connecté pour l’intégralité de ce tutoriel.

  • Sudo utilisateurs non root configurés pour les deux gouttelettes.

  • Clés SSH pour que le Anslet Droplet autorise la connexion au Droplet de déploiement PHP, que vous pouvez configurer en suivant: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys—​2 [ce tutoriel] sur votre Ansible Droplet.

Étape 1 - Installation de Ansible

La première étape consiste à installer Ansible. Ceci est facilement accompli en installant PPA (Personal Package Archive), et en installant le paquet Ansible avec + apt +.

Premièrement, ajoutez le PPA en utilisant la commande + apt-add-repository +.

sudo apt-add-repository ppa:ansible/ansible

Une fois cette opération terminée, mettez à jour le cache + apt +.

sudo apt-get update

Enfin, installez Ansible.

sudo apt-get install ansible

Une fois Ansible installé, nous allons créer un nouveau répertoire dans lequel travailler et configurer une configuration de base. Par défaut, Ansible utilise un fichier hôtes situé dans + / etc / ansible / hosts +, qui contient tous les serveurs qu’il gère. Bien que ce fichier convienne à certains cas d’utilisation, il est global, ce qui n’est pas ce que nous voulons ici.

Pour ce tutoriel, nous allons créer un fichier d’hôtes local et l’utiliser à la place. Nous pouvons le faire en créant un nouveau fichier de configuration Ansible dans notre répertoire de travail, que nous pouvons utiliser pour indiquer à Ansible de rechercher un fichier hôtes dans le même répertoire.

Créez un nouveau répertoire (que nous utiliserons pour la suite de ce tutoriel).

mkdir ~/ansible-php

Déplacez-vous dans le nouveau répertoire.

cd ~/ansible-php/

Créez un nouveau fichier nommé + ansible.cfg + et ouvrez-le pour édition en utilisant + nano + ou votre éditeur de texte favori.

nano ansible.cfg

Ajoutez l’option de configuration + hostfile + avec la valeur + hosts + dans le groupe + [par défaut] + en copiant le texte suivant dans le fichier + ansible.cfg +.

ansible.cfg

[defaults]
hostfile = hosts

Enregistrez et fermez le fichier + ansible.cfg +. Ensuite, nous allons créer le fichier + hosts +, qui contiendra l’adresse IP du Droplet PHP sur lequel nous déploierons notre application.

nano hosts

Copiez le texte ci-dessous pour ajouter une section à + php + `, en remplaçant" "par l'adresse IP de votre serveur et" "par l’utilisateur sudo non root créé dans les conditions préalables de votre PHP Droplet.

les hôtes

[php]
ansible_ssh_user=

Enregistrez et fermez le fichier + hosts. Lançons une vérification simple pour nous assurer que Ansible est capable de se connecter à l’hôte comme prévu en appelant le module + ping + sur le nouveau groupe + php +.

ansible php -m ping

Vous pouvez obtenir une vérification d’authentification d’hôte SSH, selon que vous vous êtes déjà connecté à cet hôte auparavant. Le ping devrait revenir avec une réponse réussie, qui ressemble à ceci:

Sortie

111.111.111.111 | success >> {
   "changed": false,
   "ping": "pong"
}

Ansible est maintenant installé et configuré. nous pouvons passer à la configuration de notre serveur Web.

Étape 2 - Installation des packages requis

Dans cette étape, nous allons installer certains paquets système requis en utilisant Ansible et + apt +. En particulier, nous allons installer + git +, + nginx +, '+ sqlite3 + ,' + mcrypt +, et quelques paquets + php5 - * +.

Avant d’ajouter le module + apt + pour installer les paquets que nous voulons, nous devons créer un livre de base. Nous allons construire sur ce cahier au fur et à mesure de l’exécution du didacticiel. Créez un nouveau playbook appelé + php.yml +.

nano php.yml

Coller dans la configuration suivante. Les deux premières lignes spécifient le groupe d’hôtes que nous souhaitons utiliser (+ php +) et s’assurent qu’il exécute des commandes avec + sudo + par défaut. Le reste ajoute dans un module avec les paquets dont nous avons besoin. Vous pouvez le personnaliser pour votre propre application ou utiliser la configuration ci-dessous si vous suivez l’exemple de l’application Laravel.

---
- hosts: php
 sudo: yes

 tasks:

 - name: install packages
   apt: name={{ item }} update_cache=yes state=latest
   with_items:
     - git
     - mcrypt
     - nginx
     - php5-cli
     - php5-curl
     - php5-fpm
     - php5-intl
     - php5-json
     - php5-mcrypt
     - php5-sqlite
     - sqlite3

Enregistrez le fichier + php.yml +. Enfin, lancez + ansible-playbook + pour installer les paquets sur le droplet. N’oubliez pas d’utiliser l’option + - ask-sudo-pass + si votre utilisateur sudo sur votre Droplet PHP requiert un mot de passe.

ansible-playbook php.yml --ask-sudo-pass

Étape 3 - Modification des fichiers de configuration du système

Dans cette section, nous allons modifier certains fichiers de configuration système sur le droplet PHP. L’option de configuration la plus importante à modifier (à part les fichiers de Nginx, qui seront abordés ultérieurement) est l’option + cgi.fix_pathinfo + dans + php5-fpm +, car la valeur par défaut représente un risque pour la sécurité.

Nous allons d’abord expliquer toutes les sections que nous allons ajouter à ce fichier, puis inclure l’ensemble du fichier + php.yml + que vous pourrez copier et coller.

Le module lineinfile peut être utilisé pour s’assurer que la valeur de configuration dans le fichier correspond exactement à ce que nous attendons. Pour ce faire, vous pouvez utiliser une expression générique normale afin de permettre à Ansible de comprendre la plupart des formes dans lesquelles le paramètre est susceptible de se trouver. Nous devons également redémarrer + php5-fpm + et '+ nginx + pour que le changement prenne effet. Nous devons donc ajouter deux gestionnaires, dans une nouvelle section + handlers + `. Les gestionnaires sont parfaits pour cela, car ils ne sont déclenchés que lorsque la tâche change. Ils s’exécutent également à la fin du livre de jeu, ce qui permet à plusieurs tâches d’appeler le même gestionnaire, qui ne sera exécuté qu’une fois.

La section à faire ci-dessus ressemblera à ceci:

 - name: ensure php5-fpm cgi.fix_pathinfo=0
   lineinfile: dest=/etc/php5/fpm/php.ini regexp='^(.*)cgi.fix_pathinfo=' line=cgi.fix_pathinfo=0
   notify:
     - restart php5-fpm
     - restart nginx

 handlers:
   - name: restart php5-fpm
     service: name=php5-fpm state=restarted

   - name: restart nginx
     service: name=nginx state=restarted

Note: bogue Ansible version 1.9.1

Ensuite, nous devons également nous assurer que le module + php5-mcrypt + est activé. Ceci est fait en exécutant le script + php5enmod + avec la tâche shell et en vérifiant que le fichier + 20-mcrypt.ini + est au bon endroit quand il est activé. Notez que nous disons à Ansible que la tâche crée un fichier spécifique. Si ce fichier existe, la tâche ne sera pas exécutée.

 - name: enable php5 mcrypt module
   shell: php5enmod mcrypt
   args:
     creates: /etc/php5/cli/conf.d/20-mcrypt.ini

Maintenant, ouvrez + php.yml + pour éditer à nouveau.

nano php.yml

Ajoutez les tâches et les gestionnaires ci-dessus afin que le fichier corresponde à ce qui suit:

---
- hosts: php
 sudo: yes

 tasks:

 - name: install packages
   apt: name={{ item }} update_cache=yes state=latest
   with_items:
     - git
     - mcrypt
     - nginx
     - php5-cli
     - php5-curl
     - php5-fpm
     - php5-intl
     - php5-json
     - php5-mcrypt
     - php5-sqlite
     - sqlite3

 - name: ensure php5-fpm cgi.fix_pathinfo=0
   lineinfile: dest=/etc/php5/fpm/php.ini regexp='^(.*)cgi.fix_pathinfo=' line=cgi.fix_pathinfo=0
   notify:
     - restart php5-fpm
     - restart nginx

 - name: enable php5 mcrypt module
   shell: php5enmod mcrypt
   args:
     creates: /etc/php5/cli/conf.d/20-mcrypt.ini

 handlers:
   - name: restart php5-fpm
     service: name=php5-fpm state=restarted

   - name: restart nginx
     service: name=nginx state=restarted

Enfin, lancez le playbook.

ansible-playbook php.yml --ask-sudo-pass

Droplet dispose maintenant de tous les packages requis installés et de la configuration de base configurée et prête à fonctionner.

Étape 4 - Clonage du référentiel Git

Dans cette section, nous allons cloner le référentiel d’infrastructure Laravel dans votre Droplet à l’aide de Git. Comme à l’étape 3, nous expliquerons toutes les sections que nous allons ajouter au livre de jeu, puis inclurons l’intégralité du fichier + php.yml + que vous pourrez copier et coller.

Avant de cloner notre dépôt Git, nous devons nous assurer que + / var / www + existe. Nous pouvons le faire en créant une tâche avec le module de fichiers.

- name: create /var/www/ directory
 file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700

Comme mentionné ci-dessus, nous devons utiliser le module Git pour cloner le référentiel sur notre Droplet. Le processus est simple car tout ce dont nous avons normalement besoin pour une commande + git clone + est le référentiel source. Dans ce cas, nous définirons également la destination et indiquerons à Ansible de ne pas mettre à jour le référentiel s’il existe déjà en définissant + update = no +. Comme nous utilisons Laravel, l’URL du référentiel git que nous allons utiliser est + https: // github.com / laravel / laravel.git +.

Cependant, nous devons exécuter la tâche en tant qu’utilisateur + www-data pour nous assurer que les autorisations sont correctes. Pour ce faire, nous pouvons dire à Ansible d’exécuter la commande en tant qu’utilisateur spécifique en utilisant + sudo +. La tâche finale ressemblera à ceci:

- name: Clone git repository
 git: >
   dest=/var/www/laravel
   repo=https://github.com/laravel/laravel.git
   update=no
 sudo: yes
 sudo_user: www-data
  • Remarque *: Pour les référentiels basés sur SSH, vous pouvez ajouter + accept_hostkey = yes + pour empêcher la vérification de l’hôte SSH de suspendre la tâche.

Comme auparavant, ouvrez le fichier + php.yml + pour le modifier.

nano php.yml

Ajoutez les tâches ci-dessus au playbook; la fin du fichier doit correspondre à ce qui suit:

...

 - name: enable php5 mcrypt module
   shell: php5enmod mcrypt
   args:
     creates: /etc/php5/cli/conf.d/20-mcrypt.ini

 - name: create /var/www/ directory
   file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700

 - name: Clone git repository
   git: >
     dest=/var/www/laravel
     repo=https://github.com/laravel/laravel.git
     update=no
   sudo: yes
   sudo_user: www-data

 handlers:
   - name: restart php5-fpm
     service: name=php5-fpm state=restarted

   - name: restart nginx
     service: name=nginx state=restarted

Enregistrez et fermez le livret, puis lancez-le.

ansible-playbook php.yml --ask-sudo-pass

Étape 5 - Création d’une application avec Composer

Dans cette étape, nous utiliserons Composer pour installer l’application PHP et ses dépendances.

Composer a une commande + create-project + qui installe toutes les dépendances requises puis exécute les étapes de création de projet définies dans la section + post-create-project-cmd + du fichier + composer.json +. C’est le meilleur moyen de s’assurer que l’application est configurée correctement pour sa première utilisation.

Nous pouvons utiliser la tâche Ansible suivante pour télécharger et installer Composer globalement sous la forme + / usr / local / bin / composer +. Il sera ensuite accessible à toute personne utilisant Droplet, y compris Ansible.

- name: install composer
 shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 args:
   creates: /usr/local/bin/composer

Avec Composer installé, vous pouvez utiliser un module Composer. Dans notre cas, nous voulons indiquer à Composer où se trouve notre projet (en utilisant le paramètre + rép_travail +), et exécuter la commande + create-project +. Nous devons également ajouter le paramètre + optimise_autoloader = no +, car cet indicateur n’est pas pris en charge par la commande + create-project +. Comme la commande + git, nous souhaitons également l’exécuter en tant qu’utilisateur` + www-data` pour nous assurer que les autorisations sont valides. En réunissant tout cela, nous avons cette tâche:

- name: composer create-project
 composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no
 sudo: yes
 sudo_user: www-data
  • Remarque *: La tâche + create-project + peut prendre beaucoup de temps sur un nouveau Droplet, car Composer aura un cache vide et devra télécharger tout le nouveau.

Ouvrez maintenant le fichier + php.yml + pour le modifier.

nano php.yml

Ajoutez les tâches ci-dessus à la fin de la section + tasks +, au-dessus de + handlers +, afin que la fin du livre de jeu corresponde à ce qui suit:

...

 - name: Clone git repository
   git: >
     dest=/var/www/laravel
     repo=https://github.com/laravel/laravel.git
     update=no
   sudo: yes
   sudo_user: www-data

 - name: install composer
   shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
   args:
     creates: /usr/local/bin/composer

 - name: composer create-project
   composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no
   sudo: yes
   sudo_user: www-data

 handlers:
   - name: restart php5-fpm
     service: name=php5-fpm state=restarted

   - name: restart nginx
     service: name=nginx state=restarted

Enfin, lancez le playbook.

ansible-playbook php.yml --ask-sudo-pass

Que se passerait-il si nous utilisions à nouveau Ansible maintenant? Le + composer create-project + s’exécutera à nouveau et, dans le cas de Laravel, cela signifie un nouveau + APP_KEY +. Donc, ce que nous voulons plutôt, c’est que cette tâche ne soit exécutée qu’après un nouveau clone. Nous pouvons nous assurer qu’il ne soit exécuté qu’une seule fois en enregistrant une variable avec les résultats de la tâche + git clone +, puis en vérifiant ces résultats dans la tâche + composer create-project +. Si la tâche + git clone + était Changed, alors nous lançons + composer create-project +, sinon, elle est ignorée.

  • Remarque: * Il semble y avoir un bogue dans certaines versions du module Ansible + composer +, et il peut sortir OK au lieu de Changed, car il ignore que les scripts ont été exécutés même si aucune dépendance n’a été installée.

Ouvrez le fichier + php.yml + pour le modifier.

nano php.yml

Trouvez la tâche + git clone +. Ajoutez l’option + register + pour enregistrer les résultats de la tâche dans la variable + clonée +, comme ceci:

- name: Clone git repository
 git: >
   dest=/var/www/laravel
   repo=https://github.com/laravel/laravel.git
   update=no
 sudo: yes
 sudo_user: www-data

Ensuite, recherchez la tâche + composer create-project. Ajoutez l’option + quand + pour vérifier la variable + clonée + pour voir si elle a changé ou non.

- name: composer create-project
 composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no
 sudo: yes
 sudo_user: www-data

Enregistrez le livre de lecture et lancez-le:

ansible-playbook php.yml --ask-sudo-pass

Maintenant, Composer cessera de changer le + APP_KEY + à chaque exécution.

Étape 6 - Mise à jour des variables d’environnement

Dans cette étape, nous mettrons à jour les variables d’environnement pour notre application.

Laravel est livré avec un fichier + .env + par défaut qui définit + APP_ENV + sur + local + et + APP_DEBUG + sur + true +. Nous voulons les échanger contre + production et` + faux`, respectivement. Cela peut être fait simplement en utilisant le module + lineinfile + avec les tâches suivantes.

- name: set APP_DEBUG=false
 lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false

- name: set APP_ENV=production
 lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production

Ouvrez le fichier + php.yml + pour le modifier.

nano php.yml

Ajoutez cette tâche au playbook; la fin du fichier doit correspondre à ce qui suit:

...

 - name: composer create-project
   composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no
   sudo: yes
   sudo_user: www-data
   when: cloned|changed

 - name: set APP_DEBUG=false
   lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false

 - name: set APP_ENV=production
   lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production

 handlers:
   - name: restart php5-fpm
     service: name=php5-fpm state=restarted

   - name: restart nginx
     service: name=nginx state=restarted

Enregistrez et lancez le playbook:

ansible-playbook php.yml --ask-sudo-pass

Le module + lineinfile + est très utile pour les réglages rapides de n’importe quel fichier texte, et il est très utile pour s’assurer que les variables d’environnement comme celle-ci sont définies correctement.

Étape 7 - Configuration de Nginx

Dans cette section, nous allons configurer un Nginx pour servir l’application PHP.

Si vous visitez votre Droplet dans votre navigateur Web maintenant (c.-à-d. + http: /// +), vous verrez la page par défaut de Nginx à la place de la page du nouveau projet Laravel. En effet, nous devons toujours configurer notre serveur Web Nginx pour qu’il serve l’application à partir du répertoire + / var / www / laravel / public +. Pour ce faire, nous devons mettre à jour notre configuration par défaut de Nginx avec ce répertoire et ajouter une prise en charge de + php-fpm +, pour qu’il puisse gérer les scripts PHP.

Créez un nouveau fichier nommé + nginx.conf +:

nano nginx.conf

Enregistrez ce bloc de serveur dans ce fichier. Vous pouvez consulter l’étape 4 de https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lp-lack-stack-on-ubuntu-14-04#step-four -% E2% 80% 94-configure-nginx-à-utiliser-notre-processeur-php [ce tutoriel] pour plus de détails sur cette configuration de Nginx; Les modifications ci-dessous spécifient où se trouve le répertoire public Laravel et s’assurent que Nginx utilise le nom d’hôte que nous avons défini dans le fichier + hosts + en tant que + nom_serveur + avec la variable + inventaire_hôte +.

nginx.conf

server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;

   root /var/www/laravel/public;
   index index.php index.html index.htm;

   server_name {{ inventory_hostname }};

   location / {
       try_files $uri $uri/ =404;
   }

   error_page 404 /404.html;
   error_page 500 502 503 504 /50x.html;
   location = /50x.html {
       root /var/www/laravel/public;
   }

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
   }
}

Enregistrez et fermez le fichier + nginx.conf.

Maintenant, nous pouvons utiliser le module template pour diffuser notre nouveau fichier de configuration. Le module + template + peut sembler très similaire au module + copy +, mais il y a une grande différence. + copy + copiera un ou plusieurs fichiers sur * sans faire de changement *, tandis que + template + copie un seul fichier et résoudra toutes les variables du fichier. Comme nous avons utilisé + {{inventaire_hôte}} + dans notre fichier de configuration, nous utilisons le module + template + pour qu’il soit résolu en adresse IP que nous avons utilisée dans le fichier + hosts +. De cette façon, nous n’avons pas besoin de coder en dur les fichiers de configuration utilisés par Ansible.

Cependant, comme d’habitude lors de la rédaction de tâches, nous devons considérer ce qui se passera dans Droplet. Comme nous modifions la configuration de Nginx, nous devons redémarrer Nginx et + php-fpm +. Ceci est fait en utilisant les options + notify +.

- name: Configure nginx
 template: src=nginx.conf dest=/etc/nginx/sites-available/default
 notify:
   - restart php5-fpm
   - restart nginx

Ouvrez votre fichier + php.yml +:

nano php.yml

Ajoutez cette tâche nginx à la fin de la section des tâches. L’ensemble du fichier + php.yml + devrait maintenant ressembler à ceci:

php.yml

---
- hosts: php
 sudo: yes

 tasks:

 - name: install packages
   apt: name={{ item }} update_cache=yes state=latest
   with_items:
     - git
     - mcrypt
     - nginx
     - php5-cli
     - php5-curl
     - php5-fpm
     - php5-intl
     - php5-json
     - php5-mcrypt
     - php5-sqlite
     - sqlite3

 - name: ensure php5-fpm cgi.fix_pathinfo=0
   lineinfile: dest=/etc/php5/fpm/php.ini regexp='^(.*)cgi.fix_pathinfo=' line=cgi.fix_pathinfo=0
   notify:
     - restart php5-fpm
     - restart nginx

 - name: enable php5 mcrypt module
   shell: php5enmod mcrypt
   args:
     creates: /etc/php5/cli/conf.d/20-mcrypt.ini

 - name: create /var/www/ directory
   file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700

 - name: Clone git repository
   git: >
     dest=/var/www/laravel
     repo=https://github.com/laravel/laravel.git
     update=no
   sudo: yes
   sudo_user: www-data
   register: cloned

 - name: install composer
   shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
   args:
     creates: /usr/local/bin/composer

 - name: composer create-project
   composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no
   sudo: yes
   sudo_user: www-data
   when: cloned|changed

 - name: set APP_DEBUG=false
   lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false

 - name: set APP_ENV=production
   lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production

 - name: Configure nginx
   template: src=nginx.conf dest=/etc/nginx/sites-available/default
   notify:
     - restart php5-fpm
     - restart nginx

 handlers:
   - name: restart php5-fpm
     service: name=php5-fpm state=restarted

   - name: restart nginx
     service: name=nginx state=restarted

Enregistrez et lancez à nouveau le livre de lecture:

ansible-playbook php.yml --ask-sudo-pass

Une fois l’opération terminée, revenez dans votre navigateur et actualisez-le. Vous devriez maintenant voir la page du nouveau projet Laravel!

Conclusion

Ce tutoriel couvre le déploiement d’une application PHP avec un référentiel public. Bien qu’il soit parfait pour apprendre le fonctionnement d’Ansible, vous ne travaillerez pas toujours sur des projets entièrement ouverts avec des référentiels ouverts. Cela signifie que vous devrez authentifier le clone + git + à l’étape 3 avec votre référentiel privé. Cela peut être très facilement fait en utilisant des clés SSH.

Par exemple, une fois que vous avez créé et défini vos clés de déploiement SSH sur votre référentiel, vous pouvez utiliser Ansible pour les copier et les configurer sur votre serveur avant la tâche + git clone +:

- name: create /var/www/.ssh/ directory
 file: dest=/var/www/.ssh/ state=directory owner=www-data group=www-data mode=0700

- name: copy private ssh key
 copy: src=deploykey_rsa dest=/var/www/.ssh/id_rsa owner=www-data group=www-data mode=0600

Cela devrait permettre au serveur de s’authentifier correctement et de déployer votre application.

'' '' '

Vous venez de déployer une application PHP de base sur un serveur Web Nginx basé sur Ubuntu utilisant Composer pour gérer les dépendances! Tout cela a été effectué sans qu’il soit nécessaire de se connecter directement à votre PHP Droplet et d’exécuter une seule commande manuelle.

Related