OttoでDrupal 8をデプロむする

この投皿は、ハットコヌプの補品に関するレビュヌ蚘事がすでに掲茉されおいる最埌のHashicorp補品の1぀であるオットヌず知り合った結果ずしお刀明したした。



私の投皿はより実甚的です。 蚭定の耇雑さにすぐに぀たずかないように、暙準プロゞェクトをオットヌに䞊げるこずにしたした。そしお、それを面癜くするために、最近リリヌスされたDrupal 8を遞びたした。



画像



蚭眮



でタグ付けされた最新バヌゞョンは、2015幎10月20日付けの0.1.2です。 今埌は、すぐにMySQLを構成できなかったず蚀いたす。CHANGELOGを芋お、Layered Dev Environmentsのためにmasterブランチを詊すこずにしたした。



Otto 0.1.3-devにはVagrant 1.7.99+が必芁です。 安定バヌゞョンは1.7.4であるため、これはマスタヌブランチからVagrantも必芁であるこずを意味したす。 UPDVagrant 1.8がリリヌスされたため、Vagrantをビルドする必芁がなくなりたした。



䞡方のプロゞェクトのコンパむルに぀いおは、ottoずvagrantのペヌゞで詳しく説明されおいたす。GoずRubyの知識がなくおも、golangのむンストヌル、gopathの構成、䞡方のプロゞェクトのコンパむルに30分かかりたした。

䞻なこずは、远加するこずを忘れないこずです

export PATH="$GOPATH/bin:$PATH"
      
      





タヌミナルを再起動し、dev-versions 'vagrant version'、 'otto version'を実行しおいるこずを確認したす。



NFSセットアップ
オットヌには盎接圓おはたりたせんが、暙準的なvirualbox共有フォルダヌのひどいスロヌダりンに぀いお知ったずき、NFSを構成する必芁があるこずに気付きたした。



Ubuntuでは、nfs-common nfs-kernel-serverパッケヌゞをむンストヌルし、/ etc / sudoersに数行を远加するだけで十分です。Vagrantは起動するたびにパスワヌドを芁求したせん。詳现に぀いおは、ドキュメントを参照しおください。





プロゞェクトの準備



Drupal 8をダりンロヌドしたす。

 git clone https://github.com/drupal/drupal.git drupal8 cd drupal8
      
      





Appfile



Appfile-プロゞェクトのメむンのotto蚭定ファむルは、プロゞェクトのルヌトにある必芁がありたす。



䞀般に、たったく存圚しない堎合は、ottoがアプリケヌションを実行できる環境の芁件を決定したす。 アプリケヌションのタむプを決定するロゞックはどこにも簡単ではありたせん。たずえば、ルヌトに* .phpファむルがある堎合、プロゞェクトはphpずしお定矩されたす。



オットヌコンパむル



ottoが必芁ずする最初のコマンドは ' otto compile 'です。 プロゞェクトずそのAppfileを分析し、その埌、開発環境ず展開環境のすべおの構成情報を含むツリヌを.ottoフォルダヌに生成したす。



ドキュメントでは、このフォルダヌの内容を自分の手で支配しないこずを掚奚しおいたす。 しかし、あなたは芋るこずができ、芋るべきです。



.Ottoidも生成されたす。これは、アプリケヌションの䞀意の識別子です。これにより、どのottoがその展開を远跡し、履歎を保存し、䟝存関係ずしお䜿甚したす。



この時点で、環境が蚘述され、デプロむの準備ができたした。



otto dev



次に行うこずは、ロヌカルマシンにロヌカル開発環境を展開するこずです。

実際、otto devはvagrant upず同じです。



階局化された開発環境


レむダヌの抂念は興味深いです。レむダヌはDockerレむダヌに非垞に䌌おいたす。「otto dev」を初めお実行するず、Vagrant仮想環境が順番に蚭定され、各ステップの埌に写真が撮られたす。 レむダヌは、アプリケヌションのタむプで説明されおいたす。 これにより、開発環境を再䜜成する時間を倧幅に短瞮できたす。 したがっお、仮想マシンが完党に再䜜成された堎合でも、完成した環境を即座に起動できたす。 マシンの再起動ず再䜜成の違い「otto dev halt && time otto dev」ず「otto dev destroy && time otto dev」は玄5秒です。



changelogから刀断するず、vagrantは少なくずも次のバヌゞョンではこの機胜を受け取りたせんが、Vagrantにはスナップショットを䜜成する機胜がありたす。



「otto dev layers」コマンドでレむダヌを衚瀺できたす。

 $ otto dev layers consul php5.6
      
      





その結果、PHPアプリケヌションの堎合、ottoはさらに指瀺を発行する必芁がありたす。

 $ otto dev IP address: 100.66.143.21 A development environment has been created for writing a PHP app. You can access the environment from this machine using the IP address above. For example, if you start your app with 'php -S 0.0.0.0:5000', then you can access it using the above IP at port 5000.
      
      







自動チュヌニングで䜕が埗られたしたか



MySQLはDrupalが機胜するために非垞に䞍足しおいたす。



䟝存関係



MySQLを远加する最も簡単な方法は、䟝存関係を指定するこずです。 プロゞェクトのルヌトにAppfileを䜜成したす。

 application { name = "drupal8" type = "php" dependency { source = "github.com/hashicorp/otto/examples/mysql" } }
      
      





この構成は、アプリケヌションのタむプphpを明瀺的に瀺し、MySQLを䟝存関係ずしお远加したす。

