SlideShare a Scribd company logo
1 of 34
Download to read offline
2015.09.10 (Thu)
Ansible 入門 #01 (初心者向け)
CyberZ 廣瀬 太郎
Ansible説明会
1. Ansibleとは
2. Ansibleの特徴
3. Ansibleの用語解説
※この資料は以下のようなAnsible初心者を対象としています
✤ Ansibleを触ってみたい、導入したいと考えている方
✤ サーバー構築とかやってる方
✤ サーバーデプロイを効率化したい方
✤ Chefは辛い方
✤ Ansibleって響きが気になる方
1. Ansibleとは
Ansibleとは
“Ansible is Simple IT Automation”
SIMPLE AGENTLESS POWERFUL
Automate in hours - not
weeks - with Ansible's
human-readable IT
automation language.
Ansible uses SSH instead
of agents. More efficient,
more secure and less to
manage.
App deployment,
configuration
management and
orchestration - all from
one system.
qt: http://www.ansible.com/home
なぜやるの?
1) 構成管理
✤ ドキュメントが古い
✤ 更新も面倒
✤ Snapshot, AMIが秘伝のタレ化
✤ 何が動いているのか分からない
✤ まっさらなOSから環境構築でき
ない
✤ このサーバは「どうあるべき」なの
か
なぜやるの?
2) 自動化
✤ 加速するビジネス
✤ 初動はできるだけ早く
✤ 付加価値増に集中したい
✤ 定常業務は低コストで
✤ アプリケーションデプロイ
✤ 脆弱性対応
世にあるツール
Fabric
Configuration Orchestration
世にあるツール
Fabric
Configuration Orchestration
世にあるツール
Fabric
Configuration Orchestration
2. Ansibleの特徴
Ansibleの特徴
“Ansible is Simple IT Automation”
SIMPLE AGENTLESS POWERFUL
Automate in hours - not
weeks - with Ansible's
human-readable IT
automation language.
Ansible uses SSH instead
of agents. More efficient,
more secure and less to
manage.
App deployment,
configuration
management and
orchestration - all from
one system.
qt: http://www.ansible.com/home
Ansibleの特徴
“Ansible is Simple IT Automation”
✤ 定義はYAML( 設定ファイル)
✤ プログラムですら無いため学習障壁が少ない
SIMPLE
Automate in hours - not
weeks - with Ansible's
human-readable IT
automation language.
---
- hosts: webservers
tasks:
- name: yum install nginx
yum: pkg=nginx state=installed
Ansibleの特徴
“Ansible is Simple IT Automation”
✤ agentインストール不要
✤ 運用管理サーバでansible*コマンドが使えればOK
✤ Pythonが入っていれば導入可能
✤ 専用のserverやagentの運用管理不要
✤ 常駐するプロセスはなし
AGENTLESS
Ansible uses SSH instead
of agents. More efficient,
more secure and less to
manage.
Ansibleの特徴
“Ansible is Simple IT Automation”
✤ 構成管理だけでなくOrchestrationとしても使えるので、
ちょっとした操作や調査の支援ツールにもなる
✤ 高機能だが、スモールスタートで始めることも可能
POWERFUL
App deployment,
configuration
management and
orchestration - all from
one system.
柔軟な実行方法
✤ 指定したタイミングで実行
✤ 複数並列実行
✤ 必要な処理だけをone-linerでadhocに実行
✤ Push型だけでなくPull型もサポート (ansible-pull)
Ansibleの特徴
“Ansible is Simple IT Automation”
冪等性
✤ 記載したDSLの定義の状態に収束してくれる
✤ ある操作を何回行っても結果は同じ
✤ 変更がなければ処理をスキップする
以下がインストールされていること
・nginx
・java
・zabbix_agentd
サービスが起動していること
・nginx
・zabbix_agentd
3. Ansibleの用語解説
主なコマンド
✤ ansible
✤ Adhocに実行する
✤ ansible-playbook
✤ 作成した定義 (playbook) を実行する
# コマンド実行例
$ ansible -m 'ping' webservers
ansible-test02 | success >> {
"changed": false,
"ping": "pong"
}
# dry-run
$ ansible-playbook hands-on00.yml --check --diff
…
PLAY RECAP ********************************************************************
ansible-test02 : ok=2 changed=0 unreachable=0 failed=0
# execute
$ ansible-playbook hands-on00.yml
…
PLAY RECAP ********************************************************************
ansible-test02 : ok=2 changed=0 unreachable=0 failed=0
Inventory Host
Ansibleで管理するホストをini形式で記載する
✤ ホストのグルーピングが可能
# 例: example.com サイトをAnsibleで管理する
mail.example.com
[webservers]
foo.example.com
bar.example.com
Playbook
実行する処理の内容をYAML形式で記載する
✤ 最初はplaybookとinventry hostさえあればOK
---
- hosts: webservers
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=templates/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
Task (Tasks lists)
具体的な処理を、実行する順に配列で記載する
✤ 基本は name と module のセットを記載する
✤ 実行条件やトリガー (notify/handler) を加えることも可能
✤ 実行条件: [when, changed_when, ignore_errors, always_runなど]
✤ トリガー: handlers で記載した処理の名前をnotifyで指定
---
- hosts: webservers
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=templates/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
Module
Tasksで指定した処理を実行する汎用ライブラリ
✤ Modules are “idempotent” (冪等性)
✤ Core Modulesだけでも必要な作業は大体カバーできる
---
- hosts: webservers
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=templates/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
代表的なModule
✤ yum / apt : パッケージ管理 (インストール, 削除など)
✤ service : サービス操作 (起動, 停止, 再起動など)
✤ file : ファイル操作 (作成, 削除, 属性変更など)
✤ copy : ファイルをコピー
✤ template : ファイルを雛形としてファイル生成 (後述)
✤ shell : 任意のshellコマンドを実行(※冪等性は自分で担保)
✤ 具体的な操作の他、“register” を併用して条件分岐に利用する等の使い方もある
公式ドキュメントにModuleの一覧と説明があるので、詳しくは以下を参照ください。
http://docs.ansible.com/ansible/modules_by_category.html
共通化 (Include / Role)
✤ Include:
✤ tasksやhanderls等を別ファイルとして切り出し、一つのRole
としてまとめておくことで再利用しやすくする
---
- hosts: webservers
tasks:
- include: apache.yml
- include: deploy.yml site=service_A
- include: deploy.yml site=service_B
共通化 (Include / Role)
✤ Role:
✤ task, vars, files, templates, handlers一式を共通化
✤ playbookからは roles 一発で呼び出しできる
✤ 複数サーバに適用する、汎化させるなどの用途で活用
# playbook
---
- hosts: webservers
roles:
- common
- webserver
# ディレクトリ構成
hosts
webservers.yml
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
webservers/
…
共通化 (Template / Variable)
✤ Template:
✤ 変数をbindして配布できる
✤ ホスト毎に異なるようなファイルを配布するときに活用
✤ 書式は “Jinja2”
# files/etc/motd.j2
##################################################
!!! Production server {{ ansible_hostname }} !!!
##################################################
__| __|_ )
_| ( / Amazon Linux AMI
___|___|___|
https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
共通化 (Template / Variable)
✤ Variable:
✤ 条件分岐やTemplateで利用する変数を定義し呼出可能
✤ 書式はYAML
✤ playbook, inventry host, varsなど様々な箇所で指定可能
✤ OS層の下回りの情報はansibleが自動で取得し呼出可能 (Facts)
✤ 利用可能な変数は `ansible hostname -m setup` で確認可能
✤ Chefで言う ohai
# Variables
innodb_buffer_pool_size: 6144M
innodb_log_file_size: 2048M
max_connections: 1000
…
$ ansible ansible-test02 -m 'setup'
ansible-test02 | success >> {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"172.31.xx.xx"
],
"ansible_all_ipv6_addresses": [],
"ansible_architecture": "x86_64",
"ansible_bios_date": "NA",
"ansible_bios_version": "NA",
"ansible_cmdline": {
"KEYTABLE": "us",
"LANG": "ja-JP.UTF-8",
Hands On!
Installation
1. サーバログイン
1. サーバ (Ansible: 1, Target: 1) へのSSH接続
✤ 接続情報は個別にお渡しします
2. Ansible実行用の 作成と配布
1. Ansibleサーバ上で`ssh-keygen` で作成 (パスフレーズなし)
2. ec2-user@target:/home/ec2-user/.ssh/authorized_keys に 公開 (id_rsa.pub) をcopy
3. Ansibleサーバの /etc/hosts に Targetサーバを PrivateIP で記載 ( `sudo vim /etc/hosts` )
4. Ansible → Target へのssh接続確認
3. Ansibleインストール
1. `sudo pip install ansible`
2. `sudo mkdir /etc/ansible && sudo chown ec2-user:ec2-user /etc/ansible && cd /etc/
ansible`
3. `touch hosts`
4. `wget https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg `
Ansible手始め
1. Inventory Hostを記載
2. Ansibleコマンドを試し打ち
✤ `ansible TARGET -m 'ping'`
✤ `ansible TARGET -m 'setup'`
# /etc/ansible/hosts
[webservers]
ansible-target0x
4. ディレクトリ構成 (Best Practice)
BestPractice
Best Practices Directory
Layout - Ansible
Documentation
production # Inventory Hostはグループごとに作成
staging # 〃
group_vars/ # グループ用の変数の格納場所
group1 #
group2 #
host_vars/ # ホスト用の変数の格納場所
hostname1 #
hostname2 #
library/ # 自作Moduleの格納場所 (optional)
filter_plugins/ # 自作Filter Pluginの格納場所 (optional)
site.yml # master Playbook
webservers.yml # Playbook
dbservers.yml # Playbook
roles/ # ロール (Role) の格納場所
common/ # “common” ロール
tasks/ # Taskの格納場所
main.yml # <-- Taskがもし多くなる場合は小さく分ける
handlers/ # Handlerの格納場所
main.yml # <-- 〃
templates/ # Templateの格納場所
ntp.conf.j2 # <------- Templateファイル名は *.j2
files/ # Fileの格納場所
bar.txt #
foo.sh #
vars/ # Varsの格納場所
main.yml #
defaults/ #
main.yml # Varsのデフォ値 (group/host_varsで上書き可)
meta/ # ロールの依存関係があれば定義
Hands On1(20min)
1. 運用ツールをインストール
✤ telnet, wget, rsync, tree, tcpdump,
sysstat, dstat, vim-enhanced, git, htop
2. バナーを配置
✤ /etc/motd
3. Nginx install
✤ yum install
✤ 自動起動有効
4. Deploy
✤ page upload (適当なhtml)
Hands On2(10min)
OpenSSLの脆弱性が報告され
た!利用中の全サーバの
OpenSSLのバージョンを確認し
よう。
✤ ansibleコマンド一発で確認す
ること
Hands On3(30min)
1. Swapfileを作成
✤ 512MBのswapfileを作成
✤ swaponでスワップ追加
✤ boot時に自動マウント
✤ ※冪等性は担保すること
2. 運用ツールを追加
✤ htop, glances, tmux
✤ ag (the-silver-searcher)
3. Deploy (from github)
✤ yteraoka/ansible-tutorial
✤ /var/www/ 以下にdeploy
✤ Nginx設定ファイル編集→restart

More Related Content

What's hot

macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介Tetsutaro Watanabe
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話YasunobuToyota
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはksk_ha
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 

What's hot (20)

macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 

Viewers also liked

Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法Kishin Yagami
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-Takahiro Kida
 
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackAnsibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackMasataka Tsukamoto
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Shingo Kitayama
 
Ansible はじめてみました
Ansible はじめてみましたAnsible はじめてみました
Ansible はじめてみましたTakeshi Kuramochi
 
2012/11/14 softlab_study 発表資料「SSDの基礎」
2012/11/14 softlab_study 発表資料「SSDの基礎」2012/11/14 softlab_study 発表資料「SSDの基礎」
2012/11/14 softlab_study 発表資料「SSDの基礎」Ryo Okubo
 
2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話Shohei Koyama
 
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp hiyohiyo
 
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストールAnsibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストールKen Sawada
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれからTaira Hajime
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうTakayuki Hayashi
 
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!hiyohiyo
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)NTT DATA OSS Professional Services
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。hiyohiyo
 
Favorite English YouTube Channels
Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube ChannelsEmma Haruka Iwao
 
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策Amazon Web Services Japan
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするRyo Adachi
 

Viewers also liked (20)

Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-
 
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackAnsibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
 
What is an Ansible?
What is an Ansible?What is an Ansible?
What is an Ansible?
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
Ansible はじめてみました
Ansible はじめてみましたAnsible はじめてみました
Ansible はじめてみました
 
2012/11/14 softlab_study 発表資料「SSDの基礎」
2012/11/14 softlab_study 発表資料「SSDの基礎」2012/11/14 softlab_study 発表資料「SSDの基礎」
2012/11/14 softlab_study 発表資料「SSDの基礎」
 
2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話2人でOpenStackを開発環境に導入した話
2人でOpenStackを開発環境に導入した話
 
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp
 
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストールAnsibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれから
 
Ansible+Docker
Ansible+DockerAnsible+Docker
Ansible+Docker
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろう
 
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
Desktop App Converter で Microsoft ストアデビュー & 野良野良ライフ満喫!!
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
 
わかる!一眼
わかる!一眼わかる!一眼
わかる!一眼
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
 
Favorite English YouTube Channels
Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube Channels
 
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
AWS 初心者向けWebinar 利用者が実施するAWS上でのセキュリティ対策
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
 

Similar to Ansible 入門 #01 (初心者向け)

ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
WebサーバのチューニングYu Komiya
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 
Okinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleOkinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleHideki Saito
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)佐久本正太
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationyukihiro kawada
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンseiichi arai
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
AWS ESC + Ansibleで お手軽 Blue-Green Deployment
AWS ESC + Ansibleで お手軽 Blue-Green DeploymentAWS ESC + Ansibleで お手軽 Blue-Green Deployment
AWS ESC + Ansibleで お手軽 Blue-Green DeploymentKentaro NOMURA
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからTakeshi Kuramochi
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 

