オットヌ、浮浪者盞続人に䌚う

OttoはVagrantの論理的な埌継者であるHashicorpの新補品であり、クラりドテクノロゞヌの珟代䞖界でプログラムの開発ず展開のプロセスを簡玠化するように蚭蚈されおいたす。 問題に察する抂念的に新しいアプロヌチ、実蚌枈みの技術、オヌプン゜ヌス。 個人甚DevOps開発アシスタント。







はじめに



有名なVagrantであるHashicorpの創蚭者であるMitchell Hashimotoの最初の補品は、開発プロセスの自動化ずプログラムの展開のための高品質補品のチェヌン党䜓の基盀を築きたした。 Packerは、VirtualBox、Docker、Google Cloudなど、仮想マシンの最終むメヌゞの䜜成を支揎したす。 Terraformは、特定のプロバむダヌを参照せずに、クラりドでむンフラストラクチャ党䜓を構築する耇雑なプロセスを䜜成し、構成レベルにもたらしたす。 ConsulずSerfは、クラりドでの通信サヌビスの発芋、クラッシュの監芖などを担圓したす。 Vaultは、秘密、パスワヌド、機密デヌタの信頌性の高い分散リポゞトリであり、監査、アクセス制埡、キヌの取り消しが可胜です。



これらの補品はすべおオヌプン゜ヌスであり、Goで蚘述され、盎感的なむンタヌフェむスずAPIを備え、䜜成されたタスクを適切に実行するため、非垞によく曞かれ、文曞化され、むンストヌルが簡単です。 正しく䜿甚すれば、これらを組み合わせお䜿甚​​するこずで、マむクロサヌビス、クラりド、仮想マシン、コンテナヌを扱う珟代の開発者の生掻が倧幅に促進されたす。



開発者は、クラりドで簡単なこずをするためにdevops-prosである必芁はもうありたせん。䞊蚘のプログラムは、自分自身の䞻な頭痛の皮を取り、別のdevops-departmentに移行しようずしたす。 それでも、これらはマスタヌする必芁がある6぀の個別のプログラムであり、ドキュメントを読んで孊習したす。 これは、「[ruby / php / etc]を[aws / gae / do / etc]にデプロむする方法」ずいうリク゚ストを発行するGoogleの最初のペヌゞからの昔ながらのコピヌペヌストが、スタックのクラりドにデプロむする最も䞀般的な方法であるずいう事実に぀ながりたす。



さらに、コピヌペヌストでも誰かのPacker / Terraform-configたたはVagrantfileでも、バヌゞョンの倉曎、URLの倉曎、新しいプロトコルぞの切り替えなど、遅かれ早かれそれらはすべお廃止されたす。 さらに、最初のバヌゞョンのVagrantナヌザヌは、アプリケヌションを展開する機胜の远加を求めおいたす。 しかし、Vagrantfileはそのようなこずを蚘述するための完党に異なるレベルの抜象化です。



これらすべおにより、ハシコヌプは問題に察する新しいアプロヌチが必芁であるずいう認識に至りたした。



コヌド化vs. 化石化



これらの甚語を正しく翻蚳する方法はわかりたせんが、「ミむラ化」に察しお「コヌディング」をさせおください。 Hashiconf䌚議で䞡方の補品が発衚されおから数日埌、ニュヌペヌクのDigitalOceanオフィスでOttoおよびHashicorpのシェダヌであるNomad のプレれンテヌションに参加できたこずは幞運でした。



Vagrant、Packer、Terraformが行うこずは、開発環境をミむラ化するこずです。 プログラムの開発に必芁なすべおのもの、すべおの蚭定、リンク、およびコマンドを芏定したす。これにより、10幎経っおも、開発者は珟圚ず同じ開発環境を1察1で開発できたす。



しかし、10幎埌に、コンパむラたたはフレヌムワヌクの元のURLが既に倉曎されおいる堎合はどうでしょうか たたは、䞖界は新しいYTTP3プロトコルに切り替えたしたか 党員がVagrantファむルを曎新する必芁がありたす。 これで、Packerは画像をAmazonおよびDigitalOceanにアップロヌドする方法ずVPCを䜜成する方法を知っおいるので、これを慎重に芏定しおいたすが、1幎でAmazonがAPIを倉曎し、ネットワヌク内に新しいセキュリティモデルを導入したり、Packerが自動的に行うその他のむノベヌションを远加した堎合/ terraformファむルは廃止されおいたすか



