SlideShare a Scribd company logo
Chefユーザのための
Ansible入門
だれ?
名前: Mahito
Twitter: @Mahito
仕事:OpenStack <- Hadoop <- NoSQL <- IaaS
特技:破損したQRコードのデータ復元
本日話すこと
• Ansibleについて
• Ansibleの導入∼利用
• ChefユーザがPlaybookを書く使う際にハマりそ
うなところの解説
Ansible
Ansible is the simplest way to automate.
• Simple

Automate in hours - not weeks - with Ansible's human-readable IT
automation language.
• Agentless

Ansible uses SSH instead of agents. More efficient, more secure and less
to manage.
• Powerful

App deployment, configuration management and orchestration - all from
one system.
出典:http://www.ansible.com/
Simple
• 記述がYAML形式なので人が読みやすい
---
- hosts: webservers
serial: 5 # update 5 machines at a time
roles:
- common
- webapp
!
- hosts: content_servers
roles:
- common
- content
Agentless
• SSHを使って対象サーバに直接アクセスするた
めエージェントが不要
• プラグインによりSSH以外のProtcolも使用可能
• WinRMでWindowsの操作も可能
Ansible
Node

(None Agent)
SSH, etc…
JSON
Powerful
• OrchestrationとConfigurationをカバー
Cloud or VM
Image
Launch
OS
Install
System Configuration
Application Service
Deployment
• Kickstart
• Cobbler
• Jumpstart
• OpenQRM
• AWS
• Xen
• KVM
• VMware
• Chef
• Puppet
• Capistrano
• Fabric
• Func
Orchestration
Configuration
Bootstrapping
ProvisioningActivity
Ansible
出典:http://en.oreilly.com/velocity-mar2010/public/schedule/detail/14180
Chefとの比較
Ansible Chef
Provisioning Activity
Orchestration
Configuration
Configuration
Agent None Chef Client
Protocol SSH, etc… SSH, rsync
Written in Python Ruby
Description YAML DSL(Ruby)
Template Engine Jinja2 ERB
Google Trends
出典:http://goo.gl/tFLNqr
Install
• Mac
% brew update

% brew install ansible
$ sudo apt-get install software-properties-common

$ sudo apt-add-repository ppa:ansible/ansible

$ sudo apt-get update

$ sudo apt-get install ansible
• Ubuntu
• pip
$ sudo easy_install pip

$ sudo pip install ansible
Execute1
• ansibleコマンド
• コマンドラインでのAnsibleの実行
% ansible -h

Usage: ansible <host-pattern> [options]

…

% ansible host -m ping -i host

host ¦ success >> {

"changed": false,

"ping": "pong"

}
Inventory
• INI形式でホスト情報を記載
• ホストのグループ化や親子関係の記載も可能
• Dynamic Inventoryという動的なInventoryを使う方法もある
mail.example.com
!
[webservers]
foo.example.com
www[01:50].example.com
!
[services:children]
mail.example.com

webservers
出典:http://docs.ansible.com/intro_inventory.html
Execute2
• ansible-playbookコマンド
• Playbookを用いたAnsibleの実行
% ansible-playbook -h

Usage: ansible-playbook playbook.yml

…

% ansible-playbook -i hosts ping.yml

PLAY [host] *******************************************************************

GATHERING FACTS ***************************************************************

ok: [host]

TASK: [Ping] ******************************************************************

ok: [host]

PLAY RECAP ********************************************************************

host : ok=2 changed=0 unreachable=0 failed=0
Playbooks1
̶
- hosts: all

tasks:

- name: Ping all

ping:

- hosts: webservers
serial: 5 # update 5 machines at a time
roles:
- common
- webapp
!
- hosts: content_servers
roles:
- common
- content
Playbooks2
---
- yum: name= state=installed
with_items:
- app_server
- acme_software
!
- service: name=app_server state=running enabled=yes
!
- template: src=/opt/code/templates/foo.j2 dest=/etc/foo.conf
notify:
- restart app server
Modules
• ChefでいうところのResources
• CoreとExtrasの2つに分かれている
• Cloud, Commandsなど用途ごとにグルーピングさ
れている
• 公式ドキュメント上179Moduleが存在する
• よく使うModulesをピックアップして次項以降で解説
file
• Chefのdirectory + file + linkの機能
• ディレクトリ、ファイル、リンクの作成、削除

