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

アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!Mutsumi IWAISHI
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2Sho Nakazono
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?Kuniyasu Suzaki
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Ansible specでテストをする話
Ansible specでテストをする話Ansible specでテストをする話
Ansible specでテストをする話KeijiUehata1
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月VirtualTech Japan Inc.
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...whywaita
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 

What's hot (20)

アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
アプリ開発検証はLXC+Ansibleで楽ちんにやろう!
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
LXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoyaLXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoya
 
Ansible specでテストをする話
Ansible specでテストをする話Ansible specでテストをする話
Ansible specでテストをする話
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 

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 ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
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
 

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 ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
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上でのセキュリティ対策
 

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の管理
 

Recently uploaded

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

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