SlideShare a Scribd company logo
DevOpsにおけるAnsibleの
立ち位置と使い所
廣川英寿@株式会社リアルグローブ
Feb 27, 2017 『Ansible徹底入門』出版イベント
自己紹介
廣川英寿 (github: @h-hirokawa)
株式会社リアルグローブ所属 主幹技師
Pythonメイン使いのソフトウェアエンジニア
Webアプリ、PaaS基盤、機械学習、言語処理、 etc…
『Ansible徹底入門』では 1 ~ 5章とコラム類の執筆を担当
DevOps とはなんだったのか?
DevOps とは
1. システム運用にソフトウェア開発プラクティスを導入し
2. 開発(Dev)と運用(Ops)のサイクルを連携させることで
3. スピーディかつ柔軟なITビジネス展開を実現すること
※個人の感想です
DevOpsの連携イメージ
Dev
Ops
Biz
理想的なDevOpsによるビジネス加速の
ためには、
 DevとOps双方が効率化/短サイクル
化されていなければならない
→ ex. Ops部門へのAgile導入
 単なる部門単位の効率化ではなく、
DevがOpsを駆動するしくみ作りが重
要
→ ex. CIによる自動連携
Infrastructure as Codeの必要性
先述した「OpsへのAgile導入」や「CI連携」のためには、以下の条件を満たす必要がある
ソフトウェアのソースと同手法でシステムのインフラを管理できる
各種インフラ操作を自動で行うことができる
この両方の条件を満たすために必要とされるのが、
Infrastructure as Code
Infrastructure as Codeとは
インフラの設定/状態を自動実行可能なコードとして記述すること
Infrastructure as Codeの発想自体はDevOpsより古くからある
 この系統で最も古くからあるソフトウェア CFEngine は 1993年に登場
導入メリットは、効率アップ、安全性アップなどなど
DevOps的な文脈で重要なのは以下
 ソフトウェアのソースと全く同様にバージョン管理できる
 自動テストを行うことができる
 コマンドラインやAPIを用いての外部連携が容易 = CI連携可能
AnsibleもInfrastructure as Codeを
実現するソフトウェアの1つ。
Ansibleのコード = Playbook
Ansibleはどこに使えるのか
Develop
VersionControl
CI
Orchestration
Configuration
Monitoring
DevOpsワークフロー例
Develop
VersionControl
CI
Orchestration
Configuration
Monitoring
DevOpsワークフロー例
Ansibleはこれら全ての工程と
組み合わせて活用することができる
活用パターン 1. 開発
開発環境の構築をAnsibleから行うことで、開発者間で環境を揃えること
が容易になるとともに、環境依存の不具合などが事後的に発覚するリス
クを低減できる。
リリース時にまとめて手順を作るのではなく、開発段階で都度システム
が正しく動くようにPlaybookを書き換えていくことになるため、よりAgile的。
活用パターン 1. 開発
開発環境をVagrantから操作する場合であれば、Ansibleプロビジョナー
が組み込みで備わっており、簡単に連携可能。
Dockerコンテナを使うのであればAnsible Containerでコンテナ・イメー
ジをビルドすることができる。非コンテナ環境で使っているRoleを使いま
わせるなど、通常のDockerfileにはない特徴を持っている。
詳細は『徹底入門』 9章を参照のこと
活用パターン 2-3. バージョン管理、 CI連携
AnsibleのPlaybookは他のソースコード同様にgitなどでバージョン管理
することができる
Playbookは常にバージョン管理しておくのがBest Practice.
github や bitbucketのWebhook機能を使えば、JenkinsやTravisなどの
CIツールを介した「コードプッシュ → 環境デプロイ」までを自動化できる。
Ansible Tower(公式Web GUI/API)を導入する場合、自動デプロイを他
のCIツールなしで構築可能。
活用パターン 4. オーケストレーション
Ansibleには豊富なCloud操作モジュールが組み込まれており、多くのクラウド
基盤でVMやネットワーク周りのオーケストレーション操作を行うことができる。
 特にOpenStackやAWSについてはモジュールが充実している