Ottoは、この問題に察する抂念的に新しいアプロヌチを提䟛したす。これは、開発環境ず展開を䜜成するプロセスを「コヌディング」しおいたす。 オットヌに䜕をしたいかを䌝えたす「Goの私のアプリケヌションはAWSで実行し、mysql-baseず通信し、ポヌトをよく芋る必芁がありたす」。オットヌはさらに、すべおの魔法を実行したす。正しいこずをしおください。



怖いですね。 よく芋おみたしょう。



詳现



ボンネットの䞋では、オットヌは同じVagrant、Packer、Terraform、Consul、Vaultを䜿甚しおおり、実際、それらの存圚を知る必芁さえありたせん。 䜕かがむンストヌルされおいない堎合-䟿利な圢匏のオットヌは、それらをダりンロヌドしおむンストヌルするかどうかを尋ねたす。



さらに、暙準のワヌクフロヌはVagrantでの䜜業ず非垞に䌌おいたす。





Ottoは1぀のファむルのみを䜿甚したす-単玔なケヌスでは、オットヌはプロゞェクトのタむプを掚枬できるなど、単玔な堎合でも必芁ないAppfileです。 ファむル圢匏はHashikorp HCLで、読み取りず曞き蟌みが簡単です。 アプリファむルの䟋



application { name = "otto-getting-started" type = "ruby" } project { name = "otto-getting-started" infrastructure = "otto-getting-started" } infrastructure "otto-getting-started" { type = "aws" flavor = "simple" }
      
      





otto コンパむルフェヌズはAppfileを読み取り、次のような.ottoサブディレクトリを再䜜成したす。







これは、「コヌディング」ず「ミむラ化」の違いを反映する重芁なポむントです。 Appfileが倉曎されるか、オットヌが曎新されるたびに、 オットヌ・コンパむル・コマンドはこれらすべおのフヌド内郚を曎新し、Vagrant、Packer、およびTerraformに必芁な構成を䜜成したす。 䟝存関係をむンストヌルしお環境を準備する方法の「ベストプラクティス」が倉曎された堎合、コンパむル段階でotto-environmentが曎新されたす。 コンパむルコマンドを実行しない堎合、ottoはコンパむル枈みのAppfileのバヌゞョンで動䜜したす。



環境を準備する段階 オットヌ開発 者は、実際には、 浮浪者の初期化ず浮浪者を眮き換えたす 。 仮想マシンが䞊昇したすこれたでのずころUbuntu hashicorp / precise64のみですが、将来OSにも遞択肢がありたす、ネットワヌクが構成され、SSHキヌ、䟝存関係、および必芁なパッケヌゞがむンストヌルされたす-䞀般的に、プロゞェクトぞの新芏参入者が簡単に実行できるようにするすべおの魔法otto dev sshコマンドを実行しお、開発環境に入りたす。



プログラムの準備ができたら、オットヌはアプリケヌションをクラりドにデプロむするタスクを匕き受けるこずができたす。 開発者は、Webサヌバヌ、仮想プラむベヌトネットワヌク、およびその他の詳现蚭定の耇雑さをすべお知る必芁がなくなりたした。 オットヌを䜿甚した展開サむクルは、むンフラストラクチャの構築、アプリケヌションむメヌゞの構築、および実際の展開ずいう3぀のステップで構成されたす。





ここでの「むンフラストラクチャ」ずは、クラりドサヌビスの特定の各プロバむダヌに関連付けられたすべおのリ゜ヌスを意味したす。 otto infraは、サブネットを䜜成し、ルヌティング、芁塞ホスト、ゲヌトりェむ、VPCなどを構成したす。これらは通垞、倚くのこずを読んで、どのように機胜するかを理解するのに長時間必芁です。 Ottoはこのすべおの負荷を自分で負担したす。圌はすべおのベストプラクティスを順守しお、これらすべおを凊理する方法を「知っお」おり、最適な方法でそれを実行したす。 さたざたなむンフラストラクチャオプションは「フレヌバヌ」ず呌ばれ、さたざたなオプションを説明したす-「SSHアクセスを備えたクラりド内の単玔なマシン」、「IPが倖向きのプラむベヌトネットワヌク」など。 内郚では、Terraformがすべおを実行したす。



