SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
AWXと組み合わせてBIG-IP
の作業をサービス化してみ
た
2019/11/22
(株)エーピーコミュニケーションズ
三枝
自己紹介
NWエンジニア4年目
最近はACIとNSXさわってる
Ansible歴は2年、NWモジュールばっか触ってる
pyatsやbatfishなどのテストツールについても勉強中
Qiita更新中!(AnsibleやpyATS勉強中!)
https://qiita.com/snamon
@usagi_automate
サービス化?
ネットワークチームが行う作業をサービスとしてアプリケーションチームに提供する
例えば) FWのポート開放作業をサービス化
    
作業が完了するボタンを提供する
なぜBIGIP?
現場で導入されておりイメージがしやすかった
評価用を無料で使える(30日),ただしAWSで立てようとする無料分では立てられない。
モジュールが非常に豊富でやろうと思ったことがすぐにモジュールで見つかった(重要)
モジュール数: 163個 ( - 3 ) v2.9
ある日の維持管理メンバ
ある日の維持管理メンバ
NW担当者様
ほげほげシステムのほげ太郎です。
この度、Webサーバのアップデート作業に伴い
負荷分散装置のNodeメンバを順番に無効化 /有効
化作業を実施していただきたく
以下の日程でお願いします
〇月✕日
23:00 ~ 26:00
ある日の維持管理メンバ
NW担当者様
ほげほげシステムのほげ太郎です。
この度、Webサーバのアップデート作業に伴い
負荷分散装置のNodeメンバを順番に無効化 /有効
化作業を実施していただきたく
以下の日程でお願いします
〇月✕日
23:00 ~ 26:00
作業当日...
作業開始します,Node_172.16.0.1を切り離してくださ
い
作業完了しました、状態戻しをお願いします
23:43
1:00
承知しました、Node切り離します
23:43
作業完了しました
23:45
作業時間2分
ちくしょう!サービス化だ!!
AWX 7.0.0.0
Ansible 2.9.0
Github
BIGIP-VE(inAWS)トライアル版(無料)
Slack
環境
事前作業
システム構成
①登録
③実行
②
連
携
④処理
⑤通知
NW担当
アプリ担当
下準備
対象のユーザは作業当日に必要なJobだけが見えるような形に設定
Poolメンバの一覧化→Serveyにリストで登録
パーティションをシステム単位で作成して他のシステムには影響を一切与えない
実装はシンプルに
実装してみた(Playbook)
今回は簡単に作成した
Playbook一つのみ用意
使用モジュール
 ・bigip_pool_menber
