ansibleを使ってRailsを立ち上げてみた。
取り上げる題材を散らかしまくっておりますが、今回はansible
を使ってrails
を立ち上げてみようかと思います。
rubyも触ってみたいですしねー。
環境は毎度おなじみ、vagrant
でやります!
今回はついでにvim
も一緒にインストールされるように作って楽しようかなと思います。笑
では早速いきます。
まずはplaybookの中をざっとご紹介。
playbook
∟ init.yml
∟ roles
∟ ruby
∟ tasks
∟ main.yml
∟ rbenv.yml
∟ ruby-build.yml
∟ ruby-install.yml
∟ templates
∟ rbenv.sh.j2
∟ mysql
∟ tasks
∟ main.yml
∟ rails
∟ tasks
∟ main.yml
∟ vim
∟ tasks
∟ main.yml
こんな具合のファイル構成です。
役割イメージを自分なりに説明していきますと・・・
init.yml
- hosts: all
roles:
- ruby
- mysql
- rails
- vim
vars:
ruby_version: 2.4.0
rails_version: 5.0.0
こいつがまぁ司令塔ですね。
roles
に配置されているそれぞれのtasks
を呼び出すイメージでしょうか。
init.yml
から司令を受けて働くのがroles
な訳ですね。
上から順に行きましょう。
ruby
main.yml
- include: rbenv.yml
- include: ruby-build.yml
- include: ruby-install.yml
こいつがrubyのtasks
の中のまとめ役。
それぞれのyml
の処理をincludeしていますー。
rbenv.yml
- name: git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
command: git clone https://github.com/sstephenson/rbenv.git ~/.rbenv creates=~/.rbenv
tags:
- ruby
- rbenv
- name: add rbenv initialization to profile
template: src=rbenv.sh.j2 dest=/etc/profile.d/rbenv.sh owner=root group=root mode=0755
sudo: true
tags:
- ruby
- rbenv
こやつがrbenv
を落として来て、templates
にあるrbenv.sh.j2を実行。
rbenv.sh.j2
if [ -d "$HOME/.rbenv" ]; then
export PATH=$HOME/.rbenv/bin:$PATH;
export RBENV_ROOT=$HOME/.rbenv;
eval "$(rbenv init -)";
fi
これでrbenv
コマンドが使えるようになります。
続いて、ruby
を入れる際に必要なプラグインも用意しまして、
ruby-build.yml
- name: git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
command: git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build creates=~/.rbenv/plugins/ruby-build/
tags:
- ruby
- ruby-build
そしてruby
のインストールですね!
ruby-install.yml
- name: install build depends by Ruby
yum: name={{ item }} state=present
with_items:
- gcc
- openssl-devel
- libyaml-devel
- readline-devel
- zlib-devel
- git
sudo: true
tags:
- ruby
- ruby:install
- install
- name: check ruby rbenv installed
shell: cd; bash -lc "rbenv versions | grep {{ ruby_version }} | tr '*' ' ' | sed -e 's/\s\+//' | cut -f1 -d' '"
register: ruby_installed
ignore_errors: yes
tags:
- ruby
- ruby:install
- install
- name: rbenv install {{ ruby_version }}
command: rbenv install {{ ruby_version }}
when: ruby_installed.stdout != ruby_version
tags:
- ruby
- ruby:install
- install
- name: rbenv global {{ ruby_version }}
command: rbenv global {{ ruby_version }}
when: ruby_installed.stdout != ruby_version
tags:
- ruby
- ruby:install
- install
これでruby
はOK!
続いてmysql
ですー。
mysql
main.yml
- name: install MySQL
yum: name={{ item }} state=present
with_items:
- mysql-server
- mysql-devel
sudo: true
tags:
- mysql
- install
- name: Start MySQL service
action: service name=mysqld state=started
sudo: true
tags:
- mysql
- install
書かれたまんまですね!
mysql
をインストールして、ついでに作動させてくれています。
そして本命・railsさんの登場です。
rails
main.yml
- name: check Rails installed
shell: rails -v | cut -f 2 -d ' '
register: rails_installed
ignore_errors: yes
tags:
- ruby
- ruby:install
- install
- name: gem install rails -v {{ rails_version }}
command: gem install rails -v {{ rails_version }}
when: rails_installed.stdout != rails_version
tags:
- rails
- install
これにてrails
さんの準備はOK!!
ついでのついでですが、vim
さんにも参入していただきますm(_ _)m
こんなに色々入れなくていいのですが、面倒だったのでバッと入れちゃいましたね・・・。
はい、すいません・・・。
vim
main.yml
- name: requires install
yum: name={{ item }} state=present
with_items:
- ctags
- mercurial
- ncurses-devel
- lua
- lua-devel
- perl
- perl-devel
- perl-ExtUtils-Embed
- python
- python-devel
- libselinux-python
sudo: true
tags:
- install
- name: install vim
yum: name=vim state=present
sudo: true
tags:
- vim
- install
- name: copy .vimrc file to vagrant home
copy: src=~/.vimrc dest=~vagrant/.vimrc owner=vagrant group=vagrant mode="u=rw,g=r,o=r"
tags:
- vim
- name: git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
command: git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
tags:
- vim
- neobundle
- install
neobundle
までついでに入れる徹底ぶり。笑
PCのローカル環境から.vimrc
もコピーして、便利ツールも反映、、!
これでTaglist
とかNEADTree
も使えるわけですな(^ ^)
無事に一発でRails立ち上がりました!!
なんとなく達成感のあるplaybook
作りでした。
頑張って、Rails勉強するぞー。