ansibleとCI/CDで進めるサーバ構築/運用

9.9K Views

July 26, 23

スライド概要

イベント名: QUNOG26
URL: https://qunog.connpass.com/event/285821/
説明: QUNOG26 にて、今回はchefからansibleの移行について、ヤフーのネットワークチームが取り組んだ内容、便利になったことについてお話します。

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

情報区分 公開 ansibleとCI/CDで進めるサーバ構築/運⽤ in QUNOG 26 ヤフー株式会社 サイトオペレーション本部 永島 薫 ©2023 Yahoo Japan Corporation All rights reserved.

2.

情報区分 公開 Who am I ? ⾃⼰紹介 • 永島 薫 <Kaoru Nagashima> • 福岡県宗像市出⾝ • ~ 2021/03 九州⼯業⼤学 ⼤学院 @飯塚 • 2021 /04 ~ 現在 ヤフー株式会社 セキュアネットワーク 2021/09 ~ 現在 バックボーン 2023/04 ~ 現在 ※ 金融決済・個人情報などを扱うNW 運用 構築 automation 運用 automation AS23816, 24572 QUNOG12以来の現地です! よろしくお願いします ©2023 Yahoo Japan Corporation All rights reserved. 2

3.

情報区分 公開 今⽇の話題 構築: ansible 運⽤: ansible + CI/CD ネットワーク構築・運⽤に集中するための⾃動化 ©2023 Yahoo Japan Corporation All rights reserved.

4.

情報区分 公開 今⽇話すこと/話さないこと 話すこと • Ansible(Linuxへのデプロイ) 話さないこと • Ansibleとは • Ansible(NW機器) ©2023 Yahoo Japan Corporation All rights reserved. 4

5.

情報区分 公開 前置き Ansibleファイル構造の話 Playbook/ ┣ deploy.yml → このroleをこういう順番で実⾏するということが記載されている ┣ group_vars/ → グループ(拠点毎、役割毎 etc. )ごとに変数を定義 ┣ host_vars/ → host単位で変数を定義 ┣ inventory/ → 機器の⼀覧表 ┣ roles/ → 実際に実⾏する中⾝を記載 └ prometheus/ └ nginx/ ©2023 Yahoo Japan Corporation All rights reserved. 5

6.

情報区分 公開 ⽬次 1. chef → ansibleへの移⾏ 2. 新機能追加 3. CI/CDでNW運⽤の⼿助けをする 4. まとめ ©2023 Yahoo Japan Corporation All rights reserved. 6

7.

情報区分 公開 ⽬次 1. chef → ansibleへの移⾏ 2. 新機能追加 3. CI/CDでNW運⽤の⼿助けをする 4. まとめ ©2023 Yahoo Japan Corporation All rights reserved. 7

8.

情報区分 公開 chef → ansible移⾏ 移⾏を始めるにあたって 2021/09~ • モチベーション • 社内のchef PFのEoL • 開始当初の状態 • 誰も触ったことがない→ノウハウがない • 本&ネット⾒ながらやってみる • プロセスごとにタスク(Role)を分ける • Syslog-ng • Prometheus • Etc.. ©2023 Yahoo Japan Corporation All rights reserved. 8

9.

情報区分 公開 chef → ansible移⾏ パターン化する・j2に慣れる • 基本的にこの3つの組み合わせ • yum install • 設定ファイルを設置(全サーバ共通) • 設定ファイルを設置(サーバごとに変更の必要有) ©2023 Yahoo Japan Corporation All rights reserved. 9

10.

情報区分 公開 yum installする ©2023 Yahoo Japan Corporation All rights reserved. 10

11.

設定ファイルを設置(全サーバ共通) ©2023 Yahoo Japan Corporation All rights reserved. 情報区分 公開 11

12.

設定ファイルを設置(サーバごとに変更の必要有) ©2023 Yahoo Japan Corporation All rights reserved. 情報区分 公開 12

13.

情報区分 公開 chef → ansible移⾏ パターン化する・j2に慣れる • 基本的にこの3つの組み合わせ • yum install • 内製ツールもrpm化してyum install • 設定ファイルを設置(全サーバ共通) • 設定ファイルを設置(サーバごとに変更の必要有) • j2 ファイルを利⽤ • 変数はgroup_vars、host_varsに集約 ©2023 Yahoo Japan Corporation All rights reserved. 13

14.

