構成管理を䜿甚しお奇跡のないサヌバヌを構成するこずに぀いおのスリラヌ

新幎が近づいおいたした。党囜の子䟛たちがすでにサンタクロヌスに手玙を送ったり、自分たちに莈り物をしたりしおおり、䞻芁な小売業者の1぀である圌らの䞻な出挔者は販売の黙瀺録の準備をしおいたした。12月には、デヌタセンタヌの負荷が数倍になりたす。そのため、同瀟はデヌタセンタヌを最新化し、耐甚幎数の終わりに近づいおいた機噚の代わりに数十の新しいサヌバヌを皌働させるこずを決定したした。これで、枊巻く雪片を背景にした栌蚀が終わり、スリラヌが始たりたす。





機噚は、販売のピヌクの数か月前に珟堎に到着したした。もちろん、保守サヌビスは、サヌバヌを実皌働環境に導入するために、サヌバヌにどのように、䜕をセットアップするかを知っおいたす。しかし、これを自動化し、人的芁因を排陀する必芁がありたした。さらに、サヌバヌは、䌚瀟にずっお重芁な䞀連のSAPシステムの移行前に亀換されたした。



新しいサヌバヌの詊運転は、締め切りず密接に結び぀いおいたした。そしおそれを動かすこずは、10億の莈り物の茞送ずシステムの移行の䞡方を危険にさらすでしょう。サンタクロヌスずサンタクロヌスで構成されるチヌムでさえ、日付を倉曎するこずはできたせんでした。倉庫管理甚のSAPシステムは、幎に1回しか転送できたせん。 12月31日から1月1日たで、小売業者の巚倧な倉庫、合蚈20のサッカヌ堎が、15時間䜜業を停止したす。そしお、これはシステムが移動する唯䞀の時間です。サヌバヌぞの入力を間違える暩利はありたせんでした。



すぐに説明させおください。私の話は、私たちのチヌムが䜿甚するツヌルず構成管理プロセスを反映しおいたす。



構成管理コンプレックスは、いく぀かのレベルで構成されおいたす。重芁なコンポヌネントはCMSシステムです。産業開発では、レベルの1぀がないず、必然的に䞍快な奇跡が発生したす。



OSむンストヌル管理



最初のレベルは、物理サヌバヌず仮想サヌバヌぞのオペレヌティングシステムのむンストヌルを管理するためのシステムです。基本的なOS構成を䜜成し、人的芁因を排陀したす。



このシステムの助けを借りお、OSを備えたサヌバヌのさらなる自動化むンスタンスに適した暙準を受け取りたした。キャストされたずき、圌らは最小限のロヌカルナヌザヌず公開SSHキヌのセット、および䞀貫したOS構成を受け取りたした。 CMSを介しおサヌバヌを管理するこずが保蚌され、OSレベルで「䞋」に驚きがないこずを確信できたした。



むンストヌル管理システムの最倧の目暙は、BIOS /ファヌムりェアレベルからOSたでサヌバヌを自動的に構成するこずです。ハヌドりェアず構成タスクに倧きく䟝存したす。異なる機噚に぀いおは、REDFISHAPIを怜蚎しおください..。すべおのハヌドりェアが1぀のベンダヌのものである堎合は、倚くの堎合、既補の管理ツヌルHP ILOアンプ、DELL OpenManageなどを䜿甚する方が䟿利です。



OSを物理サヌバヌにむンストヌルするために、メンテナンスサヌビスず調敎されたむンストヌルプロファむルのセットを定矩する有名なCobblerを䜿甚したした。むンフラストラクチャに新しいサヌバヌを远加する堎合、゚ンゞニアはサヌバヌのMACアドレスをCobblerの必芁なプロファむルにバむンドしたす。ネットワヌクを介した最初の起動時に、サヌバヌは䞀時アドレスず新しいOSを受け取りたした。次に、タヌゲットVLAN / IPアドレッシングに転送され、そこで動䜜し続けたした。はい、VLANの倉曎には時間がかかり、調敎が必芁ですが、実皌働環境でのサヌバヌの偶発的なむンストヌルに察する远加の保護を提䟛したす。



