samedi 20 janvier 2018

Comment utiliser Chef et créer automatiquement des serveurs PHP

Téléchargez et installer Chef:
https://downloads.chef.io/chefdk

Vous pouvez télécharger Chef pour Windows sur le site web:


Apres le téléchargement, démarrez Chef:

Et vous verrez Powershell de Windows:


Exécutez cette commande et appuyez sur la touche y du clavier:
Set-ExecutionPolicy RemoteSigned
Fermez ChefDK et le réouvrir.

Créez un dossier pour Chef. Par exemple, C:\Users\John\Documents\chef.


Allez au dossier dans Powershell.
cd C:\Users\John\Documents\chef

Installez knife-zero:
gem install knife-zero

Créez un projet de Chef:
chef generate repo .

Les dossiers sont crées ainsi:

Supprimez le dossier d'exemple. Et créez "config.rb" un fichier de configuration.
rm -d -force -r cookbooks/example
rm -d -force -r data_bags/example
rm -force -r environments/example.json
rm -force -r roles/example.json
touch config.rb

Ajoutez "berks-cookbooks" dans le fichier ".gitignore". (n'importe où dans le fichier)

Ajoutez "cookbook_path ['berks-cookbooks']" dans le fichier "config.rb".


Créez un projet.
chef generate cookbook cookbooks/proj_lamp

Ensuite, on va créer un serveur virtuel. Créez un dossier d'un serveur virtuel et démarrer le serveur avec vagrant dans l'invite de commandes. (Pas Powershell maintenant)

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



Changez le fichier de Vagrantfile et utiliser private network.

Et démarrez le serveur virtuel.
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. La commande "ssh-config" est pour créer un fichier de configuration et pouvoir connecter la machine virtuelle facilement.

Maintenant, 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

Installer httpd


Allez au dossier de cookbooks/app_httpd et ajouter cookbook 'yum-ius' dans chef/cookbook/app_httpd/Berksfile:




Ajoutez depends 'yum-ius' dans chef/cookbook/app_httpd/metadata.rb:




Ajoutez les lignes de codes ci-dessous dans chef/cookbook/app_httpd/recipes/default.rb
include_recipe 'yum-ius'

package 'httpd' do
  action   :install
end

bash 'link_html' do
  code <<-EOH
    sudo rm -rf /var/www/html
    sudo ln -fs /vagrant /var/www/html
    EOH
end

service 'httpd' do
    action [:enable, :start]
end




Installer MySQL


Maintenant, il faut ajouter cookbook 'yum-ius' dans chef\cookbooks\app_mysql_server\Berksfile.
Ajoutez depends 'yum-ius' dans chef\cookbooks\app_mysql_server\metadata.rb.
Ajoutez les lignes de code ci-dessous dans chef\cookbooks\app_mysql_server\default.rb :
include_recipe 'yum-ius'

package ['mariadb-server', 'mariadb-libs'] do
  action   :remove
end

bash 'wget_mysql' do
  code <<-EOH
    cd /vagrant
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    EOH
end

bash 'rpm_mysql57' do
  code <<-EOH
    cd /vagrant
    sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
    EOH
end

package 'mysql-server' do
  action   :install
end

service 'mysqld' do
    action [:enable, :start]
end

Installer PHP

Maintenant, ajoutez cookbook 'yum-ius' dans chef\cookbooks\app_php71u\Berksfile.
Ajoutez depends 'yum-ius' dans chef\cookbooks\app_php71u\metadata.rb.
Ajoutez les lignes de codes ci-dessous dans chef\cookbooks\app_php71u\recipes\default.rb.
include_recipe 'yum-ius'

package ['php', 'mod_php', 'php-common', 'php-cli', 'php-intl', 'php-json', 'php-mbstring', 'php-xml'] do
  action   :remove
end

# for any framework
package 'php71u'
package 'php71u-cli'
package 'php71u-intl'
package 'php71u-json'
package 'php71u-mbstring'
package 'php71u-xml'

Ajoutez cookbook 'yum-ius' dans chef\cookbooks\app_php71u_mysqlnd\Berksfile.
Ajoutez depends 'yum-ius' dans chef\cookbooks\app_php71u_mysqlnd\metadata.rb.
Ajoutez ci-dessous dans chef\cookbooks\app_php71u_mysqlnd\recipes\default.rb.
include_recipe 'yum-ius'

# libmysql is windows only
package ['php-mysql', 'php-mysqli', 'php-pdo', 'php-mysqlnd'] do
  action   :remove
end

# for any framework
package 'php71u-mysqlnd'
package 'php71u-pdo'


Mettre le projet à jour


Ajoutez les lignes de codes ci-dessous dans chef/cookbooks/proj_lamp/Berksfile
apps_path = 'C:/Users/John/Documents/chef/cookbooks/'
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 le lignes de code ci-dessous dans chef/cookbooks/proj_lamp/metadata.rb
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_lamp/recipes/default.rb
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

Exécutez ces commandes et mettre le projet à jour:
berks update -b cookbooks/proj_lamp/Berksfile
berks vendor -b cookbooks/proj_lamp/Berksfile --delete

Creez l'environment de PHP:
knife zero bootstrap CentOsChef -N chef_lamp -z -r 'recipe[proj_lamp]' --sudo
Et un serveur de PHP est créé automatiquement dans votre machine virtuelle.

Si vous voulez exécuter knife zero bootstrap.... une nouvelle fois, s'assurer qu'il n'y a pas chef_lamp.json dans ces dossiers chef\clients et chef\nodes. S'il y a chef_lamp.json, knife zero bootstrap.... ça ne fonctionnera pas.

Aucun commentaire:

Enregistrer un commentaire