権限の変更を実施
- file: path=/file/path state=touch
- file: path=/directory/path state=directory
- file: src=/file/to/link/to dest=/path/to/symlink state=link
- file: path=/etc/foo.conf owner=foo group=foo mode=0644
copy
• chefのcookbook_fileの機能
• ローカルのファイルをサーバ側に転送する
• `fetch`というサーバ側のファイルをローカル
に持ってくるModuleも存在する
# Example from Ansible Playbooks

- copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf 

owner=foo group=foo mode=0644
template
• Chefと同じくテンプレートの機能
• ChefのERBとはことなるJinja2フォーマット
• 変数の展開はERBの<%= %>に対して{{}}
# Example from Ansible Playbooks

- template: src=/mytemplates/foo.j2 dest=/etc/file.conf 

owner=bin group=wheel mode=0644
Template Engine
出典:http://jinja.pocoo.org/docs/dev/
Package Modules
• Chefの`package`のような抽象化されたmodule
は存在しないためapt, yumなどを利用する
• 複数のOS適用を想定する場合は`when`で制御
# Install the package "foo"

- apt: name=apache2 state=present

when: ansible_os_family == "Debian"



- name: install the latest version of Apache

yum: name=httpd state=latest

when: ansible_os_family == RedHat
loop
• Chefのようにレシピ内にプログラムを書けない
ため、loopの仕組みが提供されている
出典:http://docs.ansible.com/playbooks_loops.html
# Install the packages

- apt: name={{item}} state=present

with_items:

- apache2

- zsh
# Install the packages

- apt: name={{item.name}} state={{item.state}}

with_dict: packages
handlers
• Chefの`notifies`と同じ
handlers:
- name: restart apache
service: name=httpd state=restarted
• 呼び出す側はtaskに`notify`を書く
tasks:
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
Directory Layout
production # inventory file for production servers

stage # inventory file for stage environment



group_vars/

group1 # here we assign variables to particular groups

group2 # ""

host_vars/

hostname1 # if systems need specific variables, put them here

hostname2 # ""

site.yml # master playbook

webservers.yml # playbook for webserver tier

dbservers.yml # playbook for dbserver tier

roles/
Roles Directory
roles/

common/ # this hierarchy represents a "role"

tasks/ #

main.yml # <-- tasks file can include smaller files if warranted

handlers/ #

main.yml # <-- handlers file

templates/ # <-- files for use with the template resource

ntp.conf.j2 # <------- templates end in .j2

files/ #

bar.txt # <-- files for use with the copy resource

foo.sh # <-- script files for use with the script resource

vars/ #

main.yml # <-- variables associated with this role

defaults/ #

main.yml # <-- default lower priority variables for this role

meta/ #

main.yml # <-- role dependencies
出典:https://galaxy.ansible.com/
まとめ
• AnsibleはSimple / Agentless / Powerful
• loopとか微妙に手の届かない痒いところもある
• モジュールも豊富
• 外部のPlaybookを拾うならAnsible Galaxy
Enjoy Ansible!

More Related Content

What's hot

Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
ITO Yoshiichi
 
Chefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてChefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについて
Yuuki Namikawa
 
CMS for Cloud by Ruby
CMS for Cloud by RubyCMS for Cloud by Ruby
CMS for Cloud by Ruby
Masaki Komagata
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
Masayuki Morita
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
Kazuto Ohara
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較Sugawara Genki
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
kk_Ataka
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
Yui Ito
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
 
おすすめ gem
おすすめ gemおすすめ gem
おすすめ gem
chocoby
 
Yesodを支える技術
Yesodを支える技術Yesodを支える技術
Yesodを支える技術
Hiromi Ishii
 
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
Tsuyoshi Torii
 
3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks
Yuuki Namikawa
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
Yoshinori Nakanishi
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
 
Yesod勉強会
Yesod勉強会Yesod勉強会
Yesod勉強会
Hideyuki Tanaka
 
入門Ansible(未発表箇所)
入門Ansible(未発表箇所)入門Ansible(未発表箇所)
入門Ansible(未発表箇所)Taku SHIMIZU
 

