Slide 1

Slide 1 text

Ansible で Orchestration を ! 体感しよう NODE-Setagaya#5 2013.10 @laugh_k

Slide 2

Slide 2 text

最近話題の Ansible という ” ” いわゆる 構成管理 ツールを実際にさわってみて とりあえずみんなで ! !! ! 「おー すげー 」って言おうぜ という内容です 突っ込んだことはできないです 今回の NODE-Setagaya

Slide 3

Slide 3 text

Python 製の構成管理ツール おおまかには以下のような特徴がある。 ● 作業対象は sshd のみ入っていればよく 特別なエージェントなどは必要ない ※ ただし python-simplejson には依存している ● Playbook と呼ばれる YAML 形式のファイルで 作業内容を記載しておくことができる ● SSH コマンドのオプションを環境変数で渡せるため ssh_config を用いた多段 SSH も使える。 Ansible とは

Slide 4

Slide 4 text

というわけで !! さっそく試してみよう

Slide 5

Slide 5 text

1.環境の準備

Slide 6

Slide 6 text

1. 環境の準備 まずは Python の開発環境を整えます。 実は yum や apt でも入れることはできますが、 せっかくなのでこの機会に ! 以下のようなモダンな環境の整え方を抑えておきましょう ● pyenv https://github.com/yyuu/pyenv 複数バージョンの Python をインストール、管理が可能。 ● pyenv-virtualenv https://github.com/yyuu/pyenv-virtualenv virtualenv を pyenv 環境で使えるようにしたプラグイン。 アプリケーションごとにモジュールを管理することができる。

Slide 7

Slide 7 text

1. 環境の準備 1-1. pyenv, pyenv-virtualenv のインストール ※ Unix 系環境が前提 % cd % git clone git://github.com/yyuu/pyenv.git .pyenv % cat >> ~/.bashrc << \EOF > > ## pyenv Configure > export PYENV_ROOT="$HOME/.pyenv" > export PATH="$PYENV_ROOT/bin:$PATH" > eval “$(pyenv init -)” > EOF % exec $SHELL

Slide 8

Slide 8 text

1. 環境の準備 1-1. pyenv, pyenv-virtualenv のインストール ※ Unix 系環境が前提 % cd .pyenv/plugins % git clone git://github.com/yyuu/pyenv-virtualenv.git % pyenv rehash

Slide 9

Slide 9 text

1. 環境の準備 1-2. pyenv 経由で Python2.6 系最新のインストール ※ Unix 系環境が前提 ※ ライブラリ足りないと怒られるかも .. % pyenv install -l % pyenv install 2.6.8 % pyenv rehash

Slide 10

Slide 10 text

1. 環境の準備 1-2. ansible 用の Python 環境を作成 ※ Unix 系環境が前提 % cd ## 本日の作業用ディレクトリ作成 % mkdir node-setagaya5 ## Ansible 用に 2.6 系で Python 環境を作成 % pyenv virtualenv 2.6.8 node-setagaya5 % cd node-setagaya5 ## 作業フォルダで今回作成した Python 環境を使うように設定 % pyenv local node-setagaya5 ## Ansible のインストール % pip install ansible

Slide 11

Slide 11 text

そろそろ VirtualBox テンプレート ! 配るよ

Slide 12

Slide 12 text

2 . コマンドラインで Ansible を試す

Slide 13

Slide 13 text

2 . コマンドラインで Ansible を試す 2-1. hosts ファイルの作成 作業対象を以下のような感じで定義しておく。 セクションを作るとグループとして扱うことができる。 hosts ファイルの中身 ↓ 詳しいパラメータは を参照 http://www.ansibleworks.com/docs/intro_inventory.html % cd ~/node-setagaya5 % vim hosts [localnet] node-setagaya5 ansible_ssh_host=192.168.10.10

Slide 14

Slide 14 text

2 . コマンドラインで Ansible を試す 2-1. 試しに ping を打ってみる ” プログラミングで言う Hello World!!” ! 的なことをやってみましょう % ansible node-setagaya5 \ > -i hosts \ ## 利用する hosts ファイルを指定 > -u root \ ## SSH ログインで使用するユーザーを指定 > -m ping \ ## 利用する ansible モジュールを指定 > -k ## SSH ログインをする際にパスワードの入力を求める場合に指定 SSH password: node-setagaya5 | success >> { "changed": false, "ping": "pong" }

Slide 15

Slide 15 text

2 . コマンドラインで Ansible を試す 2-2. 試しに適当なコマンドを打ってみる ↓ 利用できるモジュールは を参照 http://www.ansibleworks.com/docs/modules.html % ansible node-setagaya5 \ > -k -i hosts -u root -m command \ > -a 'uname -n' ## リモート先で実行するコマンドを指定 SSH password: node-setagaya5 | success | rc=0 >> node-setagaya5

Slide 16

Slide 16 text

3 . Playbook を試す

Slide 17

Slide 17 text

3 . Playbook を試す 3-1. YAML ! 形式で以下のように作る 例 ) sapmle.yml ( あくまで雰囲気を掴むためのものなのでいろいろ不足しております ) Playbook ↓ のモジュール、書き方は を参照 http://www.ansibleworks.com/docs/playbooks.html --- - hosts : node-setagaya5 user : username sudo : yes vars : php_ver : 5.5 handlers : - name : PHP Compile script : install-PHP-{{ php_ver }}.sh task : - name : Install PHP Library yum : name=$items enablerepo=epel state=installed with_items : - libmcrypt - libmcrypt-devel notify : PHP Compile

Slide 18

Slide 18 text

3 . Playbook を試す 3-2. Playbook の内容を実行する Playbook ! を書いたら実行するのみ ## -C オプションで実際にジョブは実行されずに内容の確認ができる (dry_run) % ansible-playbook sample.yml -i hosts -k -C ## 実際に実行する。基本的なオプションの意味は ansible コマンドと同様 % ansible-playbook sample.yml -i hosts -k

Slide 19

Slide 19 text

では実際に Playbook ! を書いてみよう