SlideShare a Scribd company logo
1 of 19
Ansibleの実行速度を1/3に
した話
自動化大好きエンジニアLT会 第7回
■自己紹介
 [名前]: 上畑圭史(うえはたけいじ)
 [Twitter]: いじけまん(@ijikeman)
 [職業]:株式会社ラクスのインフラエンジニア
 [趣味1]: 自作キーボード大好き
アクリル板(4mm)にキーの穴(60個)を手であけた
自キー(自作キーボード)界隈ではちょっとした有名人
 [趣味2]: ピアノ歴5ヵ月(コロナを契機に) …
 [趣味3]: 野菜作り
 [趣味4]: 自動化大好きエンジニアLT会登壇(第1~7回) 皆勤中
 [趣味5]: 息子の将棋教室通いを機に家族全員で将棋にはまる
2
■背景
ラクスのサービスを支えるサーバのAnsible構成
管理化が進みましたが、
 対象台数増加
 構成管理範囲の増加
 Ansible実行回数の機会が増加
Ansibleの実行時間の長時間化が問題となってき
ました。
Ansibleのコード、及び環境の見直しで実行時間
を大幅に高速化したのでその話をします。
Ansible実行時間の把握
■1. Ansible実行時間の把握
Ansibleの「全体の実行時間」や「各タスク毎の実行時間」の見える化
[重要ポイント]
➡ 時間がかかっている処理がどの処理か
●AnsibleのCallbackプラグイン 「profile_tasks」の有効化
実行時間を表示
$ /etc/ansible/ansible.cfg
-----------------------------------------
[defaults]
callback_whitelist = profile_tasks
------------------------------------------
$ ANSIBLE_CALLBACK_WHITELIST='profile_tasks' ansible-playbook ...
もしくは
■1. Ansible実行時間の把握
 以下は実際に利用しているPlaybookの実行時間(対象:1ホスト)です。
Install Packagesの処理が約6割!!
…
Tuesday 07 June 2022 01:14:14 -0400 (0:00:03.472) 0:05:20.110 **********
common : Install Packages --------------------------------------------- 190.71s
common : Copy Scripts ------------------------------------------------- 14.21s
os : Server Reboot ------------------------------------------------------- 11.57s
os : Server Reboot ------------------------------------------------------- 9.78s
os : Install python module ----------------------------------------------- 8.90s
os : Install NetworkManager -------------------------------------------- 6.51s
…
Install Packages処理の見直し
■2. Install Packages処理の見直し
実コードと少し違いますが、パッケージのインストールは
1つずつパッケージをインストールを繰り返す処理になっていました。
---
- set_factINSTALL_PACKAGES:
-
NAME: 'httpd'
REPO: 'appstream'
-
NAME: 'httpd-devel'
REPO: 'appstream'
-
NAME: 'httpd-tools'
REPO: 'appstream'
-
NAME: 'httpd-manual'
REPO: 'appstream'
- name: Install Packages
yum:
name: "{{ item.NAME }}"
state: 'installed'
enablerepo: '{{ item.REPO }}'
with_items: "{{ INSTALL_PACKAGES }}"
パッケージリスト
ループ処理
■2. Install Packages処理の見直し
公式サイトにも記載がありますが、パッケージ名を配列で渡すことで、
一括インストールすることができます。
---
- set_factINSTALL_PACKAGES:
-
NAME:
- 'httpd‘
- 'httpd-devel'
- 'httpd-tools ‘
- 'httpd-manual'
REPO: 'appstream'
- name: Install Packages
yum:
name: "{{ item.NAME }}"
state: 'installed'
enablerepo: '{{ item.REPO }}'
with_items: "{{ INSTALL_PACKAGES }}"
処理は1回だけ!!
パッケージリポジトリ環境
■3. パッケージリポジトリ環境
Ansibleのパッケージ操作では
• リポジトリの参照
• パッケージのダウンロード
が毎回行われる。
リポジトリサーバ超重要
■改善点
 パッケージミラーリポジトリをターゲットホストの近くに設置
 パッケージをあらかじめ同梱したOSテンプレートを作成し利用
