Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ネットワークエンジニアこそGASを覚えた方がよいと思った話 / network-engineer-gas

B722d457f803a630f3c55429b526510b?s=47 komeinw
January 12, 2018

ネットワークエンジニアこそGASを覚えた方がよいと思った話 / network-engineer-gas

B722d457f803a630f3c55429b526510b?s=128

komeinw

January 12, 2018
Tweet

Transcript

  1. ネットワークエンジニア こそGASを覚えるべきと思っ た話 CyberAgent アドテク本部 山本 孔明

  2. ❏ 山本 孔明 アドテク本部のインフラ組織所属のエンジニア 今はプライベートクラウドチームのリーダーをやっていま す 主な業務 • オンプレとパブリックのネットワーク(物理/仮想) •

    OpenStack / CircleCI / Aritifactory ...etc • チームマネジメント 自己紹介
  3. アドテク本部について インターネット広告において、広告配信の最適化やメディアの収益最大化という観点から アドテクノロジーの重要度が高まっています。 サイバーエージェントではアドテクノロジー分野における これらのサービスについて各子会社を通じ開発しておりましたが、 各サービスの開発部門を横断して組織化する専門部署として アドテク本部が設立されました。

  4. サイバーエージェントのアドテク 詳細は「日本一やさしいアドテク教室」を御覧ください! https://www.cyberagent.co.jp/ir/personal/adtech/adtech_01/

  5. ポート表の作成ってめんどくさい・・・ • モデルごとに違うポート番号 • ディスクリプションに書いてあることを転記する無駄感 • スイッチの VLAN 変えたらポート表を変えないといけない二度手間感 •

    更新を何回か忘れて管理が事実上崩壊 そもそもポート表を作るのが本質ではない・・・!!
  6. で、どうする? • Ansible で管理すればいいのでは? ◦ ios_config 並べるみたいな管理を全メーカーやる・・・? ◦ ( 割とありかもしれない

    ) • GitHub にコンフィグを自動でアップしておけばいいのでは? ◦ 簡単だけどネットワークエンジニア以外の可読性がいまいち問題 ◦ ( 便利っちゃ便利なので活用はしている )       そういえば、ポート表を自動生成する方法はないのかな?
  7. Ansible 2.4の話 Ansible 2.4 でネットワークプログラマビリティな運用を考える  https://adtech.cyberagent.io/techblog/archives/3801 • parse_cli_textfsm + ntc-templates

    がスーパー便利 • ios_command などで各メーカーの ネットワーク機器を操作するのは割と楽 • json で情報取れるので加工しやすい
  8. あ、Databaseに入れちゃえば いいんじゃない??

  9. Databaseに入れることで • いろんな場面で二次利用できる • フロントに Redash 使ったりして可視化が楽 • スプレッドシート使えばまさにポート表いらない ファイル共有のしやすさ、同時編集などを考えると

    CSV よりスプレッドシートがおすすめ。
  10. 構成概要 MySQL Switch Jenkins ① ② ③ 定期取得

  11. GAS (Google App Script) について • JavaScript をベースにしている • カレンダーやスプレッドシートなど多数の

    Google Apps を操作可能 • マニュアルがしっかりしている • こういうレベルの活用なら学習コストが意外と低い Let’s Try GAS!!
  12. 結構簡単にできちゃう • DB に接続してテーブル作る例 SQL そのまんま !!

  13. 今回GASでやること • DB に接続 • 任意のテーブルを select する • 目的のシートに書き出す

    すごく Simple !!
  14. 今回GASでやること • DB に接続 ◦ var conn = Jdbc.getConnection(dbUrl, user,

    userPwd); ◦ var stmt = conn.createStatement(); • 任意のテーブルを select する ◦ var result = stmt.executeQuery(sql); • 目的のシートに書き出す ◦ var sheet = SpreadsheetApp.getActiveSheet(); ◦ var cell = sheet.getRange('A1'); ◦ cell.offset(row, 0).setValue(results.getString(1)); やっぱり Simple !!
  15. 技術的なハードルは 意外と低い?

  16. まとめ • とりあえず DB へ入れておくとなにかと便利 • フロントにはスプレッドシートがおすすめ • この用途なら GAS

    はそんなに難しくない • 自動化するコストとポート表にかけてるコストと要相談 プライベートクラウドでそもそも ポート表に管理コストそんなにか かってない疑惑・・・。