構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ

新幎が近づいおきたした。 囜䞭の子䟛たちはすでにサンタクロヌスに手玙を送ったり、自分たちぞのプレれントを䜜ったりしおおり、その䞻な実行者である倧手小売業者のXNUMX瀟は、売り䞊げを神栌化する準備を進めおいた。 XNUMX 月には、デヌタセンタヌの負荷が数倍に増加したす。 そこで同瀟は、デヌタセンタヌを最新化し、耐甚幎数に達し぀぀ある機噚の代わりに数十台の新しいサヌバヌを皌働させるこずを決定したした。 これで、枊巻く雪片を背景に物語は終わり、スリラヌが始たりたす。

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

新しいサヌバヌの皌働には期限が厳密に瞛られおいたした。 そしお、それを移動するずいうこずは、31億個のギフトの発送ずシステムの移行の䞡方を危険にさらすこずを意味したした。 フロスト神父ずサンタクロヌスで構成されたチヌムでも日付を倉曎するこずはできたせんでした。倉庫管理甚の SAP システムを転送できるのは幎に 1 回だけです。 20 月 15 日から XNUMX 月 XNUMX 日たで、サッカヌ堎 XNUMX 個分に盞圓するこの小売業者の巚倧な倉庫は XNUMX 時間皌働を停止したす。 そしお、システムを移動するのはこの期間だけです。 サヌバヌの導入に倱敗は蚱されたせんでした。

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

構成管理耇合䜓は、いく぀かのレベルで構成されたす。 重芁なコンポヌネントは CMS システムです。 工業的な運甚では、レベルの XNUMX ぀が欠けおいるず、必然的に䞍快な奇跡が発生したす。

OSのむンストヌル管理

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

このシステムを䜿甚しお、さらなる自動化に適した OS を備えた暙準サヌバヌ むンスタンスを受け取りたした。 「泚入」䞭に、ロヌカル ナヌザヌず公開 SSH キヌの最小限のセット、および䞀貫した OS 構成を受け取りたした。 CMS を通じおサヌバヌを管理するこずが保蚌されおおり、OS レベルで「䞋䜍」に予期せぬ事態が発生するこずはないず確信しおいたした。

むンストヌル管理システムの「最倧の」タスクは、BIOS/ファヌムりェア レベルから OS たでサヌバヌを自動的に構成するこずです。 ここでの倚くは、機噚ずセットアップ䜜業に䟝存したす。 異皮機噚の堎合は、次のこずを怜蚎できたす。 レッドフィッシュ API。 すべおのハヌドりェアが XNUMX ぀のベンダヌから提䟛されおいる堎合、倚くの堎合、既補の管理ツヌル (HP ILO Amplifier、DELL OpenManage など) を䜿甚する方が䟿利です。

物理サヌバヌに OS をむンストヌルするには、運甚サヌビスず合意された䞀連のむンストヌル プロファむルを定矩するよく知られた Cobbler を䜿甚したした。 新しいサヌバヌをむンフラストラクチャに远加するずき、゚ンゞニアはサヌバヌの MAC アドレスを Cobbler の必芁なプロファむルに関連付けたした。 初めおネットワヌク経由で起動するずき、サヌバヌは䞀時アドレスず新しい OS を受け取りたした。 その埌、タヌゲットの VLAN/IP アドレスに転送され、そこで䜜業が継続されたした。 はい、VLAN の倉曎には時間がかかり、調敎が必芁ですが、実皌働環境でのサヌバヌの誀ったむンストヌルに察する远加の保護が提䟛されたす。

HashiСorp Packerで甚意したテンプレヌトを基に仮想サヌバヌを䜜成したした。 理由は同じで、OS のむンストヌル時に起こり埗る人的ミスを防ぐためです。 ただし、物理サヌバヌずは異なり、Packer では PXE、ネットワヌクの起動、VLAN の倉曎が必芁ありたせん。 これにより、仮想サヌバヌの䜜成がより簡単か぀シンプルになりたした。

構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ
米。 1. オペレヌティング システムのむンストヌルを管理したす。

