ansible による pyramid 環境構築
Chef とかといったような構成管理ツールです。Python 製ですが Python の知識はいらず、yaml 形式のシンプルにかけるものです。
チュートリアルhttp://yteraoka.github.io/ansible-tutorial/を上から自分の環境に合わせて実行してみました。Ubuntu なので yum でなく apt モジュールになります。
インストールされている前提。pip からインストールできたはずです。
疎通確認
ansible で接続するには、host 名が書かれた hosts ファイルが必要です。
カレントディレクトリを優先して読んでくれるので、そこに作成。
.ssh/config に設定してある Host も使用可能。
echo hostname > hosts
下記のコマンドで、今作った hosts ファイルを指定してちゃんと相手に接続できるか確認します。
% ansible -i hosts hostname -m ping
devops | success >> {
"changed": false,
"ping": "pong"
}
接続成功。
コマンドを実行してみる。
ansible -i hosts hostname -a 'uname -r'
devops | success | rc=0 >>
3.2.0-29-generic
試しに vim を install してみます。
% ansible -i hosts devops -m apt -s -a name=vim
devops | success >> {
"changed": false
}
install 済みなので失敗。
Playbook
playbook を書いてみます。言語に依存しないシンプルなファイルらしい。
まずインベントリファイルでグループを定義。
% cat hosts
[pyramid]
hostname
playbook の作成。
---
- hosts: pyramid
sudo: yes
tasks:
- name: be sure httpd is installed
apt: name=apache2 state=installed
- name: be sure httpd is running and enabled
service: name=apache2 state=running enabled=yes
syntax のチェック。
% ansible-playbook -i hosts simple-playbook.yml --syntax-check
playbook: simple-playbook.yml
task の一覧を確認。
% ansible-playbook -i hosts simple-playbook.yml --list-tasks
playbook: simple-playboopk.yml
play #1 (pyramid):
be sure httpd is installennd
be sure httpd is running and enabled
実際に実行するとどうなるのかのチェック。
% ansible-playbook -i hosts simple-playbook.yml --check
PLAY [pyramid] ****************************************************************
GATHERING FACTS ***************************************************************
ok: [hostname]
TASK: [be sure httpd is installed] ********************************************
ok: [hostname]
TASK: [be sure httpd is running and enabled] **********************************
ok: [hostname]
PLAY RECAP ********************************************************************
hostname : ok=3 changed=0 unreachable=0 failed=0
実際に実行してみる。
% ansible-playbook -i hosts simple-playbook.yml
PLAY [pyramid] ****************************************************************
GATHERING FACTS ***************************************************************
ok: [hostname]
TASK: [be sure httpd is installed] ********************************************
ok: [hostname]
TASK: [be sure httpd is running and enabled] **********************************
ok: [hostname]
PLAY RECAP ********************************************************************
hostname : ok=3 changed=0 unreachable=0 failed=0
下記のコマンドで対象の情報を確認。ながながと表示されるので出力は割愛。
% ansible -m setup -i hosts devops
以上が ansible の基礎。次は pyramid について。
Pyramid
python 製の小さい web framework。ansible を使って置いてみます。playbook はこんなかんじ。python , pip , virtualenv, pyramid の順で入れて行きます。
---
- hosts: pyramid
sudo: yes
tasks:
- name: install python
apt: name=python2.7-dev state=installed
- name: install pip
apt: name=python-pip state=installed
- name: install virtualenv
pip: name=virtualenv
- name: install pyramid
pip: name=pyramid
結果は以下のように。試しに一度実行してしまったので changed になるはずのところが ok になってたりしますが。
% ansible-playbook -i hosts pyramid-playbook.yml
PLAY [pyramid] ****************************************************************
GATHERING FACTS ***************************************************************
ok: [hostname]
TASK: [install python] ********************************************************
ok: [hostname]
TASK: [install pip] ***********************************************************
ok: [hostname]
TASK: [install virtualenv] ****************************************************
changed: [hostname]
TASK: [install pyramid] *******************************************************
changed: [hostname]
PLAY RECAP ********************************************************************
hostname : ok=5 changed=2 unreachable=0 failed=0
開発環境を作る場合、root ではなく user で実行したい……ということで、とりあえずファイル分割。他にも何か方法があるかもしれないけれど。su [username]とか。
Python、pip、virtualenvのインストールまで。
---
- hosts: pyramid
sudo: yes
tasks:
- name: install python
apt: name=python2.7-dev state=installed
- name: install pip
apt: name=python-pip state=installed
- name: install virtualenv
pip: name=virtualenv
home directory に pyramid directory を作って、virtualenv の設定、virtualenv 環境へ pyramid のインストールまで。
---
- hosts: pyramid
sudo: no
tasks:
- name: make pyramid directory
file: dest=/home/devops/pyramid state=directory
- name: make develop env to use virtualenv
command: /usr/local/bin/virtualenv ~/pyramid
- name: install pyramid
command: ~/pyramid/bin/pip install pyramid
以上。
まとめ
今回は ansible のチュートリアルと、pyramid の開発環境を ansible でサクッと作ってみました。確かに ansible はシンプルで、yaml ファイルもかなり書きやすい。remote 側に何かをインストールする必要もないのが簡単でした。
ただ私自身がこういうソフトになれてなくて、ssh で入って普通にコマンドたたいて試す、とかやっちゃってたのでもっと有効活用できたらいいな、と感じました。
次回は ansible と vagrant と関連させたり playbook のディレクトリを学んだり、pyramid の本番環境を ansible で書いてみたりしてみます。
コメント
コメントを投稿