※ミラーリポジトリサーバはディスク容量をかなり使うので、ターゲットが多い場合は検討
Ansible実行環境改善
■4. Ansible実行環境改善
次にAnsible実行環境改善についてです。
検討したのは以下3つ
• Pipeliningの有効化(Ansible公式)
• Mitogen for Ansible(サードパーティ製Strategy Plugin)
• FORK数の変更
今回はこの話
■4. Ansible実行環境改善(Mitogen)
Mitogen for Ansible (マイトジェン)
https://mitogen.networkgenomics.com/index.htm
公式で紹介しています
■4. Ansible実行環境改善(Mitogen)
Mitogenの特徴
 実行コードのRAMへのキャッシュ
 pipelineと同様ターゲットへの書き込み削減
 従来のPreforkモデルに加えて、Thread化によるさらなる並列化・
高速化
 ネットワークコネクションの再利用等
これらにより実行速度を高速化することができます。
■4. Ansible実行環境改善(Mitogen)
●Ansible実行環境にMitogenを設置
$ curl -kL -o https://networkgenomics.com/try/mitogen-0.2.9.tar.gz
$ tar zxvf mitogen-0.2.9.tar.gz -C /opt/
$ ansible.cfg
---
[defaults]
strategy_plugins = /opt/mitogen-0.2.9/ansible_mitogen/plugins/strategy
---
$ playbook.yml
---
- name: test
strategy: mitogen_linear
実行時にmitogenを使用(Playbook単位)
$ ansible.cfg
---
[defaults]
strategy = mitogen_linear
実行時にmitogenを使用(全体に反映)
■結果
約320秒が 94秒に!!(70%削減)
Tuesday 07 June 2022 01:14:14 -0400 (0:00:03.472) 0:05:20.110 **********
Tuesday 07 June 2022 01:04:01 -0400 (0:00:02.327) 0:01:34.366 **********
■ブログ書きました
ラクステックブログに今回のAnsible高速化の記事を
書きました。
今回紹介できなかったpipeliningや各実行速度の検証
結果等、詳細な情報を記載しております。
ラクスエンジニアブログ
https://tech-blog.rakus.co.jp/
おわり。

More Related Content

What's hot

WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
You_Kinjoh
 

What's hot (20)

Consistent hash
Consistent hashConsistent hash
Consistent hash
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
AWSではじめるDNSSEC
AWSではじめるDNSSECAWSではじめるDNSSEC
AWSではじめるDNSSEC
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
 
第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例
 
PFSなTLS通信を復号する
PFSなTLS通信を復号するPFSなTLS通信を復号する
PFSなTLS通信を復号する
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
 
20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre
20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre
20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
Hack wifi password using kali linux
Hack wifi password using kali linuxHack wifi password using kali linux
Hack wifi password using kali linux
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎
 
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 

Similar to Ansibleの実行速度を1/3にした話 (8)

ラクス共通Ansibleコードテンプレートを作った話
ラクス共通Ansibleコードテンプレートを作った話ラクス共通Ansibleコードテンプレートを作った話
ラクス共通Ansibleコードテンプレートを作った話
 
20221102_automation_lt09.pptx
20221102_automation_lt09.pptx20221102_automation_lt09.pptx
20221102_automation_lt09.pptx
 
20221102_automation_lt09.pptx
20221102_automation_lt09.pptx20221102_automation_lt09.pptx
20221102_automation_lt09.pptx
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
 
既存サーバを後からAnsibleで構成管理する
既存サーバを後からAnsibleで構成管理する既存サーバを後からAnsibleで構成管理する
既存サーバを後からAnsibleで構成管理する
 
Kubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみた
Kubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみたKubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみた
Kubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみた
 
Ansible specでテストをする話
Ansible specでテストをする話Ansible specでテストをする話
Ansible specでテストをする話
 
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみたPython製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
 

Recently uploaded

Recently uploaded (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

Ansibleの実行速度を1/3にした話