2021年新卒者向け 技術インターン
自動化ツール Ansible
に触れてみよう
2020/02/25
株式会社エーピーコミュニケーションズ
技術開発部 横地 晃
1
はじめに
2
本日の内容
インフラエンジニアの仕事の流れのイメージをつかんでいただき、Linux
サーバーを対象とした Ansible による作業の自動化を体験していただきま
す。
1. インフラエンジニアの仕事の流れ
2. 手動による作業デモ
3. Ansible の概要
4. Ansible にハンズオン
5. まとめ
3
自己紹介
名前 横地 晃
所属 システム基盤サービス事業本部 技術開発部 自動化グループ
職種 テクニカルエバンジェリスト
業務 登壇やブログ、ネットワーク自動化サービスの開発
@akira6592
twitter 技術ブログ Ansible実践ガイド 第3版
https://book.impress.co.jp/books/1118101094
Software Design
https://tekunabe.hatenablog.jp/
https://gihyo.jp/magazine/SD/archive/2018/201812
https://gihyo.jp/magazine/SD/archive/2019/201912
4
インフラエンジニアの仕事の流れ
5
インフラエンジニアの仕事の流れ
● 品質を担保するため、いくつかの工程を経ながら進めます。
要件定義 設計 構築 テスト 運用
何をどう作るかを決める 作る 確認する 運用する
主な成果物はドキュメント 作業
6
インフラエンジニアの仕事の流れ
要件定義 設計 構築 テスト 運用
何をどう作るか決めて
レシピを作成する
調理する 味見する 食卓へ
主な成果物はドキュメント 作業
7
● 料理に例えると
「作業」には手順書が必要
なぜでしょうか
8
「作業」には手順書が必要
● なぜ必要か
1. 確実に作業するため
2. 人に依頼するため
9
【デモ・手動編】
Web サーバーの構築
10
デモ内容
● 手動で、Webサーバー(httpd)を構築します。
● 講師がデモしますので、以下の別紙手順書をなぞりながらご覧くださ
い。
○ 【デモ1】Webサーバー構築手順書(手動編)
■ GitHub上の「demo1/Webサーバー構築手順書(手動編).pdf」
● https://github.com/akira6592/intern2021/tree/master/demo1
11
● httpd のインストール
● 設定変更
● コンテンツの配置
● サービスの起動
CentOS 7
SSH
デモ内容(自動化比較)
● 比較のため、同じ作業を Ansible で自動化したデモをご覧ください。
12
● httpd のインストール
● 設定変更
● コンテンツの配置
● サービスの起動
CentOS 7
SSH
Ansible 概要
13
Ansible とは
● サーバーやネットワーク機器などへの作業を自動化するツール
14
● パッケージ管理
● ファイル操作
● 設定変更
など
● 情報取得
● 設定変更
など
サーバー
Ansible
ネットワーク機器
ほか、クラウド、データベースなど
Ansible の特徴
15
シンプル
● Playbookという構成定義ファイルを利用する
● プログラミング不要
パワフル
● 多数のサーバー、クラウド、ネットワーク機器向け
モジュールを標準装備
● モジュールを自作することも可能
エージェントレス
● 操作対象機器側に専用ソフト(エージェント)はインストー
ル不要
● シンプル、パワフル、エージェントレスという3つの特徴があります
主な構成要素
16
host1
host2
host3
対象機器
なにを
するか
どこに
対して
接続・操作
(3) Playbook(2) モジュール
(1) インベントリ
参照
利用
インベントリとは
● 操作対象のホスト情報(IPアドレス、ホスト名)
● 変数の定義やグループ化も可能
● INI ファイル形式で書かれることが多い
17
[web]
web01
web02
[db]
db01
db02
グループ名
所属ホスト
サンプル
モジュールとは
● Ansible の機能単位
● モジュールが増えると、できることが増える
● Playbook から、利用するモジュールとオプションを指定
18
システム クラウド等 DB 監視 通知 NW機器
Linux
Windows
AWS
Azure
GCP
Docker
PostgreSQL
MySQL
MS SQL
Server
Zabbix
Sensu
nagios
Mail
Slack
syslog
Cisco IOS
Juniper Junos
Arista EOS
対応プラットフォーム例
などなど、バージョンアップで増えていく
モジュールとは
● 全モジュール 3,000 以上
19
分類 モジュール名 用途
サーバー系 yum yumによるパッケージのインストール、
アンインストール
user ユーザーの作成、削除
win_firewall_rule Windows Firewallの設定
クラウド系 ec2 AWSのec2インスタンスの作成、終了、起動、停止
azure_rm_virtualmachine Azure VM の管理
ネットワーク系 ios_config Cisco IOS 機器へのコンフィグ投入
junos_config Juniper Junos 機器へのコンフィグ投入
などなど、バージョンアップで増えていく
モジュール例
Playbook とは
● YAMLというフォーマットで記述する構成定義ファイル
20
サンプル - hosts: web
become: yes
tasks:
- name: install
yum:
name: httpd
state: latest
- name: deploy
copy:
src: index.html
dest: /var/www/html/index.html
・ グループ web に
・httpd インストール
・index.html コピー
なにをするか
どこに対して
Playbook とは(YAMLの補足)
● 少ない記述で表現するフォーマット
21
- hosts: web
become: yes
tasks:
- name: install
yum:
name: httpd
state: latest
- name: deploy
copy:
src: index.html
dest: /var/www/html/index.html
スペースの数で構造を表現
(タブは利用不可)
サンプル
キー: 値
でディクショナリを表現
(: の後はスペース)
- で配列を表現
(- の後はスペース)
Playbook とは(YAML と JSON )
22
- hosts: web
become: yes
tasks:
- name: install
yum:
name: httpd
state: latest
- name: deploy
copy:
src: index.html
dest: /var/www/html/index.html
[
{
"hosts": "web",
"become": "yes",
"tasks": [
{
"name": "install",
"yum": {
"name": "httpd",
"state": "latest"
}
},
{
"name": "deploy",
"copy": {
"src": "index.html",
"dest": "/var/www/html/index.html"
}
}
]
}
]
YAML JSON
スペースの数を厳密にする必要があ
る代わりに、括弧などの記号を省略
できる
【ハンズオン1・自動化準備編】
Web サーバーの構築
23
ハンズオン環境について
● みなさんのPCの「Tera Term」から controller にSSHで接続して作業し
ます。
● controller への接続情報は別紙「受講者用環境パラメータ一覧表」を参
照してください。
24
controller node1
ハンズオン環境
ハンズオン環境は1人1セット用意してあります
お手元のノートPC
SSH接続
必要なものの準備
● 「ハンズオン・手動編」の作業内容を Ansible で自動化するための準備
をします。
○ 詳細はGitHub上の「handson1/README.md」を参照してください。
■ https://github.com/akira6592/intern2021/tree/master/handson1
25
controller node1
ハンズオン環境
1. インベントリ
■ 操作対象ホスト情報
2. Playbook
■ 構成定義ファイル
必要なもの
【ハンズオン1・自動化実行編】
Web サーバーの構築
26
Playbook の実行
● 先ほど準備した Playbook をもとに作業します。
● 詳細は以下の別紙手順書を参照してください。
○ Webサーバー構築手順書(自動化編)
■ GitHub上の「handson1/Webサーバー構築手順書(自動化編).pdf」
● https://github.com/akira6592/intern2021/blob/master/handson1/Web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF
%89%E6%89%8B%E9%A0%86%E6%9B%B8%EF%BC%88%E8%87%AA%E5%8B%95%E5%8C%96%E7%B7%A8%EF%BC%89.pdf
27
手動と自動化のふりかえり
28
かかる時間
● 自動化で短縮できる時間とできない時間があります。
29
手動 自動化
ツールの習得時間
仕組みの準備時間
手順書の作成時間
作業時間
大
大
大
大
小
小
自動化の向き不向き
● 自動化にも向き不向きがあるので、見極めが必要です。
30
向いている 向いていない
作業頻度 多い 少ない
対象機器数 多い 少ない
定型化 しやすい しにくい
まとめ
31
まとめ
● Ansible を通じて、自動化を体験していただきました。
● Ansible は、シンプル、パワフル、エージェントレスという特
徴を持った自動化ツールです。
●自動化にも向き不向きがあるため、見極めが必要です。
32
みなさんがエンジニアになった際に、
自動化の考え方や始め方の助けになれば幸いです。
参考資料
● 公式ドキュメント
○ Ansible Documentation
■ https://docs.ansible.com/
● 書籍
○ Ansible構築・運用ガイドブック
■ https://book.mynavi.jp/ec/products/detail/id=112246
○ Ansible 実践ガイド 第3版
■ https://book.impress.co.jp/books/1118101094
● コミュニティ
○ Ansible ユーザー会(定期的にもくもく会や発表イベントを開催)
■ https://ansible-users.connpass.com/
●ハンズオンコンテンツ(ブラウザだけて気軽に試せる)
○ @irixjp さん作成の Katacoda コース
■ https://www.katacoda.com/irixjp
33

自動化ツール Ansible に触れてみよう(技術インターン)