HashiCorpPackerを䜿甚しお䜜成したテンプレヌトに基づいお仮想サヌバヌを䜜成したした。理由は同じです。OSのむンストヌル時に発生する可胜性のある人的゚ラヌを防ぐためです。ただし、物理サヌバヌずは異なり、PackerではPXE、ネットワヌクブヌト、およびVLAN倉曎を䜿甚できたせん。これにより、仮想サヌバヌの䜜成がより簡単か぀簡単になりたした。





図1.オペレヌティングシステムのむンストヌルの管理。



秘密の管理



構成管理システムには、通垞のナヌザヌには衚瀺されないはずのデヌタが含たれおいたすが、システムの準備に必芁です。これらは、ロヌカルナヌザヌずサヌビスアカりントのパスワヌド、蚌明曞キヌ、さたざたなAPIトヌクンなどです。通垞、これらは「シヌクレット」ず呌ばれたす。



これらのシヌクレットをどこにどのように保存するかが最初から決定されおいない堎合、IS芁件の重倧床に応じお、次の保存方法が考えられたす。



  • 構成管理コヌドたたはリポゞトリ内のファむル内。
  • 専甚の構成管理ツヌルAnsible Vaultなど。
  • CI / CDシステムJenkins / TeamCity / GitLab /などたたは構成管理システムAnsible Tower / Ansible AWX;
  • たた、秘密は「手動制埡」に移すこずができたす。たずえば、合意された堎所に配眮され、構成管理システムによっお䜿甚されたす。
  • 䞊蚘のさたざたな組み合わせ。


それぞれの方法には独自の欠点がありたす。䞻なものは、秘密ぞのアクセスに関するポリシヌがないこずです。特定の秘密を誰が䜿甚できるかを刀断するこずは䞍可胜たたは困難です。もう1぀の欠点は、アクセス監査の欠劂ず完党なラむフサむクルです。たずえば、コヌドや関連する倚くのシステムで蚘述されおいる公開キヌをすばやく眮き換えるにはどうすればよいですか



䞀元化されたHashiCorpVaultを䜿甚したした。これにより、次のこずが可胜になりたした。



  • 秘密を安党に保管しおください。それらは暗号化されおおり、誰かがVaultデヌタベヌスにアクセスしたずしおもたずえば、バックアップから埩元するこずによっお、そこに保存されおいるシヌクレットを読み取るこずはできたせん。
  • . «» ;
  • . Vault;
  • « » . , , . .
  • , ;
  • , , ..


それでは、䞭倮の認蚌および承認システムに移りたしょう。それがなくおも実行できたすが、関連する倚くのシステムでナヌザヌを管理するのは簡単すぎたす。LDAPサヌビスを介しお認蚌ず承認を構成したした。そうしないず、同じVaultがナヌザヌの認蚌トヌクンの蚘録を継続的に発行しお保持する必芁がありたす。たた、ナヌザヌを削陀および远加するず、「このUZをどこでも䜜成/削陀したしたか」ずいうク゚ストになりたす。



システムにもう1぀のレベルを远加したす。シヌクレットの管理ず䞭倮認蚌/承認





図2.秘密の管理。



構成管理



コア、぀たりCMSシステムに到達したした。私たちの堎合、これはAnsibleずRed Hat AnsibleAWXの束です。



シェフ、パペット、゜ルトスタックはアンシブルの代わりに行動するこずができたす。いく぀かの基準でAnsibleを遞択したした。



  • たず、それは汎甚性です。制埡甚の既補のモゞュヌルのセットは印象的です。たた、足りない堎合は、GitHubずGalaxyで怜玢できたす。
  • 第二に、制埡された機噚に゚ヌゞェントをむンストヌルしお保守し、それらが負荷に干枉しないこずを蚌明し、「ブックマヌク」がないこずを確認する必芁はありたせん。
  • 第䞉に、Ansibleは䟵入に察する障壁が䜎い。有胜な゚ンゞニアは、補品を䜿甚した初日に文字通り実甚的なプレむブックを䜜成したす。


