2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
本当にあった怖い話 Ansible SaaS運用編(全1記事)
リンクをコピー
記事をブックマーク
じろ氏:「本当にあった怖い話 Ansible SaaS運用編~大いなる力には大いなる責任が伴う~」というタイトルで、じろが発表します。よろしくお願いします。
最初に、これは実際にAnsibleを使って起きた事故です。本当にすごくしょうもない事故ですが、今のところ有効な再発防止策がないので、もしいい案があればハッシュタグ付きでツイートしてもらえたらと思います。そのあと、私が起こしたわけではありませんが若干脚色して話そうと思います。
(スライドを指して)こちらが自動化している環境です。特徴としては、AWS上で動くWebシステムで、1つの共有OSにそれぞれいろいろな顧客別のデータベースとアプリケーションが入っていて、Webの入口だけ分かれているような仕組みです。これは契約ごとにどんどん増えて、多い時は同時に月2契約くらい増えることもありました。
これはどうやってAnsibleを使っているかというと、include_varsです。顧客ごとの環境定義ファイルのようなものをvarsファイルとして作っています。AWSなら、VPCやSecurityGroup、Route53 CloudWatchのような定義ファイルです。Webなら、httpdやSSLの証明書。APなら、EARファイルやserver.xml、Javaのプロパティファイル。DBなら、データベース名など。
共通OS部分には追加するユーザーや起動サービスが変数として格納されていて、それをAnsible Tower実行時にinclude_varsで読み込んで、Playbookが実行されます。(スライドを指して)この一番下が増えるという意味です。
これは本当に、いろいろなことをやっています。トータルでは25ノードくらい、ワークフローのテンプレートがジョブテンプレートを何個か組み合わせてやっているような、巨大なワークフローテンプレートです。
そしてある日、このワークフローを使っていて事件が起きました。どこで起きたのか。こちらは少し脚色しています。というのも、APサーバーのXMLをテンプレートモジュールを使って展開するところで、誤って既存環境のserver.xmlのパスを書いてしまったんです。
そうすると何が起きるか。サーバーが見ているDBの参照先が変更されて、とんでもないことになりました。実際は、APサーバーが再起動しないとXMLはすぐに反映されません。すごく問題になったかというとそれほどではありませんが、これはいわゆる事故です。
この事故はどうすれば防げたのか。現時点では有効な手段を思いつきませんが、本当に「そもそも共有のOSは自動化に向いていない」と思っています。
政治的な理由でこうなってしまったので、なんともしょうがないのですが、やはり1つの環境変更が全体や既存に影響します。これが共通OSではなく個別OSなら、include_varsではなくhost_varsを使うことになるので、わりと全体への影響は下がったのではないでしょうか。コーディングの範囲ではどうしようもないと思います。
ほかにも、変更箇所が多いので変数も多いです。1環境あたり120個あるので、Varsファイルを使ってYAMLですべて入念に指差しチェックしても、たぶん限界というか、絶対にミスは起きると思います。
それを防ぐために既存環境との変数重複チェックツールを作るのは、あまり実装イメージが湧きません。Excelからvarsを自動で生成するようなマクロも考えてみましたが、そもそもExcel入力を間違えたら意味がないので、根本的な再発防止策にはならないと思っているところです。
(スライドを指して)これはちょっと恥ずかしい。現時点での暫定の再発防止策として、おふざけで書いていますが、「大いなる力には大いなる責任が伴います」。どっかで見たぞみたいなところもあると思いますが、このような文言を加えることによって、実行前にもう一度変数を確認することが、今現時点で取り得た最善の手だと思っています。
まとめです。やはり、コーディングだけではなく、自動化でいかにミスを防ぐ環境を作るかが非常に大事だと思っています。特に今の環境は、オンプレで動いていたレガシーなものをそのままAWSに持っていったようなところがあるので、マイクロサービスではありませんが、やはりいろいろな機能を分離して、あまりほかに影響しない仕組みが大事だと思っています。
自動化は大事だし便利だと思いますが、使い方を間違えると環境破壊にもつながるツールなので、やはり「大事なのは責任感」というオチがあると思います。
また、いい案をお待ちしています。私の発表は以上です。ご清聴ありがとうございました。
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略