情報区分 公開 j2でサーバごとに設定を分ける playbook サーバ毎の設定 ©2023 Yahoo Japan Corporation All rights reserved. 14

15.

情報区分 公開 chef → ansible移⾏ 開発しながら修正・完璧を求めない • dev環境で検証→修正→レビュー、それでも構築中サーバでうまく動かない そこでも修正→再deploy • • • • etc. host_varsが⾜りない、j2の分岐が考慮されてない とにかく動いた実績のあるものをmaster branchに集約していく 動いたらok、明確なコーディングルールはなかった • 理解度もまだまだなので2回動かすと動くものもあった ©2023 Yahoo Japan Corporation All rights reserved. 15

16.

情報区分 公開 chef → ansible移⾏ まとめ 気をつけたこと • やること/やらないことを明確に • 少⼈数で突き進む • 壊れていい環境で動かしながら作る・修正する ゴール • サーバの新規構築は8割くらい⾃動でできる状態 ©2023 Yahoo Japan Corporation All rights reserved. 16

17.

情報区分 公開 ⽬次 1. chef → ansibleへの移⾏ 2. 新機能追加 3. CI/CDでNW運⽤の⼿助けをする 4. まとめ ©2023 Yahoo Japan Corporation All rights reserved. 17

18.

情報区分 公開 新機能追加 Ansible移⾏はじめてから半年後 2022/04 ~ • Chefからの移⾏は8割完了していた • チーム内に構築+syslog監視ツールの更新はansibleだね︕という雰囲気ができはじめる • • Ansibleやりたいメンバーが増える • 「こういうのもできる︖」という案も増え始める • 発覚する移⾏漏れ・こんなのあったねというサーバのプロセス ルール整備の必要性を感じ始める ©2023 Yahoo Japan Corporation All rights reserved. 18

19.

情報区分 公開 新機能追加 ルールを決める・さらなる改善と新しい観点 • 「あとでPlaybookを書く」は辞める 新しいことをするときはPlaybookが先を当たり前にする • • メンバーが増えると、最初は気にならなかった(⽬を逸していた)ことも課題に Q.「なんか失敗するんだよね」 • • A. 他のRoleに依存してた Q. 「なんで2回⽬はうまく動くの︖」 • • A. Handlerがうまく書けてない 理解できてない部分を修正と メンバーで共有 ©2023 Yahoo Japan Corporation All rights reserved. 19

20.

情報区分 公開 新機能追加 新機能を追加する(丁寧に) • 前ページのようなことを繰り返さないために • • 今までのメンバーと新メンバー2⼈で⼀緒にRole作成をする 想定通りに1回で設定が⼊るかにフォーカス • 妥協しない。 • レビューをしっかり⾏う 「このクオリティでやっていきましょう」の例を作る ©2023 Yahoo Japan Corporation All rights reserved. 20

21.

情報区分 公開 新機能追加 まとめ • 新しいことをするなら「Playbookを書く」を習慣へ • 新規メンバーの参画 • • 初期メンバーの慣れによって気づかない部分の品質向上 Role追加を丁寧に⼀度やることが⼤事 • PRみて真似できるようにする • 新メンバーと初期メンバーで⼀緒にやる ©2023 Yahoo Japan Corporation All rights reserved. 21

22.

情報区分 公開 作り込みしてある場所の紹介 ©2023 Yahoo Japan Corporation All rights reserved. 22

23.

ファイルの変更/書き込み後はプロセスのrestart ©2023 Yahoo Japan Corporation All rights reserved. 情報区分 公開 23

24.

情報区分 公開 ディレクトリ構成とTag付け main.yml main.ymlは他のymlを includeするだけ それぞれにtagを付けて、 個別に実行可能にする ©2023 Yahoo Japan Corporation All rights reserved. 24

25.

変数nullには落とさない defaultを定義する 情報区分 公開 Apacheをinstallするtask role/httpd/defaults/main.ymlに以下を定義しておく ©2023 Yahoo Japan Corporation All rights reserved. 25

26.

情報区分 公開 ⽬次 1. chef → ansibleへの移⾏ 2. 新機能追加 3. CI/CDでNW運⽤の⼿助けをする 4. まとめ ©2023 Yahoo Japan Corporation All rights reserved. 26

27.