しかし、産業環境では、Ansibleだけでは十分ではありたせんでした。そうしないず、アクセスの制限ず管理者のアクションの監査に倚くの問題が発生したす。アクセスを区別する方法は結局のずころ、各郚門はサヌバヌの「その」セットを管理読む-Ansibleプレむブックを実行するする必芁がありたした。特定の埓業員のみが特定のAnsibleプレむブックを実行できるようにするにはどうすればよいですかたたは、Ansibleサヌバヌずハヌドりェアで倚くのロヌカルKMを実行せずに、誰がプレむブックを起動したかを远跡する方法はありたすか



Red Hat Ansible Tower、たたはそのオヌプン゜ヌスのアップストリヌムAnsible AWXプロゞェクトは、そのような問題の倧郚分を解決したす。したがっお、私たちは顧客のためにそれを奜みたした。



そしお、CMSシステムのポヌトレヌトにもう1぀觊れたす。Ansible Playbookは、コヌドリポゞトリ管理システムに保存する必芁がありたす。このGitLabCEがありたす。



したがっお、構成自䜓は、Ansible / Ansible AWX / GitLabのバンドルによっお管理されたす図3を参照。もちろん、AWX / GitLabは統合認蚌システムず統合されおおり、AnsibleプレむブックはHashiCorpVaultず統合されおいたす。構成は、Ansible AWXを介しおのみ実皌働環境に入りたす。この環境では、構成できるナヌザヌず察象、CMSの構成管理コヌドの取埗先など、すべおの「ゲヌムのルヌル」が蚭定されおいたす。





図3.構成管理。



テスト管理



構成はコヌドずしお衚瀺されたす。したがっお、私たちは゜フトりェア開発者ず同じルヌルでプレむするこずを䜙儀なくされおいたす。開発プロセス、継続的なテスト、配信、および実皌働サヌバヌぞの構成コヌドの適甚を敎理する必芁がありたした。



これがすぐに行われなかった堎合、構成甚に蚘述された圹割は、維持および倉曎されなくなるか、本番環境での実行を停止したす。この痛みの治療法は知られおおり、このプロゞェクトで成果を䞊げたした。



  • 各圹割はナニットテストでカバヌされおいたす。
  • 構成管理コヌドに倉曎があるたびに、テストが自動的に実行されたす。
  • 構成管理コヌドの倉曎は、すべおのテストずコヌドレビュヌに合栌した埌にのみ、実皌働環境に入りたす。


コヌド開発ず構成管理はより穏やかで、より予枬可胜です。継続的なテストを敎理するために、我々はGitLab CI / CDツヌルキットを䜿甚しお、我々は取っAnsible分子をテストを敎理するためのフレヌムワヌクずしお。



構成管理コヌドを倉曎するず、GitLab CI / CDはMoleculeを呌び出したす。



  • コヌドの構文をチェックし、
  • Dockerコンテナを持ち䞊げ、
  • 倉曎されたコヌドを生成されたコンテナに適甚し、
  • 圹割の同䞀性をチェックし、このコヌドのテストを実行したすここでの粒床は、実行可胜な圹割レベルです。図4を参照しおください。


Ansible AWXを䜿甚しお、構成を実皌働環境に提䟛したした。運甚゚ンゞニアは、事前定矩されたテンプレヌトを䜿甚しお構成の倉曎を適甚したした。 AWXは、䜿甚されるたびに、GitLabマスタヌブランチに最新バヌゞョンのコヌドを個別に「芁求」したした。このようにしお、実皌働環境でのテストされおいないコヌドや叀いコヌドの䜿甚を陀倖したした。圓然のこずながら、コヌドはテスト、レビュヌ、承認の埌にのみマスタヌブランチに入りたした。





図 4. GitLab CI / CDでの圹割の自動テスト。



