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とかは次回やってみる