情報区分 公開 CI/CDでNW運⽤の⼿助けをする Syslog監視 • NW機器のsyslog管理は内製ツールを利⽤ • 監視ルールはツールconfigに記載 cat /etc/monitor-tool/config FW → log Aは無視 FW → interface downは架電 . . . . Sysl og送 信 SW → reloadは架電 NW機器 Server Gitを正として管理 ©2023 Yahoo Japan Corporation All rights reserved. 27

28.

情報区分 公開 CI/CDでNW運⽤の⼿助けをする 今までのdeploy • PRをmasterにmerge後→⼿動でchefを実⾏ • • 対象漏れなどが発⽣ Ansibleでもconfig更新Roleは実装済み • ⼿動で全対象へのdeployが必要だった ⾃動化したい︕︕︕ CI/CDに着⽬ ©2023 Yahoo Japan Corporation All rights reserved. 28

29.

情報区分 公開 CI/CDでNW運⽤の⼿助けをする CI/CDとは︖ CI/CD とは-継続的インテグレーション/継続的デリバリー|Red Hat https://www.redhat.com/ja/topics/devops/what-is-ci-cd ©2023 Yahoo Japan Corporation All rights reserved. 29

30.

情報区分 公開 CI/CDでNW運⽤の⼿助けをする CI/CDとは︖, Screwdriverとは︖ • CI → PR、mergeなどのソースコード変更に対してテストを⾏うこと • CD → ソースコード変更を適切にDeployすること • Screwdriver.cdを全社で利⽤ • 今までCIはやっていたがCDはやっていなかった • 参考: 着⼿からリリースまでの時間が半減 年90以上の開発サービス開発につなげたYahoo! JAPANの3つの 技術投資 - ログミーTech h3ps://logmi.jp/tech/ar?cles/324194 ©2023 Yahoo Japan Corporation All rights reserved. 30

31.

情報区分 公開 CI/CDでNW運⽤の⼿助けをする Screwdriverでconfigをdeployする • Syslog監視のツールの設定ファイルをCI/CDでdeploy • Gitopsで信頼性担保 4. Serverのconfig変更 • CI/CDで正常性確保 2. Screwdriverをcall 1. Masterにmerge 3. Ansible実行 ©2023 Yahoo Japan Corporation All rights reserved. 31

32.

情報区分 公開 CI/CDでNW運⽤の⼿助けをする まとめ • Syslog監視のツールの設定ファイルをCI/CDでdeploy 全サーバに 最新のconfigが 確実にdeployされている 状態 • Gitopsで信頼性担保 • CI/CDで正常性確保 ©2023 Yahoo Japan Corporation All rights reserved. 32

33.

情報区分 公開 ⽬次 1. chef → ansibleへの移⾏ 2. 新機能追加 3. CI/CDでNW運⽤の⼿助けをする 4. まとめ ©2023 Yahoo Japan Corporation All rights reserved. 33

34.

情報区分 公開 まとめ まとめ • Chef → Ansible移⾏ • 壊れていい環境で動かしながら作る・修正する • 新機能開発 • 新しいことをするなら「Playbookを書く」を習慣へ • CI/CDでNW運⽤の⼿助けをする • Syslog監視のツールの設定ファイルをCI/CDでdeploy 2021/09 から1年半で快適なAnsible lifeが送れるようになりました ©2023 Yahoo Japan Corporation All rights reserved. 34

35.

情報区分 公開 まとめ ⼯数削減観点で⾒る • 構築 • 2営業⽇ → 1営業⽇(リリースチェック含む) → 1営業⽇短縮 • それ以外の作業 • 脆弱性対応 (12回/年) • Syslog監視ツール更新(約24回/年) • サーバリリースチェック(年3~5回) → 年間320h短縮 ©2023 Yahoo Japan Corporation All rights reserved. 35

36.

情報区分 公開 まとめ これからやりたいこと • NW機器へのオペレーション • まずは初期構築 • アラート時に情報収集してもらう • LinkDown時に光レベル⾒てもらうとか︖ • AWXからのDeploy • API経由でサーバor NW機器へ playbook実⾏ ©2023 Yahoo Japan Corporation All rights reserved. 36

37.

情報区分 公開 まとめ 質疑応答・議論したいこと • 質疑応答 • 議論したいこと • 構築 • 構成管理どうしてますか︖ • 運⽤ • すべてのサーバの設定変更/ファイルをばら撒くときどうしてますか︖ ©2023 Yahoo Japan Corporation All rights reserved. 37

38.

情報区分 公開 ©2023 Yahoo Japan Corporation All rights reserved.