Similar to Ansible 入門 #01 (初心者向け) (20)

ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Okinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleOkinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - Ansible
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verification
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
AWS ESC + Ansibleで お手軽 Blue-Green Deployment
AWS ESC + Ansibleで お手軽 Blue-Green DeploymentAWS ESC + Ansibleで お手軽 Blue-Green Deployment
AWS ESC + Ansibleで お手軽 Blue-Green Deployment
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 

Ansible 入門 #01 (初心者向け)

  • 1. 2015.09.10 (Thu) Ansible 入門 #01 (初心者向け) CyberZ 廣瀬 太郎
  • 2. Ansible説明会 1. Ansibleとは 2. Ansibleの特徴 3. Ansibleの用語解説 ※この資料は以下のようなAnsible初心者を対象としています ✤ Ansibleを触ってみたい、導入したいと考えている方 ✤ サーバー構築とかやってる方 ✤ サーバーデプロイを効率化したい方 ✤ Chefは辛い方 ✤ Ansibleって響きが気になる方
  • 4. Ansibleとは “Ansible is Simple IT Automation” SIMPLE AGENTLESS POWERFUL Automate in hours - not weeks - with Ansible's human-readable IT automation language. Ansible uses SSH instead of agents. More efficient, more secure and less to manage. App deployment, configuration management and orchestration - all from one system. qt: http://www.ansible.com/home
  • 5. なぜやるの? 1) 構成管理 ✤ ドキュメントが古い ✤ 更新も面倒 ✤ Snapshot, AMIが秘伝のタレ化 ✤ 何が動いているのか分からない ✤ まっさらなOSから環境構築でき ない ✤ このサーバは「どうあるべき」なの か
  • 6. なぜやるの? 2) 自動化 ✤ 加速するビジネス ✤ 初動はできるだけ早く ✤ 付加価値増に集中したい ✤ 定常業務は低コストで ✤ アプリケーションデプロイ ✤ 脆弱性対応
  • 11. Ansibleの特徴 “Ansible is Simple IT Automation” SIMPLE AGENTLESS POWERFUL Automate in hours - not weeks - with Ansible's human-readable IT automation language. Ansible uses SSH instead of agents. More efficient, more secure and less to manage. App deployment, configuration management and orchestration - all from one system. qt: http://www.ansible.com/home
  • 12. Ansibleの特徴 “Ansible is Simple IT Automation” ✤ 定義はYAML( 設定ファイル) ✤ プログラムですら無いため学習障壁が少ない SIMPLE Automate in hours - not weeks - with Ansible's human-readable IT automation language. --- - hosts: webservers tasks: - name: yum install nginx yum: pkg=nginx state=installed
  • 13. Ansibleの特徴 “Ansible is Simple IT Automation” ✤ agentインストール不要 ✤ 運用管理サーバでansible*コマンドが使えればOK ✤ Pythonが入っていれば導入可能 ✤ 専用のserverやagentの運用管理不要 ✤ 常駐するプロセスはなし AGENTLESS Ansible uses SSH instead of agents. More efficient, more secure and less to manage.
  • 14. Ansibleの特徴 “Ansible is Simple IT Automation” ✤ 構成管理だけでなくOrchestrationとしても使えるので、 ちょっとした操作や調査の支援ツールにもなる ✤ 高機能だが、スモールスタートで始めることも可能 POWERFUL App deployment, configuration management and orchestration - all from one system. 柔軟な実行方法 ✤ 指定したタイミングで実行 ✤ 複数並列実行 ✤ 必要な処理だけをone-linerでadhocに実行 ✤ Push型だけでなくPull型もサポート (ansible-pull)
  • 15. Ansibleの特徴 “Ansible is Simple IT Automation” 冪等性 ✤ 記載したDSLの定義の状態に収束してくれる ✤ ある操作を何回行っても結果は同じ ✤ 変更がなければ処理をスキップする 以下がインストールされていること ・nginx ・java ・zabbix_agentd サービスが起動していること ・nginx ・zabbix_agentd
  • 17. 主なコマンド ✤ ansible ✤ Adhocに実行する ✤ ansible-playbook ✤ 作成した定義 (playbook) を実行する # コマンド実行例 $ ansible -m 'ping' webservers ansible-test02 | success >> { "changed": false, "ping": "pong" } # dry-run $ ansible-playbook hands-on00.yml --check --diff … PLAY RECAP ******************************************************************** ansible-test02 : ok=2 changed=0 unreachable=0 failed=0 # execute $ ansible-playbook hands-on00.yml … PLAY RECAP ******************************************************************** ansible-test02 : ok=2 changed=0 unreachable=0 failed=0
  • 18. Inventory Host Ansibleで管理するホストをini形式で記載する ✤ ホストのグルーピングが可能 # 例: example.com サイトをAnsibleで管理する mail.example.com [webservers] foo.example.com bar.example.com
  • 19. Playbook 実行する処理の内容をYAML形式で記載する ✤ 最初はplaybookとinventry hostさえあればOK --- - hosts: webservers tasks: - name: ensure apache is at the latest version yum: pkg=httpd state=latest - name: write the apache config file template: src=templates/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
  • 20. Task (Tasks lists) 具体的な処理を、実行する順に配列で記載する ✤ 基本は name と module のセットを記載する ✤ 実行条件やトリガー (notify/handler) を加えることも可能 ✤ 実行条件: [when, changed_when, ignore_errors, always_runなど] ✤ トリガー: handlers で記載した処理の名前をnotifyで指定 --- - hosts: webservers tasks: - name: ensure apache is at the latest version yum: pkg=httpd state=latest - name: write the apache config file template: src=templates/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
  • 21. Module Tasksで指定した処理を実行する汎用ライブラリ ✤ Modules are “idempotent” (冪等性) ✤ Core Modulesだけでも必要な作業は大体カバーできる --- - hosts: webservers tasks: - name: ensure apache is at the latest version yum: pkg=httpd state=latest - name: write the apache config file template: src=templates/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
  • 22. 代表的なModule ✤ yum / apt : パッケージ管理 (インストール, 削除など) ✤ service : サービス操作 (起動, 停止, 再起動など) ✤ file : ファイル操作 (作成, 削除, 属性変更など) ✤ copy : ファイルをコピー ✤ template : ファイルを雛形としてファイル生成 (後述) ✤ shell : 任意のshellコマンドを実行(※冪等性は自分で担保) ✤ 具体的な操作の他、“register” を併用して条件分岐に利用する等の使い方もある 公式ドキュメントにModuleの一覧と説明があるので、詳しくは以下を参照ください。 http://docs.ansible.com/ansible/modules_by_category.html
  • 23. 共通化 (Include / Role) ✤ Include: ✤ tasksやhanderls等を別ファイルとして切り出し、一つのRole としてまとめておくことで再利用しやすくする --- - hosts: webservers tasks: - include: apache.yml - include: deploy.yml site=service_A - include: deploy.yml site=service_B
  • 24. 共通化 (Include / Role) ✤ Role: ✤ task, vars, files, templates, handlers一式を共通化 ✤ playbookからは roles 一発で呼び出しできる ✤ 複数サーバに適用する、汎化させるなどの用途で活用 # playbook --- - hosts: webservers roles: - common - webserver # ディレクトリ構成 hosts webservers.yml roles/ common/ files/ templates/ tasks/ handlers/ vars/ defaults/ meta/ webservers/ …
  • 25. 共通化 (Template / Variable) ✤ Template: ✤ 変数をbindして配布できる ✤ ホスト毎に異なるようなファイルを配布するときに活用 ✤ 書式は “Jinja2” # files/etc/motd.j2 ################################################## !!! Production server {{ ansible_hostname }} !!! ################################################## __| __|_ ) _| ( / Amazon Linux AMI ___|___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
  • 26. 共通化 (Template / Variable) ✤ Variable: ✤ 条件分岐やTemplateで利用する変数を定義し呼出可能 ✤ 書式はYAML ✤ playbook, inventry host, varsなど様々な箇所で指定可能 ✤ OS層の下回りの情報はansibleが自動で取得し呼出可能 (Facts) ✤ 利用可能な変数は `ansible hostname -m setup` で確認可能 ✤ Chefで言う ohai # Variables innodb_buffer_pool_size: 6144M innodb_log_file_size: 2048M max_connections: 1000 … $ ansible ansible-test02 -m 'setup' ansible-test02 | success >> { "ansible_facts": { "ansible_all_ipv4_addresses": [ "172.31.xx.xx" ], "ansible_all_ipv6_addresses": [], "ansible_architecture": "x86_64", "ansible_bios_date": "NA", "ansible_bios_version": "NA", "ansible_cmdline": { "KEYTABLE": "us", "LANG": "ja-JP.UTF-8",
  • 28. Installation 1. サーバログイン 1. サーバ (Ansible: 1, Target: 1) へのSSH接続 ✤ 接続情報は個別にお渡しします 2. Ansible実行用の 作成と配布 1. Ansibleサーバ上で`ssh-keygen` で作成 (パスフレーズなし) 2. ec2-user@target:/home/ec2-user/.ssh/authorized_keys に 公開 (id_rsa.pub) をcopy 3. Ansibleサーバの /etc/hosts に Targetサーバを PrivateIP で記載 ( `sudo vim /etc/hosts` ) 4. Ansible → Target へのssh接続確認 3. Ansibleインストール 1. `sudo pip install ansible` 2. `sudo mkdir /etc/ansible && sudo chown ec2-user:ec2-user /etc/ansible && cd /etc/ ansible` 3. `touch hosts` 4. `wget https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg `
  • 29. Ansible手始め 1. Inventory Hostを記載 2. Ansibleコマンドを試し打ち ✤ `ansible TARGET -m 'ping'` ✤ `ansible TARGET -m 'setup'` # /etc/ansible/hosts [webservers] ansible-target0x
  • 31. BestPractice Best Practices Directory Layout - Ansible Documentation production # Inventory Hostはグループごとに作成 staging # 〃 group_vars/ # グループ用の変数の格納場所 group1 # group2 # host_vars/ # ホスト用の変数の格納場所 hostname1 # hostname2 # library/ # 自作Moduleの格納場所 (optional) filter_plugins/ # 自作Filter Pluginの格納場所 (optional) site.yml # master Playbook webservers.yml # Playbook dbservers.yml # Playbook roles/ # ロール (Role) の格納場所 common/ # “common” ロール tasks/ # Taskの格納場所 main.yml # <-- Taskがもし多くなる場合は小さく分ける handlers/ # Handlerの格納場所 main.yml # <-- 〃 templates/ # Templateの格納場所 ntp.conf.j2 # <------- Templateファイル名は *.j2 files/ # Fileの格納場所 bar.txt # foo.sh # vars/ # Varsの格納場所 main.yml # defaults/ # main.yml # Varsのデフォ値 (group/host_varsで上書き可) meta/ # ロールの依存関係があれば定義
  • 32. Hands On1(20min) 1. 運用ツールをインストール ✤ telnet, wget, rsync, tree, tcpdump, sysstat, dstat, vim-enhanced, git, htop 2. バナーを配置 ✤ /etc/motd 3. Nginx install ✤ yum install ✤ 自動起動有効 4. Deploy ✤ page upload (適当なhtml)
  • 34. Hands On3(30min) 1. Swapfileを作成 ✤ 512MBのswapfileを作成 ✤ swaponでスワップ追加 ✤ boot時に自動マウント ✤ ※冪等性は担保すること 2. 運用ツールを追加 ✤ htop, glances, tmux ✤ ag (the-silver-searcher) 3. Deploy (from github) ✤ yteraoka/ansible-tutorial ✤ /var/www/ 以下にdeploy ✤ Nginx設定ファイル編集→restart