tasks:
- name: プールメンバー変更
bigip_pool_member:
state: "{{ state }}"
pool: "{{ system_name }}_pool"
fqdn: "{{ member }}"
port: "{{ target_port }}"
partition: "{{ system_name }}"
provider:
server: "{{ inventory_hostname }}"
user: "{{ user }}"
password: "{{ password }}"
transport: rest
server_port: 8443
validate_certs: false
delegate_to: localhost
これだけ。
せっかくなのでモジュールの中身を追っかけ
てみた
コードをちらり(bigip_poom_member.py)
def main():
spec = ArgumentSpec()
module = AnsibleModule(
argument_spec=spec.argument_spec,
supports_check_mode=spec.supports_check_mode,
mutually_exclusive=spec.mutually_exclusive,
required_one_of=spec.required_one_of,
)
try:
mm = ModuleManager(module=module)
results = mm.exec_module()
module.exit_json(**results)
except F5ModuleError as ex:
module.fail_json(msg=str(ex)
実行部分
BIGIPモジュールの仕組み1
まず、モジュールを呼び出すお約束の①exec_modulesを呼ぶ
②作成/更新or削除で分岐(execute())
③事前確認実施(exist())
事前確認URLをPlaybookの情報から取得
GETして存在する場合Trueを返す、
何もない場合エラーを返すのでTryキャッチしてFalseを返す
設定更新の簡易フロー(BIG-IPモジュール)
①exec_modules() ②execute() present()
absent()
③exists() update()
create()
absentか作成系で
分岐
urlを生成してget
結果をTrue/False
updateの中身をさらに細かく
def update(self):
self.have = self.read_current_from_device()
if not self.should_update():
return False
if self.module.check_mode:
return True
self.update_on_device()
return True
Diffするメソッドに突
入
差分比較のための
Config取得(exist)
Update(patch)メソッ
ドに突入
主要メソッド
update_on_device:設定更新(patchメソッド)一部置き換え
create_on_device:新規作成(postメソッド)追加
remove_from_device:設定削除(deleteメソッド)削除
作業当日(アプリケーションチーム)
作業当日(アプリケーションチーム)
触れるテンプレートは
限られている
作業当日(アプリケーションチーム)
サーベイ機能で、実行時に
変数入力が可能
作業当日(アプリケーションチーム)
作業当日(アプリケーションチーム)
Job番号が発行され、証跡管理も可能
通知
Job番号と
成功/失敗が通知されてくる
つまり……。
作業当日(ネットワークチーム)
こまったこと。。
①どんな作業をサービス化するにがいいのかを検討するのが難しい
 →まずは手順書が確立して、影響範囲が少ないものからとりあえずやって
みる。
②NWチームに必要なスキルがいままで違う、Playbook作成やGitの使い方な
どの展開が難しそう
 →問い合わせ専用チームを作るなどの運用整備が必要(QAの窓口)
面倒だったこと
利用するモジュールの動作を一つ一つ確認する、
Default値がなんのか?理解しておくことが超重要
実際によく分からないものを使うってのは認めづらい・・。
モジュールの挙動を理解しておいた方がいざという時良さそう
(説明もしやすそう)結局プログラミング必要?
まとめ
①ネットワークの作業をサービス化してみたが、 実装自体は簡単にできました。
 利用したモジュールは 1つだけ(bigip_pool_member)
 簡単なつくりですが、これでも調整 /作業時間の削減になります。
②サービスとして提供したボタンが正しければ、もし何かあった際の切り分けであったり
 そもそも、アプリチーム(実行者)の切り分け で問題が解決できることも想像できます。
実装できれば負担が下がる(はず)、簡単な作業からでもサービス化をするきっかけになれたら幸いです。
ご静聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
Daisuke Nagao
 

Mais procurados (20)

CircleCIのArtifactを活用してレポートを作成する
CircleCIのArtifactを活用してレポートを作成するCircleCIのArtifactを活用してレポートを作成する
CircleCIのArtifactを活用してレポートを作成する
 
JAWS DAYS 2016 Mafia Talk
JAWS DAYS 2016 Mafia TalkJAWS DAYS 2016 Mafia Talk
JAWS DAYS 2016 Mafia Talk
 
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
 
IoTを利用したウェブサービス・アーキテクチャ事例
IoTを利用したウェブサービス・アーキテクチャ事例IoTを利用したウェブサービス・アーキテクチャ事例
IoTを利用したウェブサービス・アーキテクチャ事例
 
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChefサーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
 
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
 
ビズリーチの新サービスとMackerel
ビズリーチの新サービスとMackerelビズリーチの新サービスとMackerel
ビズリーチの新サービスとMackerel
 
クラウドインテグレーターのお仕事
クラウドインテグレーターのお仕事クラウドインテグレーターのお仕事
クラウドインテグレーターのお仕事
 
#reco_tech Cloud searchでレコチョク検索の実現に向けて
#reco_tech   Cloud searchでレコチョク検索の実現に向けて#reco_tech   Cloud searchでレコチョク検索の実現に向けて
#reco_tech Cloud searchでレコチョク検索の実現に向けて
 
AWSで動画共有サイトを作成して全社に公開
AWSで動画共有サイトを作成して全社に公開AWSで動画共有サイトを作成して全社に公開
AWSで動画共有サイトを作成して全社に公開
 
46でγ-GTP 生まれて初の基準値に
46でγ-GTP 生まれて初の基準値に46でγ-GTP 生まれて初の基準値に
46でγ-GTP 生まれて初の基準値に
 
CircleCIで悩んだことピックアップ
CircleCIで悩んだことピックアップCircleCIで悩んだことピックアップ
CircleCIで悩んだことピックアップ
 
Devsumi2019 jaws festa_at_fun_location
Devsumi2019 jaws festa_at_fun_locationDevsumi2019 jaws festa_at_fun_location
Devsumi2019 jaws festa_at_fun_location
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
20210925_jazug_azure_what_to_do_first
20210925_jazug_azure_what_to_do_first20210925_jazug_azure_what_to_do_first
20210925_jazug_azure_what_to_do_first
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
 
Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要
 
Japan Backlog User Group in Fukuoka #4 LT1
Japan Backlog User Group in Fukuoka #4 LT1Japan Backlog User Group in Fukuoka #4 LT1
Japan Backlog User Group in Fukuoka #4 LT1
 
北の国からこんにちわ!Aws使いがgcp使いに変貌したお話
北の国からこんにちわ!Aws使いがgcp使いに変貌したお話北の国からこんにちわ!Aws使いがgcp使いに変貌したお話
北の国からこんにちわ!Aws使いがgcp使いに変貌したお話
 
Git hubenterpriseを導入してみて
Git hubenterpriseを導入してみてGit hubenterpriseを導入してみて
Git hubenterpriseを導入してみて
 

Semelhante a BIGIP作業サービス化してみた

Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話
葛 飛
 
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
softlayerjp
 

Semelhante a BIGIP作業サービス化してみた (20)

Puppet本にはcisco nexusを制御する章があるよ
Puppet本にはcisco nexusを制御する章があるよPuppet本にはcisco nexusを制御する章があるよ
Puppet本にはcisco nexusを制御する章があるよ
 
Gitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイ
 
Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話
 
Ansible AWXで一歩進んだプロビジョニング
Ansible AWXで一歩進んだプロビジョニングAnsible AWXで一歩進んだプロビジョニング
Ansible AWXで一歩進んだプロビジョニング
 
駅すぱあとWebサービスにおけるAWSとその周辺
駅すぱあとWebサービスにおけるAWSとその周辺駅すぱあとWebサービスにおけるAWSとその周辺
駅すぱあとWebサービスにおけるAWSとその周辺
 
なるほどわかった!App Service on Linux
なるほどわかった!App Service on Linuxなるほどわかった!App Service on Linux
なるほどわかった!App Service on Linux
 
ノンコーディングでも!ここまでできるkintone
ノンコーディングでも!ここまでできるkintoneノンコーディングでも!ここまでできるkintone
ノンコーディングでも!ここまでできるkintone
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
 
Azure勉強会 20201028 azure monitor のアラートを様々なコミュニケーションツールに通知する
Azure勉強会 20201028 azure monitor のアラートを様々なコミュニケーションツールに通知するAzure勉強会 20201028 azure monitor のアラートを様々なコミュニケーションツールに通知する
Azure勉強会 20201028 azure monitor のアラートを様々なコミュニケーションツールに通知する
 
20201029 hirata
20201029 hirata20201029 hirata
20201029 hirata
 
AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825
 
NAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりNAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のり
 
クラウド上のシステム監視 入門編
クラウド上のシステム監視 入門編クラウド上のシステム監視 入門編
クラウド上のシステム監視 入門編
 
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
 
Pixate導入についてのあれこれ
Pixate導入についてのあれこれPixate導入についてのあれこれ
Pixate導入についてのあれこれ
 
kintone Café 高知 Vol.2 20150530
kintone Café 高知 Vol.2 20150530kintone Café 高知 Vol.2 20150530
kintone Café 高知 Vol.2 20150530
 
VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
 
Ossフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみたOssフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみた
 
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
 

BIGIP作業サービス化してみた