180 Views
November 06, 25
スライド概要
JANOG46 Meeting in Okinawa Day3 の「自動化の下ごしらえ」での発表資料です
https://www.janog.gr.jp/meeting/janog46/autotest/
ansible
自動化の下ごしらえ 2020/08/28 JANOG46 Meeting Day3 株式会社エーピーコミュニケーションズ 技術開発部 自動化グループ 横地 晃 1
はじめに ネットワーク運用自動化する場合、既存の手順書をなぞるように そのまま実装していけばよいものでしょうか? まずは「下ごしらえ」が必要です。 自動化しやすくするためのポイントをいくつかご紹介します。 2
前提 業務の洗い出しや整理が終わり、自動化対象の手順書を特定した後のお話 このあたり 洗い出し 特定 最適化 実装 3
自己紹介 横地 晃 @akira6592 てくなべ(ブログ) 所属 (株)エーピーコミュニケーションズ 技術開発部 自動化グループ 業務 ネットワーク自動化の支援、各種アウトプット JANOG JANOG42: Ansible ネットワーク自動化チュートリアル JNAOG43: 自動化の行き着く先は? JANOG44:ここからはじめよう、運用自動化 共著 寄稿 Ansible 実践ガイド 第3版 Software Design 2018年12月号 他 https://tekunabe.hatenablog.jp/ https://book.impress.co.jp/books/1118101094 4
内容 引く 足す 決める 分ける 整える 入れ替える 戻す 5
引く 6
【引く】 不要な手順を削除する 余計な手順は負債化 残した手順はあとから削除しにくい 形骸化した手順 重複した手順 7
【引く】 不要な手順を削除する(例) 形骸化した手順を削除 手順の経緯を追い、不要だと判断できれば削除 手順書上は「確認」とあるが「記録」で十分なら確認を削除 記録すら不要ならまるごと削除 重複した手順を削除 監視システムなどでカバーできている確認手順は削除 手作業ならではの手順を削除 8
足す 9
【足す】隠れ手順をあぶりだす 手順書になくても、人がよしなにやっていた作業 機械は脳内補完できない 実は・・・ あぶりだし 定型化 10
【足す】隠れ手順をあぶりだす (例) 手順書で表現しきれていないもの 例: 手順書上は1回の show コマンド実行だが、実際はOSPFネイバーが 確立されるまで繰り返し実行して確認 重要だがそもそも書かれていない手順 個人の経験、暗黙知 本当に1回の実行? 結果のどこを確認? 暗黙的に実行している 手順が抜けていないか? 11
決める 12
【決める】判断基準を明確に決める 統一した基準やロジックなしには自動化できない 新任者教育にも似た要領 ● ● ▲ 13
【決める】判断基準を明確に決める(例) ロジック化、数値化、統一 要注意ワード 書き換え例 異常がないこと show log の結果に「ERROR」が含まれないこと 同程度であること 差分が5以内であること 増加していないこと 作業前と比較し、差分が0であること 14
分ける 15
【分ける】機械と人の役割を分ける 自動化する/しないだけでなく半自動という選択もある 手順を分解して、どこまで自動化できて、どこからできないかを見極める 手動 半自動 自動 低 高 自動化レベル 16
【分ける】機械と人の枠割を分ける(例) 事前事後のコンフィグ差分の妥当性判断の自動化が難しければ、 判断に必要な情報収集と比較までをいったん自動化 「難しい」理由は基準の決めにくさや、リクスの大きさ、技術的な難易度など 段階的に自動化していく 事後コンフィグを取得し、事前コンフィグとの差分が想定通りであること 手順書 コマンド実行 比較 自動 判断 手動 ※基準を決めて自動化が理想 17
整える 18
【整える】フォーマットを整える 人が扱いやすいフォーマットを機械が扱いやすい構造化データにする YAML や JSON など 手動 自動 いい感じに読み込む 機械的に読み込む {} 人間向けフォーマット 機械向けフォーマット 19
sC3gi2w8 sC3gi2w8 【整える】フォーマットを整える(例) 人間向けの方眼紙による申請書を YAML にする どのセルに何が? データ構造が壊れやすい 自動 読み込みやすい --- source: prefix: - 10.0.0.0/24 - 10.0.1.0/24 protocol: any destination: prefix: - 172.16.1.0/24 protocol: tcp port: 22 action: permit 20
入れ替える 21
【入れ替える】順序を最適化する 特に順序に意味がない箇所は、自動化しやすく入れ替えてしまう 22
【入れ替える】順序を最適化する(例1) 対象機器ごとの作業をタスクごとに変更 実装との親和性を考慮 1台目 2台目 1台目 2台目 ※Ansible のデフォルト動作 (strategy: linear) 23
【入れ替える】順序を最適化する(例2) 人の介入回数を少なくする 自動化しきれなかった手動による状態確認をまとめる 自動 自動 手動 自動 手動 手動 24
戻す(オプション) 25
【戻す】あえてデグレ 手動の効率化の延長上に自動化があるとは限らない いったんあえてデグレさせることで自動化しやすくなることも 手動 効率化した手動 自動 あえて デグレ 26
【戻す】あえてデグレ(例) ファイルによる一括インポートを個別作業に戻してから自動化 インポート用のAPIがないなどの事情により APIなし 手動 効率化した手動 自動 あえて デグレ 27
まとめ 28
まとめ 引く 不要な手順を削除する 足す 隠れ手順をあぶりだす 決める 判断基準を明確に決める 分ける 機械と人の役割を分ける 整える フォーマットを整える 入れ替える 順序を最適化する (戻す) あえてデグレ ディスカッション ・質問 ・他に工夫をしていること ・成功や失敗から学んだこと ・など 29
参考 書籍: 人と機械の共生のデザイン-「人間中心の自動化」を探る 機械と人の役割を分ける際の、自動化レベルの考え方が参考になる https://www.morikita.co.jp/books/book/2510 30
【本資料のお問合せ】 株式会社エーピーコミュニケーションズ 技術開発部 自動化グループ [email protected] 31