゜ヌス内のリンクが無効であるずいう事実にもかかわらず、オットヌはそれを理解するでしょう、 他の゜ヌス圢匏がありたす 。



mysqlをさらに簡単に远加する方法はありたすが、間違っおいたす。それに぀いおいく぀か説明したす。



mysql appfileは、䟝存アプリケヌションをDockerコンテナヌ、コンテナヌむメヌゞぞのパス、およびスタヌトアップパラメヌタヌずしお蚘述したす。 結果ずしお、Vagrant内で実行䞭のコンテナヌを取埗したす。Consulのおかげで、mysql.service.consul仮想マシン内でナヌザヌずrootrootパスワヌドで利甚できるようになりたす。 デフォルトのConsulを䜿甚するず、Dockerの䜿甚がはるかに簡単になりたす。サヌビス怜出の蚭定の耇雑さを理解するこずはできたせんが、䜿甚するだけです。



他のアプリケヌションは䟝存関係になる可胜性がありたすが、アプリケヌションの名前が倉曎されおも、ottoが実行䞭の内容を理解できる.ottoidファむルを持぀こずを匷くお勧めしたす。



䟝存関係は珟圚、バヌゞョン管理をサポヌトしおいたせん将来远加するこずを玄束したす。぀たり、すべおのottoコンパむルで、期埅したものを取埗できない可胜性があるため、自分で䟝存関係をフォヌクするか、ロヌカルマシンに配眮する必芁がありたす。



「ottoコンパむル」、「otto dev destroy」、「otto dev」を実行したす。Drupalを起動するマシンを準備したす。 その䞭でサヌバヌを実行するために残りたす。



otto dev ssh



SSH経由で仮想マシンに入りたす。 䞊蚘のコマンドを実行しお、PHPの組み蟌みWebサヌバヌを起動したす。devのポヌト80でrootずしお実行しおも䜕も問題はありたせん。

 sudo php -S 0.0.0.0:80
      
      





その埌、「otto dev」を発行したブラりザヌでIPアドレスを開いお、「otto dev address」を実行するこずで明瀺的に取埗できたす。



欠点



生コヌド


䞀郚の堎所では、コヌドはかなりプロトタむプであるこずがわかりたす。 たずえば、Vagrantfileは、bashを䜿甚しお環境をデプロむしたす。これは、ansibleやそのようなものではありたせん。



私はアプリタむプのPHPコヌドを芋お、起動されおいるアプリケヌションがワヌドプレスであるずいう定矩が芋぀かりたしたwp-config.phpファむルの存圚による、暙準のPHPアプリケヌションずの唯䞀の違いはmysqlの自動远加です ぀たり、Appfileで「type = "wordpress"」を指定するか、「touch wp-config.php」を䜜成しおmysqlを取埗できるようになりたしたが、もちろん、これを行うべきではありたせん。



環境は蚭蚈されおいたせん


プロゞェクトの課題远跡ツヌルから刀断するず、ベストプラクティスはただ準備ができおおらず、どのように準備するかが完党には明確ではありたせん。 たずえば、PHPの堎合、PHPプロゞェクトの環境を知らないHashicorpず、Goを知らず、プルリク゚ストを送信できないPHPプログラマがいたす。



Ottoの䜜者であるMitchell Hashimotoは、Githubに改善点、正しい環境を備えた蚘事ぞのリンクなどの提案を曞くこずに興味のあるすべおの人を招埅したす。Hashicorpは補品ぞの統合を担圓したす。 埌の抜象化が珟れるず思われたす。これにより、さたざたな非囲programmerプログラマが補品の開発を支揎できるようになりたす。



Devはprodずは異なりたす


「オットヌむンフラ」および「オットヌデプロむ」コマンドには到達したせんでしたが、AWSのみをサポヌトするようになり、PHPプロゞェクトの堎合、開発環境はデプロむ環境ずは異なるこずがわかりたした。 apache2はmod-phpで䞊昇したす。



開発者がひどくカスタマむズされおいる


Ottoでは珟圚、Appfileを䜿甚しおVagrantfile開発環境をカスタマむズするこずはできたせん。 .otto / compile / app / dev / Vagrantfileを芋るず、NFSず互換性のないマりントオプション/ vagrantが曞き蟌たれおいるこずがわかりたす。 次のような行を修正したす。

 config.vm.synced_folder '/home/popstas/projects/site/drupal8', "/vagrant", type: "nfs"
      
      





次の「オットヌコンパむル」はこれらの倉曎を䞊曞きしたす。



それを正しく行う唯䞀の方法は、application type = "custom"を䜿甚しおVagrantfileを完党にオヌバヌラむドするこずですが、この堎合、環境を自動調敎する魔法はすべおなくなりたす。



結論



私は、Ottoをただ完党に䜿甚する準備ができおいないこずを自分で結論付けたした。これは、補品のバヌゞョン0.1で䞀般的に瀺唆されおいたす。 それにもかかわらず、この補品は非垞に興味深いものであり、Vagrantに比べおすでに利点がありたす。すべおの欠点はOttoの新芏性によっお説明され、開発者はそれらに぀いお知っおおり、削陀の蚈画を持っおいたす。



レむダヌがOttoに完党に衚瀺されるずきに、独自のレむダヌを䜜成する方法が明確ではありたせん。私にずっおは、Vagrantからレむダヌに切り替える十分な理由になりたす。



All Articles