次のステップ「otto build」ず「otto deploy」は、クラりドで実行する準備ができおいるむメヌゞを収集し、むンスタンスを起動したす。 AMIコンテナたたはDockerコンテナ、たたはottoが将来サポヌトする他のあらゆるコンテナです。



ずおも簡単です。 これで、PHPのWebサむトデザむナヌでさえ、プロゞェクトの同期、オットヌの起動、クラりドでのWebサむトの起動が可胜になりたした。



さお、兞型的な開発者ワヌクフロヌの最埌は、 `destroy`コマンドです。





繰り返したすが、オットヌはクラりドテクノロゞヌ、蚀語、およびフレヌムワヌクの開発および倉曎に䌎い進化したすが、オットヌを操䜜するための䞀連のアクションずアルゎリズムは倉曎されたせん。



マむクロサヌビス



珟代のクラりドアプリケヌションは、倚くの堎合、䜕らかの圢でマむクロサヌビスアヌキテクチャを䜿甚し、各アプリケヌションは他のアプリケヌションに䟝存しおいるこずが倚く、すべおの䟝存関係を正しく䞊げるこずは非垞に困難です。 Ottoもこの問題に取り組み、䟝存関係の抂念を䜿甚したす。䟝存関係の抂念はAppfileに蚘述され、䟝存関係URLの圢匏を持ち、これもたたottoプロゞェクトです。 たずえば、プロゞェクトがMongoDBに䟝存しおいる堎合



 application { name = "otto-getting-started" type = "ruby" dependency { source = "github.com/hashicorp/otto/examples/mongodb" } }
      
      





開発環境にログむンするこずで、DNSアドレス ` mongodb.service.consul`でmongodbにアクセスできたす。

これはすべお、理論的には、倚くの耇雑な䟝存関係を持぀サヌビスの開発を倧幅に簡玠化するはずです。



珟圚の制限



Ottoは1週間前にリリヌスされ、バヌゞョン0.1であり、これたでのずころ倚くのこずをサポヌトしおいたせん。 珟時点では、GoPHP、Docker䟝存関係、Node.js、Rubyのサポヌトマゞックが実装されおいたすが、これも非垞に制限されおいたす。 珟圚、デプロむはAmazonでのみサポヌトされおいたすが、他のプロバむダヌはたもなく远加されたす。 オットヌ自䜓はこれを行わず、Azure、CloudFlare、DigitalOcean、GAE、Heroku、OpenStackなどをサポヌトするTerraformずPackerを䜿甚するため、ここでは楜芳的になりたす。



どこでもカスタムVagrantfileたたはTerraform-configsを指定するこずができたす。これにより、非垞に簡単で拡匵性が高く、非垞に非暙準で掗緎されたスキヌムにも適甚できたす。



結論



この蚘事を曞いおいる時点では、オットヌはただ奜奇心をそそっおいたすが、ボンネットの䞋のボンネットの䞋で非垞によくテストされたツヌルを䜿甚しおいたす。 オットヌ自䜓のアむデアに関しおは、開発者向けの魔法のDevOpsアシスタントがそれ自䜓を蚌明し、時間が経おばわかるでしょう。



個人的には、ハシコヌプの掻動は、長い間私に䞀぀の印象を䞎えたした。圌らは䜕をしおいるかを知っおいお、ゆっくりですが確実にこの目暙に向かっお動きたす。 ミッチェルはスピヌチの䞭で、オットヌのアむデアは長い間あるず蚀っおいたしたが、このレベルのプロゞェクトをれロから䜜成するこずはできないず理解しおいたした。 したがっお、毎幎、その実装のために地面、キュヌブを準備したした。 ずころで、 遊牧民もこれらのサむコロの1぀であり、たもなくオットヌでもサポヌトされたす。



さらに、開発は非垞に掻発であり、Hashicorpのコヌドは非垞に高品質であり、Hashimotoの生産性に関する䌝説は人気があり、過去数幎で玠晎らしい進歩を芋せおいたす。 Hashicorpは、クラりドでの䜜業の利䟿性のために゚コシステム党䜓を䜜成したす。



そのため、指をパルスに合わせおください。



参照資料



Ottoには優れたWebサむトずドキュメントがありたす www.ottoproject.io

Hashicorp Webサむト hashicorp.com



All Articles