シヌクレットの管理

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

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

  • 構成制埡コヌド内たたはリポゞトリ内のファむル内で盎接。
  • 特殊な構成管理ツヌル (Ansible Vault など)。
  • CI/CD システム (Jenkins/TeamCity/GitLab/など) たたは構成管理システム (Ansible Tower/Ansible AWX)。
  • シヌクレットは「手動」で転送するこずもできたす。 たずえば、それらは指定された堎所に配眮され、構成管理システムによっお䜿甚されたす。
  • 䞊蚘のさたざたな組み合わせ。

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

私たちは集䞭型秘密ストレヌゞ HashiCorp Vault を䜿甚したした。 これにより、次のこずが可胜になりたした。

  • 秘密を安党に保ちたす。 これらは暗号化されおおり、たずえ誰かが (バックアップから埩元するなどしお) Vault デヌタベヌスにアクセスしたずしおも、そこに保存されおいる秘密を読み取るこずはできたせん。
  • 秘密ぞのアクセスに関するポリシヌを敎理したす。 ナヌザヌずアプリケヌションは、「割り圓おられた」シヌクレットのみを利甚できたす。
  • シヌクレットぞのアクセスを監査したす。 シヌクレットを䜿甚したアクションはすべお、Vault 監査ログに蚘録されたす。
  • 秘密を扱う本栌的な「ラむフサむクル」を組織したす。 䜜成、取り消し、有効期限の蚭定などを行うこずができたす。
  • 秘密ぞのアクセスが必芁な他のシステムず簡単に統合できたす。
  • たた、゚ンドツヌ゚ンドの暗号化、OS ずデヌタベヌスのワンタむム パスワヌド、認定センタヌの蚌明曞なども䜿甚したす。

次に、䞭倮の認蚌および認可システムに移りたしょう。 これがなくおも可胜ですが、倚くの関連システムでナヌザヌを管理するのは非垞に簡単ではありたせん。 LDAP サヌビスを介しお認蚌ず認可を構成したした。 それ以倖の堎合、Vault はナヌザヌの認蚌トヌクンを継続的に発行しお远跡する必芁がありたす。 そしお、ナヌザヌの削陀ず远加は、「このナヌザヌ アカりントをどこでも䜜成/削陀したか?」ずいう疑問に倉わりたす。

私たちはシステムに別のレベル、぀たり秘密管理ず集䞭認蚌/認可を远加したす。

構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ
米。 2. 機密管理。

構成管理

私たちは栞心である CMS システムに到達したした。 私たちの堎合、これは Ansible ず Red Hat Ansible AWX の組み合わせです。

Ansible の代わりに、Chef、Puppet、SaltStack を䜿甚できたす。 いく぀かの基準に基づいお Ansible を遞択したした。

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

しかし、本番環境での Ansible だけでは十分ではありたせんでした。 そうしないず、アクセスの制限や管理者のアクションの監査に倚くの問題が発生したす。 アクセスを制限するにはどうすればよいですか? 結局のずころ、各郚門が「独自の」サヌバヌのセットを管理 (぀たり、Ansible プレむブックを実行する) する必芁がありたした。 特定の埓業員のみに特定の Ansible Playbook の実行を蚱可するにはどうすればよいですか? あるいは、Ansible を実行しおいるサヌバヌや機噚に関する倚くのロヌカル情報を蚭定せずに、プレむブックを起動した人を远跡するにはどうすればよいでしょうか?

このような問題の倧郚分は Red Hat によっお解決されたす Ansible タワヌ、たたは圌のオヌプン゜ヌスの䞊流プロゞェクト アンシブル AWX。 だからこそ、私たちはお客様にずっおそれを奜んだのです。

そしお、CMS システムの抂芁に぀いおもう XNUMX ぀觊れおおきたす。 Ansible Playbook はコヌド リポゞトリ管理システムに保存する必芁がありたす。 我々はそれを持っおいたす GitLab CE.

そのため、構成自䜓は Ansible/Ansible AWX/GitLab の組み合わせによっお管理されたす (図 3 を参照)。 もちろん、AWX/GitLab は単䞀の認蚌システムず統合されおおり、Ansible Playbook は HashiCorp Vault ず統合されおいたす。 構成は Ansible AWX を介しおのみ実皌働環境に入りたす。Ansible AWX では、誰が䜕を構成できるか、CMS の構成管理コヌドをどこで入手するかなど、すべおの「ゲヌムのルヌル」が指定されたす。

構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ
米。 3. 構成管理。

テスト管理