最近でもネットワーク機器操作モジュールやKubernetes操作モジュールが追加
されており、オーケストレーションの対応範囲は拡大中。
オーケストレーションで出来上がった新規マシン内をそのままセットアップするこ
ともできる。複数の作業工程をワンストップで実行できるのはAnsibleの大きな
特徴。
活用パターン 4. オーケストレーション
留意点
例えばAzure系モジュールだと、現時点ではVM作成はできるが可用性
セットは取り扱えないなど、操作できる機能が限られている。
柔軟なオーケストレーションをAnsible経由で実行したい場合は、Azure ARM
Templateなどの専用機能と連携させることになる。詳しくは『徹底入門』8章参照。
クラウドのオーケストレーションに関してはTerraformのような機能特化
したソフトウェアに分がある場合も。
Terraformなら前回デプロイ時点の情報を記憶することで適切な差分更新を行える
Ansibleの場合、例えばマシンを減らす場合は削除タスクを明示する必要あり
Terraformに比べてAnsibleの方がより慎重とも言える、一長一短
活用パターン 5. 設定管理
マシン内をネットワーク経由(SSH/WinRM)でセットアップする設定管理
(Configuration)は、Ansibleの一番の基本機能かつ最も得意な分野。
550種類ほどあるAnsible組み込みモジュールのうち、大半が設定管理
用のモジュール。OSの基本操作から各ミドルウェアに特化した便利モ
ジュールまで、多数の機能が揃っている。
Chef, Puppetとの最も大きな違いはAnsibleがエージェントレスで動く点。
エージェント型として動かしたい場合は ansible-pull を使う。自動スケーリング時
のマシン初期セットアップを行いたい場合などに便利。
活用パターン 6. モニタリング
Ansible自体は常駐プロセスを持たず、モニタリング自体をAnsibleから
行うことはできない。
Ansibleからセットアップしたマシンを監視登録するなど、モニタリング・シ
ステムをAnsibleから操作することができる。モニタリング・モジュール、ク
ラスタリング・モジュール一覧を参照。
モニタリング・システムからAnsibleを起動して、障害発生時の一次対応
を自動化するなどの応用もできる。
どこに使うのがベスト?
おすすめパターン
マシン内のConfigurationについては、Ansible一番の得意分野。開発環境、稼
働環境を問わず定型作業はどんどんAnsibleで自動化しちゃいましょう。
Orchestrationについては、複雑な処理を必要とする場合はAnsibleだけでは不
十分となることも多い。ただし、OrchestrationとConfigurationをシームレスに
実行するといった、繋ぎこみの部分で使うだけでもAnsibleは便利。
各種CIツールや監視システムとの連携を組むことで、テスト実行や障害対応な
ど、通常のシステム・セットアップに止まらない活用ができる。
まとめ + 補足
Ansibleとは、DevOps実現のために必要とされる要素の一つである
Infrastructure as Code のためのソフトウェア
Ansibleからはマシン内設定以外に各種オーケストレーション制御も可能
が、オーケストレーション系については、まだモジュールが出揃っていない部分あり
やろうと思えば大概のことが実現可能ではある
command(実コマンド操作)、uri(APIキック)を使えば出来ない事はほぼない
モジュールも自前実装可能(Python以外でもOK、Goとかでも書ける)
無理して全てAnsible化する必要はない、より便利な方法を使いましょう
その「便利な方法」自体をAnsibleから操作するのはアリ!
Ansibleとともに素敵な DevOps ライフを!

More Related Content

PPTX
KeycloakでAPI認可に入門する
PDF
Keycloak拡張入門
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
Akkaとは。アクターモデル とは。
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PPTX
本当は恐ろしい分散システムの話
PDF
DockerとPodmanの比較
KeycloakでAPI認可に入門する
Keycloak拡張入門
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Akkaとは。アクターモデル とは。
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
本当は恐ろしい分散システムの話
DockerとPodmanの比較

What's hot (20)

PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PPTX
MongoDBが遅いときの切り分け方法
PPTX
MongoDBの監視
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
PDF
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
PDF
ソーシャルゲームのためのデータベース設計
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
あなたの知らないPostgreSQL監視の世界
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PDF
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
PDF
Djangoフレームワークのユーザーモデルと認証
PDF
できる!並列・並行プログラミング
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
社内ドキュメント検索システム構築のノウハウ
PPTX
Docker Tokyo
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
MongoDBが遅いときの切り分け方法
MongoDBの監視
コンテナの作り方「Dockerは裏方で何をしているのか?」
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
ソーシャルゲームのためのデータベース設計
BuildKitによる高速でセキュアなイメージビルド
あなたの知らないPostgreSQL監視の世界
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Djangoフレームワークのユーザーモデルと認証
できる!並列・並行プログラミング
新入社員のための大規模ゲーム開発入門 サーバサイド編
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
社内ドキュメント検索システム構築のノウハウ
Docker Tokyo
Ad

Similar to DevOpsにおけるAnsibleの立ち位置と使い所 (20)

PPTX
DevOps とは何か 何であるべきか
PDF
DevOpsが引き金となるインフラエンジニアの進撃
PDF
ゼロからのプログラミングRails講座 Codeanywhere版
PPTX
DevOps勉強会
PDF
Googleのインフラ技術から考える理想のDevOps
PDF
デベロッパープロダクトシステムの マイクロサービス化
PPTX
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
PDF
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
PDF
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
PDF
HPE×SUSE協業ソリューション
PDF
Case study of DevOps for Hadoop in Recruit.
PDF
Case study of DevOps for Hadoop in Recruit.
PDF
DevOpsハッカソン参加レポート
PDF
20170710 hifive-test-meetup
PPTX
[2021年3月11日] エンタープライズ・インフラ構築・運用でもDevOpsを活用しよう(CloudNative Days Spring 2021 ON...
PPTX
Self-Introduction with DevOps
PDF
DevOps for Small Starter
PDF
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
PDF
DevOps を前提としたユーザー インターフェイスの構造解析
PPTX
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
DevOps とは何か 何であるべきか
DevOpsが引き金となるインフラエンジニアの進撃
ゼロからのプログラミングRails講座 Codeanywhere版
DevOps勉強会
Googleのインフラ技術から考える理想のDevOps
デベロッパープロダクトシステムの マイクロサービス化
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
HPE×SUSE協業ソリューション
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
DevOpsハッカソン参加レポート
20170710 hifive-test-meetup
[2021年3月11日] エンタープライズ・インフラ構築・運用でもDevOpsを活用しよう(CloudNative Days Spring 2021 ON...
Self-Introduction with DevOps
DevOps for Small Starter
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
DevOps を前提としたユーザー インターフェイスの構造解析
Enterprise Development Conference 2016 プライベートPaaSが実現するアジャイル開発と次世代型アプリケーションの実例
Ad

DevOpsにおけるAnsibleの立ち位置と使い所