Ansibleではじめる
インフラ構築自動化と構成管理
新日鉄住金ソリューションズ(株)技術本部 システム研究開発センター
小野寺 大地安久 隼人

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

自己紹介
 小野寺


大地

北海道生まれ、北海道育ち

ID @onodes Think ITでAnsible入門の連載を執筆中(4月頃公開）
 Ruby, Python, Linuxを中心にして
 自宅OpenStack, Docker,機械学習あたりを家でやってます。
 安久


隼人

関西生まれ 海育ち

ID @hayato1226
 Think ITでAnsible入門の連載を執筆中(4月頃公開）
 自社クラウドサービス開発、マルチクラウドの研究
 自宅FCSANなど


Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

2

1

はじめにCopyright ©2016 NS Solutions Corporation. All Rights Reserved.

3

サーバの構築・運用でこういうことはありませんか？

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

4

こういうことはありませんか？①
初期には少ないサーバ台数だったため、管理可能でした。
 サービスが流行った！システムの数が増えた！を繰り返すと…
 それを支えるサーバ台数の増加で管理が困難になります。
 でも人員増加はないです…
 一人ひとりが管理するシステム数が膨大になり、作業に時間がかかる。
初期(例えば3台を管理)
設計書 運用手順書

システム・サーバの増加
設計書 運用手順書

？
？
将来…
構築手順書

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

構築手順書

5

こういうことはありませんか？②
システムに対して変更作業を実施すると、各種手順書も修正が必要となります。
 これを何度も繰り返すと、実際のシステムと設計書、さらには同じ役割のサーバ同士の設定内容が異なってしまうことが発生します。
 どこを変更したのかがわからない！
 現在のシステム構成を管理し続ける負荷が増大していく。
運用中
設計書1 運用手順書2

構築手順書3Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

設計書と実際のパラメータが違う！
どっちが正しいの？
？
？

メンテナンス・新機能追加など
設計書2 運用手順書2

構築手順書46

ここから生まれる課題

一人ひとりが管理するシステム数が膨大になり、作業に時間がかかる。

現在のシステムの構成の管理が困難になる。

システム開発の速度の低下=機会の損失！！
こうした問題を解決する手法としてコードによるインフラ管理手法“Infrastructure as Code (IaC)” に注目が集まっています
Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

7

2

IaCを具現化するAnsible

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

8

Ansibleの役割と特徴
Ansible Ansibleの3つの役割

cloud

構成管理ツール デプロイメントツール
 オーケストレーションツール
inventoryAPIserverplaybook

 Ansibleの特徴

modulepluginnetwork

エージェントレスのアーキテクチャ
 モジュールによる拡張性の高さ
 後発の製品のため、過去の構成管理ツールの弱点を克服！
PuppetChefSalt

Ansible

最初のリリース

2005

2009

2011

2012

設定言語

DSL

Ruby/DSL

YAMLエージェント要否

必要

必要

必要

YAML
不要※

※ 管理対象にPythonがインストールされている必要があります。
Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

9[参考] Ansibleの仕組み
 Playbookを元にAnsibleサーバがpython codeを生成した後、管理対象に対して転送し、ssh経由で実行する仕組み
管理対象

Ansible サーバ

タスク実行

inventory
playbook

modulePython code

自動生成転送(Sftp)

Python code

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

ローカルモードと言う、サーバを立てず自身をAnsibleで管理するモードもある10

Ansibleをオススメする理由 自動化ツール・構成管理ツールを使ったことがない人にAnsibleをオススメする理由
入門しやすい1.



構築手順や構成情報を構造化されたデータを表現しやすい、汎用のフォーマット(YAML形式)で記述するため、初学者でも扱いやすい

動作環境の準備が容易

2.

管理対象に特別なツールをインストールする必要がない–⇒エージェントレス

管理対象にはsshでログインできる環境であれば利用可能–

Pythonが必要だが、主要Linuxディストリビューションにはデフォルトで入っている。

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

11

3Ansibleのサンプル

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

12

Ansibleのサンプル
 Ansibleは基本的に2つのコードがあれば動作します。※

Inventory file1.

管理対象の役割とホスト情報を記述する部分

2.

Playbook
管理対象の構成や構築手順を記載する部分
 YAML形式で記述する
※ アドホックモードは除く。
Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

13

Ansibleのサンプル(Inventory file) Web3層アプリケーションを想定したInventoryfile

Webサーバ1台
 APサーバ2台
 DBサーバ 3台 下記サンプルはIPで書いていますが、名前解決できるホスト名でも問題ありません。
[webservers]
192.168.0.40[apservers]
192.168.0.30
192.168.0.31

管理対象の台数が多い時は、[dbservers]
192.168.0.20の様にIPアドレス(やホスト名)の連番を省略したり、Inventory fileではなく外部データソースからInventoryを動的に生成するdynamic inventoryと言う機能もあります

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

[apservers]
192.168.0.[30:40]

Ansibleのサンプル(Playbook) yumで色々インストールしたい！
Apacheをインストールするサンプル- hosts: webservers
tasks:- name: install httpd httpd-devel gcc
yum: name=“{{ item }}” state=latest
with_items:- httpd- httpd-devel
- gcc



各要素の意味hosts

実行対象のサーバグループを指定

name

手順が何を実施しているかを記述（optional）

yum

yumコマンドを実行するAnsible module

state

インストールするパッケージのバージョンを指定

with_items

イテレータ(YAML形式の配列を指定)

item

with_itemsで定義した配列が展開される

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

15私たちは、このように活用しています！！
 ShellShockを覚えていますか?


我々が管理している数百台のサーバに対して1時間程度でパッチ適用を完了させた–––––

それまでAnsibleで管理していなかった環境へ導入(導入しやすさ)
検証環境の構築10分
Ansible Playbookをコーディング 10分
実行30分(CPUやNW負荷を考えて並列度を落として実行)
確認10分 （これも自動で行いました） OpenStackの構築もAnsibleで社内の研究用クラウド(NSXIC)で利用しているOpenStackもAnsibleで自動構築・構成管理しています Ansibleだけではなく、他のツールとも組み合わせ、物理サーバのセットアップからOpenStackリソースへの組み込みまで自動化しています 自動化されたことで環境構築の速度が上がったことはもちろん、運用手順がシンプルになったことでオペレーションミスの削減にも繋がっています Dockerとの組み合わせ

Ansible2.0と共に搭載されたAnsible Docker Pluginを利用したDockerの構成管理方法も検討・整理をしています

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

16

4

まとめ

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

17

まとめ1/2
 Ansibleはサーバ構築を自動化する構成管理ツール
 類似のツールに比べてAnsibleを採用する理由
1.
2.
3.

エージェントレス
モジュールによる拡張性
後発ならではのかゆい所に手が届く改善がされている

 Ansibleを実行するには？
1.
2.
3.

実行元ホストにAnsibleがインストールされている管理対象にPythonがインストールされている実行元から管理対象にsshでログインできること

 Ansibleで必要なソースコードは？
1.
2.

Inventory file
Playbook

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

18

まとめ2/2
一人ひとりが管理するサーバ数が膨大になり、作業に時間がかかる。

Ansibleは自動化ツール！
現在のシステムの構成を判断するのに時間がかかる。

Ansibleは構成管理ツール！

 Ansibleのようなツールは課題解決の糸口になります 中でもAnsibleは入門しやすいツールです Ansibleを利用して、開発速度・更改速度を上げて、より価値があるシステムを提供しましょう！

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

19商標等の記載について• NS（ロゴ）、NS Solutions、NSSOLは、新日鉄住金ソリューションズ株式会社の登録商標です。
• NSXICは新日鉄住金ソリューションズ株式会社の登録商標です。
• Linuxは Linus Torvalds氏の、米国およびその他の国における登録商標 あるいは商標です。
• その他本文記載の会社名及び製品名は、それぞれ各社の商標又は登録商標です。

Copyright ©2016 NS Solutions Corporation. All Rights Reserved.

20