What's hot (20)

Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
Chefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてChefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについて
 
CMS for Cloud by Ruby
CMS for Cloud by RubyCMS for Cloud by Ruby
CMS for Cloud by Ruby
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
 
Apache Module
Apache ModuleApache Module
Apache Module
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
 
おすすめ gem
おすすめ gemおすすめ gem
おすすめ gem
 
Ppl
PplPpl
Ppl
 
Yesodを支える技術
Yesodを支える技術Yesodを支える技術
Yesodを支える技術
 
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
 
3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
Yesod勉強会
Yesod勉強会Yesod勉強会
Yesod勉強会
 
入門Ansible(未発表箇所)
入門Ansible(未発表箇所)入門Ansible(未発表箇所)
入門Ansible(未発表箇所)
 

Viewers also liked

社外セキュリティコンテストへのチャレンジ結果報告
社外セキュリティコンテストへのチャレンジ結果報告社外セキュリティコンテストへのチャレンジ結果報告
社外セキュリティコンテストへのチャレンジ結果報告
Mahito Ogura
 
Fluetnd meetup japan #3 @studio3104
Fluetnd meetup japan #3 @studio3104 Fluetnd meetup japan #3 @studio3104
Fluetnd meetup japan #3 @studio3104 Satoshi Suzuki
 
Chef, Consul を使ったクラウドオーケストレーション
Chef, Consul を使ったクラウドオーケストレーションChef, Consul を使ったクラウドオーケストレーション
Chef, Consul を使ったクラウドオーケストレーション
Yoshimi Tominaga
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
Amit Ranjan
 

Viewers also liked (6)

社外セキュリティコンテストへのチャレンジ結果報告
社外セキュリティコンテストへのチャレンジ結果報告社外セキュリティコンテストへのチャレンジ結果報告
社外セキュリティコンテストへのチャレンジ結果報告
 
Fluetnd meetup japan #3 @studio3104
Fluetnd meetup japan #3 @studio3104 Fluetnd meetup japan #3 @studio3104
Fluetnd meetup japan #3 @studio3104
 
Chef, Consul を使ったクラウドオーケストレーション
Chef, Consul を使ったクラウドオーケストレーションChef, Consul を使ったクラウドオーケストレーション
Chef, Consul を使ったクラウドオーケストレーション
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
入門Ansible
入門Ansible入門Ansible
入門Ansible
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
 

Similar to ChefユーザのためのAnsible入門

PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12Ryuji Yamashita
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
Masahiro NAKAYAMA
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
Naotoshi Seo
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0NIFTY Cloud
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
Makoto Nishimura
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
Naoto Mawatari
 
Ansible x softlayer Provisioning
Ansible x softlayer ProvisioningAnsible x softlayer Provisioning
Ansible x softlayer Provisioning
softlayerjp
 
201803_EC-CUBE開発進捗説明会_3_カスタマイズ
201803_EC-CUBE開発進捗説明会_3_カスタマイズ201803_EC-CUBE開発進捗説明会_3_カスタマイズ
201803_EC-CUBE開発進捗説明会_3_カスタマイズ
EC-CUBE
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
BIGLOBE Tech Talk
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築Masahiro Wakame
 
Webサーバ勉強会#4
Webサーバ勉強会#4Webサーバ勉強会#4
Webサーバ勉強会#4oranie Narut
 

Similar to ChefユーザのためのAnsible入門 (20)

PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
Yohes kitchen
Yohes kitchenYohes kitchen
Yohes kitchen
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
 
Ansible x softlayer Provisioning
Ansible x softlayer ProvisioningAnsible x softlayer Provisioning
Ansible x softlayer Provisioning
 
201803_EC-CUBE開発進捗説明会_3_カスタマイズ
201803_EC-CUBE開発進捗説明会_3_カスタマイズ201803_EC-CUBE開発進捗説明会_3_カスタマイズ
201803_EC-CUBE開発進捗説明会_3_カスタマイズ
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
Webサーバ勉強会#4
Webサーバ勉強会#4Webサーバ勉強会#4
Webサーバ勉強会#4
 

ChefユーザのためのAnsible入門