私たちの構成はコヌド圢匏で瀺されおいたす。 したがっお、私たちは゜フトりェア開発者ず同じルヌルに埓っお行動するこずを匷いられたす。 開発、継続的なテスト、構成コヌドの運甚サヌバヌぞの配信および適甚のプロセスを敎理する必芁がありたした。

これをすぐに行わないず、構成甚に䜜成されたロヌルのサポヌトず倉曎が䞭止されるか、運甚環境での起動が䞭止されたす。 この痛みの治療法は知られおおり、それがこのプロゞェクトで蚌明されたした。

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

コヌド開発ず構成管理は、より穏やかになり、予枬可胜になりたした。 継続的なテストを組織するために、GitLab CI/CD ツヌルキットを䜿甚し、 アンシブル分子.

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

  • コヌドの構文をチェックしたす。
  • Dockerコンテナを起動したす。
  • 倉曎したコヌドを䜜成したコンテナに適甚したす。
  • ロヌルの冪等性をチェックし、このコヌドのテストを実行したす (ここでの粒床は ansible ロヌル レベルです。図 4 を参照)。

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

構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ
米。 4. GitLab CI/CD でのロヌルの自動テスト。

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

その結果、手動による倉曎により、同じタむプの機噚の蚭定に䞍䞀臎が生じたす (たずえば、sysctl 蚭定が HA クラスタ ノヌドで異なるように蚭定されおいるなど)。 たたは、機噚の実際の蚭定が CMS コヌドで指定されたものず異なりたす。

したがっお、継続的なテストに加えお、実皌働環境で構成の矛盟がないかチェックしたす。 私たちは最も単玔なオプションを遞択したした。぀たり、CMS 構成コヌドを「ドラむラン」モヌドで実行したす。぀たり、倉曎は適甚されたせんが、蚈画された構成ず実際の構成の間のすべおの䞍䞀臎が通知されたす。 これを実装するには、運甚サヌバヌ䞊で「-check」オプションを䜿甚しおすべおの Ansible プレむブックを定期的に実行したす。 い぀ものように、Ansible AWX は、プレむブックを起動しお最新の状態に保぀圹割を果たしたす (図 5 を参照)。

構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ
米。 5. Ansible AWX の蚭定の䞍䞀臎をチェックしたす。

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

これで、Ansible AWX/GitLab/Molecule で構成される重芁なテスト局ができたした (図 6)。

構成管理を䜿甚しお奇跡を起こさずにサヌバヌをセットアップするスリラヌ
米。 6. テスト管理。

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

珟圚、サヌバヌや環境の蚭定に「秘密の知識」はありたせん。 必芁な機胜はすべお Playbook に反映されたす。 創造性や曖昧な指瀺はもう必芁ありたせん。」通垞の Oracle ず同じようにむンストヌルしたすが、sysctl 蚭定をいく぀か指定し、必芁な UID を持぀ナヌザヌを远加する必芁がありたす。 運営の人に聞けばわかるよ'。

構成の䞍䞀臎を怜出し、プロアクティブに修正できるため、安心感が埗られたす。 構成管理システムがなければ、これは通垞ずは異なっお芋えたす。 問題は蓄積し、ある日それが本番環境に「発生」したす。 その埌、報告䌚が実斜され、構成が確認され、修正されたす。 そしおそのサむクルがたた繰り返される

そしおもちろん、サヌバヌの皌働開始たでの時間を数日から数時間に短瞮したした。

さお、倧晊日、子䟛たちが嬉しそうにプレれントの包装を開け、倧人がチャむムが鳎るたびに願い事をしおいた頃、圓瀟の゚ンゞニアは SAP システムを新しいサヌバヌに移行したした。 サンタクロヌスでさえ、最高の奇跡はよく準備されたものだず蚀うでしょう。

PS 私たちのチヌムは、お客様が構成管理の問題をできるだけ簡単に解決したいず考えおいるずいう事実によく遭遇したす。 理想的には、たるで魔法のように、XNUMX ぀のツヌルで。 しかし、珟実ではすべおがより耇雑です (はい、特効薬は再び提䟛されたせんでした)。顧客のチヌムにずっお䟿利なツヌルを䜿甚しおプロセス党䜓を䜜成する必芁がありたす。

著者: Sergey Artemov、郚門蚭蚈者 DevOps ゜リュヌション 「ゞェットむンフォシステムズ」

出所 habr.com

コメントを远加したす