ansible 使ってみる
最近会社でもはやっていたのでとりあえず使ってみました。
python2.6以上があればクライアントに特別に何かインストールする必要もないみたいだし、記述はYAMLファイルだし、結構とっつきやすいのかなという印象だったので試してみます。
インストール
epelのインストール
epelリポジトリからyumでインストールできるようなのでepelを使えるようにします。
wget http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh epel-release-6-8.noarch.rpm sed -i "s/enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
ansibleのインストール
yumでインストールします
yum install -y ansible
おわり
使ってみる
下記を参考にいくつかplaybookを作って試してみました
hosts
テスト用にvagrantでサーバを立てました。
- 192.168.70.11
- ansible実行用
- 192.168.70.11
192.168.70.11
- リモートサーバ
実行時のチェック(--dry-run)
ansible-playbook -i hosts ***.yml --check
- 実行
ansible-playbook -i hosts ***.yml
- hosts
[test-servers] 192.168.70.12 192.168.70.13
mysqlをrpmからインストールするplaybook
---
- hosts: test-servers
sudo: yes
vars:
version: 5.5
revision: 38
mysql_shared_compat: http://dev.mysql.com/get/Downloads/MySQL-{{ version }}/MySQL-shared-compat-{{ version }}.{{ revision }}-1.rhel5.x86_64.rpm
mysql_shared: http://dev.mysql.com/get/Downloads/MySQL-{{ version }}/MySQL-shared-{{ version }}.{{ revision }}-1.rhel5.x86_64.rpm
mysql_client: http://dev.mysql.com/get/Downloads/MySQL-{{ version }}/MySQL-client-{{ version }}.{{ revision }}-1.rhel5.x86_64.rpm
mysql_devel: http://dev.mysql.com/get/Downloads/MySQL-{{ version }}/MySQL-devel-{{ version }}.{{ revision }}-1.rhel5.x86_64.rpm
mysql_server: http://dev.mysql.com/get/Downloads/MySQL-{{ version }}/MySQL-server-{{ version }}.{{ revision }}-1.rhel5.x86_64.rpm
tasks:
- name: be sure mysql installed
action: yum name={{item}} state=installed
with_items:
- "{{mysql_shared_compat}}"
- "{{mysql_shared}}"
- "{{mysql_client}}"
- "{{mysql_devel}}"
- "{{mysql_server}}"
- hosts:
- test-serversは、hostsファイルで定義
- vars:
- with_items:
- 複数指定した値を{{item}}で定義した回数だけ実行する
- action:
fluentdをインストールするplaybook
---
- hosts: test-servers
sodu: yes
tasks:
- name: be sure fluentd install
shell: curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh
- shell:
- シェルコマンドを実行できる
- 簡単
nginxをインストール、起動するplaybook
---
- hosts: test-servers
sudo: yes
vars:
- centos_ver: 6
- rpm: http://nginx.org/packages/centos/{{centos_ver}}/noarch/RPMS/nginx-release-centos-{{centos_ver}}-0.el{{centos_ver}}.ngx.noarch.rpm
tasks:
- name: repo
yum: name={{rpm}} state=installed
- name: install
yum: name=nginx state=installed
- name: nginx start
service: name=nginx state=running enabled=yes
- service:
ローカルのシェルスクリプトをリモートで実行する
---
- hosts: test-servers
sudo: yes
tasks:
- name: setup.sh
script: /path/to/setup.sh
感想
とりあえず触ってみた感じだと導入に関してはそんなに難しくないよう
実運用だとどうなんだろう。。。
とりあえず、ファイルのコピーとかコマンドも簡単にできるようなので小さなところから使ってみたい
サーバ構築用のシェルスクリプトは作ってあるのでansibleで書き直してみるのも勉強になりそう
設定ファイルを作ったり、includeとかroleとかは次回やってみる