狠狠撸

狠狠撸Share a Scribd company logo
础苍蝉颈产濒别入门 
社内勉強会 
! 
@bells17_
Agenda 
? Ansibleとは? 
? Vagrant + Ansibleを使ったLAMP環境構築 
? プロジェクトでのAnsibleの利用例
Ansibleとは? 
サーバーのプロビジョニングツール
サーバ?プロビジョニング 
利用可能なサーバ群(サーバファーム)からサーバを選び出し、適 
切なソフトウェア(オペレーティングシステム、デバイスドライバ、 
ミドルウェア、アプリケーションソフトウェア)をロードし、シス 
テムを適切に設定したり、サーバ固有の設定(IPアドレスなど)を 
したり、といった作業をサーバ?プロビジョニングと呼ぶ。これに 
は、そのサーバを運用可能にするまでのあらゆる作業が含まれる。 
引用元:http://ja.wikipedia.org/wiki/プロビジョニング
プロビジョニングレイヤー 
? Orchestration 
? アプリケーションデプロイ 
? Fabric, Capistrano, MCollective 
? Configuration 
? ミドルウェアレベルまでの設定 
? Puppet, Chef, AWS OpsWorks 
? Bootstrapping 
← Ansibleはここに入る 
? OS インストールにあたる領域 
? Kickstart, Cobbler, OpenStack, AWS 
引用元: http://mizzy.org/blog/2013/10/29/1/
プロビジョニングフレームワークの特徴 
? 冪等性(idempotence)を意識した設計 
? 何度繰り返しても同じ結果になる 
? Infrastructure as Code 
? サーバー構築や構成変更作業を全てコード化で 
きる
プロビジョニングフレームワーク比較 
引用元: http://www.slideshare.net/TakeshiKomiya/python-26185953
Ansibleの特徴 
? yamlを使ったDSL 
? 実行するために必要なツールがSSHとPythonだけ 
? 豊富なモジュール群
Ansibleを実行するには? 
1. inventory_fileを作成 
? 実行するホストと対応するホスト情報を記載したiniファイル 
2. inventory_fileを指定してタスクを実行 
? ansibleコマンド 
? 単体のタスクを実行できる 
? ansible-playbookコマンド 
? Playbookを利用してまとまったタスクを実行することができる
Playbook 
? Ansibleのタスクをまとめて実行できるもの 
? phpをインストール→apacheをインストールのように 
? Ansibleのタスクはモジュールを利用して記述する
よく使うmodule 
? yum - yumコマンドを実行 
? file - ファイル、シンボリックリンク、ディレクトリの作成?削 
除?属性設定を行う 
? copy - Ansible実行端末にあるファイルをホストPCに転送する 
? template - jinja2を利用したテンプレートファイルをホストPC 
に転送する 
? get_url - http経由でファイルをダウンロードする 
? shell - シェルコマンドを実行する
Vagrant + AnsibleでLAMP環境を構築 
1.cd /path/to/dir 
2.git clone https://github.com/bells17/ 
ansible_lamp_sample.git 
3.vagrant up 
4.ansible-playbook -i inventory_file lamp.yml -vvv --ask-sudo- 
pass
inventory_file 
(ホスト名) ansible_ssh_host=(対象のホスト) ansible_ssh_user=(sshログインユーザー) 
ansible_ssh_private_key_file=(ssh公開鍵) ansible_ssh_port=(sshのポート番号) 
lamp ansible_ssh_host=192.168.34.10 ansible_ssh_user=vagrant 
ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 
ansible_ssh_port=22
Ansibleコマンドを実行 
対象ホストに対してpingを実行 
ansible [対象ホスト名] -m ping -i inventory_file 
対象ホストに対してシェルコマンドを実行 
ansible [対象ホスト名] -m shell -a 'pwd; ls -la;' -i inventory_file -vvvv
実際に実行しているタスクはこんな感じ 
- hosts: lamp # 対象hostを定義 
sudo: yes # sudoでコマンドを実行 
vars_files: 
- vars/lamp.yml # 変数ファイルを読み込み 
tasks: # 各タスクを定義 
- name: be sure httpd is installed # yumコマンドを実行 
yum: name={{ item }} state=installed 
with_items: 
- httpd 
- httpd-devel 
! 
- name: Ensure vhost is enabled # テンプレートファイルをサーバーに設置 
template: src=/bells17/ansible-41439779/templates/vhost.conf.j2 
dest={{ apache_install_path }}/conf.d/vhost.conf 
! 
- include: tasks/local_hosts.yml # タスクを別ファイルから読み込んで実行
実際のプロジェクトでの利用事例 
? 開発環境をAnsibleで構築 
? アプリ申請用の本番環境をAnsibleで構築 
? OEM展開用にリポジトリ内のローカルファイル 
をAnsibleで自動生成

More Related Content

础苍蝉颈产濒别入门