lundi 22 janvier 2018

Comment utiliser Chef et créer l'environnement de laravel automatiquement

Suivez les étapes d'ici et créez les cookbooks pour l'environnement de PHP.
Après, vous devriez avoir les cookbooks comme ca:


Créer Virtual Box pour chef


Nous allons créer une machine virtuelle. Créez un dossier pour le machine virtuelle et Vagrant. Et exécutez ces commandes dans l'invite de commandes. (Pas dans Powershell)


(Si vous ne savez pas comment utiliser Vagrant)
cd C:\Users\John\Documents\vagrant\CentOsChef
vagrant init bento/centos-7.3



Changez le fichier "Vagrantfile" et utiliser le "private network".

Et démarrez la machine virtuelle.
vagrant up

S'assurer qu'il y a un dossier .ssh dans C:\Users\John. Si il  n'y en a pas, créez le dossier comme ça:
cd C:\Users\John
mkdir .ssh




Et exécutez ces commandes :
cd C:\Users\John\Documents\vagrant\CentOsChef
vagrant ssh-config --host CentOsChef >> %USERPROFILE%/.ssh/config
"CentOsChef" est le nom de votre machine virtuelle. "ssh-config" commande est pour créer un fichier de configuration et pouvoir connecter la machine virtuelle facilement.

Ensuite, dans Powershell, créez cookbooks:
cd C:\Users\John\Documents\chef
chef generate cookbook cookbooks/app_httpd
chef generate cookbook cookbooks/app_mysql_server
chef generate cookbook cookbooks/app_php71u
chef generate cookbook cookbooks/app_php71u_mysqlnd

Créer un cookbook pour laravel


Ouvrez Powershell (ChefDK) et aller au dossier de Chef:
cd C:\Users\John\Documents\chef

Créez un cookbook pour laravel environment.
chef generate cookbook cookbooks/proj_laravel


Mettre la machine virtuelle à jour


Créez un cookbook pour mettre la machine virtuelle à jour:
chef generate cookbook cookbooks/vagrant_update

Ajoutez depends 'yum-ius' dans chef\cookbooks\vagrant_update\metadata.rb.
Ajoutez cookbook 'yum-ius' dans chef\cookbooks\vagrant_update\Berksfile.
Ajoutez les lignes de code ci-dessous dans chef\cookbooks\vagrant_update\recipes\default.rb:
include_recipe 'yum-ius'

package ['kernel-devel', 'kernel-headers', 'dkms', 'gcc', 'gcc-c++'] do
  action   :install
end

package 'kernel' do
  action   :upgrade
end


Mettre le cookbook de laravel à jour



Ajoutez les lignes de code ci-dessous dans chef\cookbooks\proj_laravel\Berksfile
apps_path = 'C:/Users/Shu/Documents/chef/cookbooks/'
cookbook 'vagrant_update',     path: apps_path + 'vagrant_update'
cookbook 'app_httpd',           path: apps_path + 'app_httpd'
cookbook 'app_mysql_server', path: apps_path + 'app_mysql_server'
cookbook 'app_php71u',             path: apps_path + 'app_php71u'
cookbook 'app_php71u_mysqlnd',     path: apps_path + 'app_php71u_mysqlnd'

Ajoutez les lignes de code ci-dessous dans chef\cookbooks\proj_laravel\metadata.rb
depends 'vagrant_update'
depends 'app_httpd'
depends 'app_mysql_server'
depends 'app_php71u'
depends 'app_php71u_mysqlnd'

Ajoutez les lignes de code ci-dessous dans chef\cookbooks\proj_laravel\recipes\default.rb
include_recipe 'vagrant_update'
include_recipe 'app_httpd'
include_recipe 'app_mysql_server'
include_recipe 'app_php71u'
include_recipe 'app_php71u_mysqlnd'

service 'httpd' do
    action :restart
end

service 'mysqld' do
    action :restart
end

bash 'install_composer' do
  code <<-EOH
    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    EOH
end

bash 'laravel_install' do
  code <<-EOH
    cd /vagrant
    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    composer create-project --prefer-dist laravel/laravel laravel
  EOH
end

bash 'set_permission' do
  code <<-EOH
    chmod -R 777 /vagrant/laravel/storage
  EOH
end

ruby_block "httpd conf replace to make allowOverride all" do
  block do
    fe = Chef::Util::FileEdit.new("/etc/httpd/conf/httpd.conf")
    fe.search_file_replace(/\<Directory \"\/var\/www\/html\"\>[\s\S\n]*?\<\/Directory\>/,
                               "<Directory \"/var/www/html\" />Options FollowSymLinks\nAllowOverride All\nRequire all granted\n</Directory>")
    fe.write_file
  end
end

ruby_block "httpd conf replace to change document root" do
  block do
    fe = Chef::Util::FileEdit.new("/etc/httpd/conf/httpd.conf")
    fe.search_file_replace(/DocumentRoot \"\/var\/www\/html\"/,
                               "DocumentRoot \"/var/www/html/laravel/public\"")
    fe.write_file
  end
end

service 'httpd' do
    action :restart
end

service 'mysqld' do
    action :restart
end

Mettez les fichiers de Chef dans Powershell (ChefDK).
berks vendor -b cookbooks/proj_cake3/Berksfile --delete

Exécutez la commande ci-dessous et créer Laravel environment.
knife zero bootstrap CentOsChef -N chef_laravel -z -r 'recipe[proj_laravel]' --sudo

Attendez jusqu'à vous voyez le résultat dans Powershell (ChefDK)....
Après, vous pouvez aller à http://192.168.33.10/ et voir la page de laravel.









Aucun commentaire:

Enregistrer un commentaire