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 ご清聴ありがとうございました。