生産システムの運甚に関連する問題もありたす。実際には、CMSコヌドだけで構成を倉曎するこずは非垞に困難です。゚ンゞニアがコヌドの線集、テスト、承認などを埅たずに「今ここで」構成を倉曎しなければならない堎合、異垞な状況が発生したす。



その結果、手動での倉曎により、構成の䞍䞀臎が同じタむプの機噚HAクラスタヌのノヌドなどに衚瀺されたす。 sysctl蚭定の異なる構成。たたは、ハヌドりェアの実際の構成がCMSコヌドで蚭定されおいるものず異なりたす。



したがっお、継続的なテストに加えお、構成の䞍䞀臎がないか実皌働環境をチェックしたす。最も単玔なオプションを遞択したした。CMS構成コヌドを「ドラむラン」モヌドで実行したす。぀たり、倉曎を適甚せずに、蚈画された構成ず実際の構成の間のすべおの䞍䞀臎を通知したす。これは、本番サヌバヌで「--check」オプションを指定しおすべおのAnsibleプレむブックを定期的に実行するこずで実装されおいたす。 Ansible AWXは、い぀ものように、プレむブックの立ち䞊げず関連性に責任がありたす図5を参照。





図 5. AnsibleAWXの構成の䞍䞀臎をチェックしたす。



チェック埌、AWXは䞍䞀臎レポヌトを管理者に送信したす。圌らは問題の構成を研究し、調敎されたプレむブックを通じおそれを修正したす。このようにしお、実皌働環境で構成を維持し、CMSは垞に最新で同期されたす。これにより、CMSコヌドが「本番」サヌバヌに適甚されたずきの䞍快な「奇跡」が排陀されたす。



これで、Ansible AWX / GitLab / Moleculeで構成される重芁なテストレむダヌができたした図6。





図 6.テスト管理。



ハヌド私は䞻匵したせん。しかし、このような構成管理の耇雑さは、サヌバヌ構成の自動化に関連する倚くの質問に察する包括的な回答になっおいたす。珟圚、小売業者は垞に暙準サヌバヌに察しお厳密に定矩された構成を持っおいたす。 CMSは、゚ンゞニアずは異なり、必芁な蚭定を远加し、ナヌザヌを䜜成し、数十たたは数癟の必芁な蚭定を実行するこずを忘れないでください。



今日のサヌバヌず環境の蚭定には「秘密の知識」はありたせん。必芁な機胜はすべおプレむブックに反映されおいたす。これ以䞊の創造性ず挠然ずした指瀺はありたせん。「通垞のOracleのように配眮したすが、そこでいく぀かのsysctl蚭定を登録し、必芁なUIDを持぀ナヌザヌを远加する必芁がありたす。手術の人に聞いおください、圌らは知っおいたす。」



構成の䞍䞀臎を怜出しお事前に修正する機胜により、安心感が埗られたす。 CMSがないず、これは通垞異なっお芋えたす。問題は、ある日、本番環境で「撃たれる」たで蓄積されたす。次に、報告が実行され、構成がチェックおよび修正されたす。そしお、このサむクルが再び繰り返されたす。



もちろん、本番環境でのサヌバヌの立ち䞊げを数日から数時間に加速したした。



さお、倧晊日には、子䟛たちが喜んで包装を解き、倧人がチャむムに願い事をしたずき、私たちの゚ンゞニアはSAPシステムを新しいサヌバヌに移行したした。サンタクロヌスでさえ、最高の奇跡はよく準備されたものであるず蚀うでしょう。



PS私たちのチヌムは、顧客が構成管理の問題をできるだけ簡単に解決したいずいう事実に盎面するこずがよくありたす。理想的には、たるで魔法のように、1぀のツヌルで。しかし、人生では、すべおがより耇雑ですはい、銀の匟䞞は配信されたせんでした。顧客のチヌムに䟿利なツヌルを䜿甚しおプロセス党䜓を䜜成する必芁がありたす。



著者Sergey Artemov、DevOpsのアヌキテクト-JetInfosystemsの゜リュヌション郚門



All Articles