ラクスサービスを支えるAnsibleのこれまでとこれから
by
上畑圭史(Keiji Uehata)
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
#RAKUSMeetup ©2022 RAKUS Co., Ltd. ラクスサービスを支える Ansibleの活用 これまでとこ れから 株式会社ラクス 上畑 圭史
Slide 2
Slide 2 text
#RAKUSMeetup 自己紹介 ● ウエハタ ケイジ ● 株式会社ラクス インフラ開発部 リードエンジニア ● 趣味 「将棋」 息子の将棋教室通いをきっかけに、1年でようやく2級になりました。 目指せ初段!!
Slide 3
Slide 3 text
#RAKUSMeetup 今回のお話 サーバの構成管理の為に、Ansibleを2018年に導入しました。 導入からの4年間の軌跡やその取り組み内容を紹介します。
Slide 4
Slide 4 text
#RAKUSMeetup Ansible とは? RedHat社が開発するオープンソースの構成管理ツール [特徴] ● YAML記述方式のファイルにサーバやネットワーク機器等の構成情報を書く。その情報 を元にインストールや設定、実行を自動で行う。 ● 対象となる環境には専用のエージェントは不要。※サーバの場合は、PythonとSSH接 続環境が必要。 ● 様々な機能はモジュール形式によって提供されている(自作も可) ● 何度実行しても同じ状態となる冪等性を担保することを意識。 ※シェル系のモジュー ルなど一部担保できないものがある。
Slide 5
Slide 5 text
#RAKUSMeetup Ansible導入の背景
Slide 6
Slide 6 text
#RAKUSMeetup 背景 2018年当初ラクスが提供しているサービスのサーバ群の構成情報は管理されていない状態。 ※厳密には管理していたが、完全ではない「部分的な情報の管理」 環境構築方法は。。。 Excelの 設計書・手順書 いにしえ の...Shellスクリ プト 完成!!
Slide 7
Slide 7 text
#RAKUSMeetup 背景 設計書は陳腐化... 規模が拡大 = 作業コスト・運用リスクは増加 スクリプトは属人化・難読化... 作る時期・人によって違う環境のものも... 破 綻
Slide 8
Slide 8 text
#RAKUSMeetup Ansible導入の狙い ● 「Ansibleのコード」=「現在の状態」の実現 ● 構築や改変作業を自動化 [得られる効果] ❏ 陳腐化・属人化排除 ❏ 構成情報の一元管理 ❏ 作業コストの低減(時間、教育コスト) ❏ 品質向上
Slide 9
Slide 9 text
#RAKUSMeetup ChatdealerをAnsible化(2018年)
Slide 10
Slide 10 text
#RAKUSMeetup ChatdealerをAnsible化(2018年) ● Ansible化 ○ 7〜8種類ある現在のサーバ構成情報を1つのリポジトリに ○ 構築スクリプトを廃止 ○ 開発、ステージング、本番のパラメータをそれぞれ管理 ○ 共通実装の統一(OS、ログや監視設定など) ● Ansible実行環境を整備 ○ Ansibleの自動実行 ○ メンテナンスモードのOn/Off切り替え
Slide 11
Slide 11 text
#RAKUSMeetup 2019年 Ansible導入促進?
Slide 12
Slide 12 text
#RAKUSMeetup 2019年 Ansible導入促進? Ansibleの学習コストは他のプログラミング言語と比べても低い ➡記述方式を学べば、構築手順やスクリプトのAnsible化はできる... 各人が独自で実装を進めていった先は??? テンプレートを作ろう 結果: Ansibleコードの属人化・難読化 → ツールが変わっただけで結果は同じ
Slide 13
Slide 13 text
#RAKUSMeetup Ansible標準テンプレート化(2019年) ■Point: 属人化・難読化させない 1. コーディング規約作成(SHOULDとMUSTを定義) あまりガチガチに固めすぎないように配慮が必要
Slide 14
Slide 14 text
#RAKUSMeetup Ansible標準テンプレート化(2019年) ■Point: 属人化・難読化させない 2. 分かりやすい記述方法を意識 ● 変数名=パラメータ名 ● 多くの機能を盛りすぎない ● シェル記述やスクリプトはできるだけ排除し Ansibleのモジュールによる実装に変更
Slide 15
Slide 15 text
#RAKUSMeetup Ansible標準テンプレート化(2019年) ■Point: 属人化・難読化させない ● 汎用性を意識した実装(ディレクトリ・ファイル名、パラメータ記載場所) ○ 複製して使いまわせる ○ 複製後の修正箇所を極力少なく(パラメータ変更のみで実装が終わるのが理想)
Slide 16
Slide 16 text
#RAKUSMeetup Ansible標準テンプレート化(2019年) 自動化大好きエンジニアLT会 vol.04 https://rakus.connpass.com/event/217909/ 「ラクス共通Ansibleコードテンプレートを作った話」
Slide 17
Slide 17 text
#RAKUSMeetup Ansible普及期(2020-2021年)
Slide 18
Slide 18 text
#RAKUSMeetup Ansible普及期(2020-2021年) 標準テンプレートができたことで、各ラクスのサービスでAnsible化が促進 とはいかなかった。
Slide 19
Slide 19 text
#RAKUSMeetup ■ハード面(テスト実行環境) 気軽にAnsibleの実行ができる + Ansible実行ターゲット 具体的には。。。 Ansible普及期(2020-2021年) 「多くの人がAnsibleコードを書いていく」のに必要なものを用意 Ansible on Docker が起動 ステージング 本番 テスト環境 コードをPush
Slide 20
Slide 20 text
#RAKUSMeetup ■ハード面(その他) ● 構文自動チェック(ansible‐lint, YAML Lint) ● 内部テスト・外部テスト実装(ansible‐spec, Behave) ● Ansible実行速度の高速化機能 Ansible普及期(2020-2021年) 「多くの人がAnsibleコードを書いていく」のに必要なものを用意
Slide 21
Slide 21 text
#RAKUSMeetup ■ソフト面 標準テンプレート説明ドキュメント Ansible普及期(2020-2021年) ● 各roleの機能の説明 ● 各パラメータ意味 ● 実装例(統一感の為には結構大事)
Slide 22
Slide 22 text
#RAKUSMeetup ■ソフト面 標準テンプレート学習環境用意(ハンズオン ドキュメント) Ansible普及期(2020-2021年) アニメーションGit付きの解説 勉強会に参加できないメンバーや後か ら入社した社員の為
Slide 23
Slide 23 text
#RAKUSMeetup ■ソフト面(その他) ● Ansibleコードレビューの参加 ● リリースフロー整備 ● Ansible以外の勉強会の開催(DevOps理解、Git、Docker、Jenkins…) Ansible普及期(2020-2021年) 社内システム 徐々にAnsible管理下に
Slide 24
Slide 24 text
#RAKUSMeetup と後ろを振り返ると ● ジョブ管理 関連システムは増えていく... メンバーはまだまだAnsibleの運用だけで手一杯。。。 ● DockerによるCI/CD ● 自動テスト
Slide 25
Slide 25 text
#RAKUSMeetup ● マジョリティメンバー増加(Ansibleだけじゃなく、周辺機能も) ○ ドキュメント整備 ○ ハンズオン開催 ※理解度向上効果が高い ○ コードレビューの積極参加 まだまだ終わりじゃないぞ(2022年~) ● GitOpsによるデプロイ、フローの整備(現行業務フローの置き換え) ○ 現行リリースフローはステップ数が多く煩雑 ● ハード面の充実 ○ 自動テストOK=リリースOKにしたい ○ 実行環境の並列化
Slide 26
Slide 26 text
#RAKUSMeetup まとめ ● Ansible化 ○ 属人化しない仕組み作りが大事(テンプレート化、ルール作り) ○ 周辺環境の整備(テスト、実行環境等) ● 周辺環境が肥大、複雑化しがち ○ マジョリティメンバーを増やす施策も忘れずに!! ※ドキュメント整備、ハンズオン、フォローアップによる体制作り ○ 独走禁止!一気に範囲を広げすぎない。
Slide 27
Slide 27 text
#RAKUSMeetup ご清聴ありがとうございました。