つまりなにしたの?
先日は、Railsの環境をポチポチコマンド打ち込んでやっていた。
何度もやりそうだし、何度もやるのは大変なのでAnsibleでやることにした。

ensekitt.hatenablog.com
やることリスト
Ansibleってなに?
レッドハットが開発するオープンソースの構成管理ツールである。サーバを立ち上げる際、あらかじめ用意した設定ファイルに従って、ソフトウェアのインストールや設定を自動的に実行する事が出来る。
今回はこの設定ファイルであるmain.ymlを作った。
Ansibleのインストール
sudo yum install -y epel-release && sudo yum install -y ansible sudo yum update -y ansible
Ansibleのmain.ymlを作る
---
- hosts: localhost
become: yes
vars:
- ruby_version: 2.4.4
tasks:
- name: disable iptables
service: name=iptables state=stopped enabled=no
- name: install libselinux-python
yum: name=libselinux-python state=latest
- name: disable SELinux
selinux:
state: disabled
- name: remove localtime
file: path=/etc/localtime state=absent
- name: change timezone
file: src=/usr/share/zoneinfo/Asia/Tokyo dest=/etc/localtime state=link force=yes mode=0644
- name: change locale
lineinfile: >-
dest=/etc/sysconfig/i18n
state=present
regexp=^LANG=
line='LANG="ja_JP.UTF-8"'
- name: install remi
command: rpm -Uvh --force http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
- name: install man
yum: name=man state=latest
- name: mysql repository
command: rpm -Uvh --force http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
- name: install mysql
yum: name={{item}} state=present
with_items:
- mysql
- mysql-devel
- mysql-server
- mysql-utilities
- name: copy my.cnf.custom
copy: src=my.cnf.custom dest=/etc/my.cnf backup=yes
- name: start mysql
service: name=mysqld state=started enabled=yes
- name: install ruby packages
yum: name={{item}} enablerepo=remi,epel state=present
with_items:
- gcc
- openssl
- openssl-devel
- rpm-build
- gcc-c++
- bzip2
- bzip2-devel
- libtool
- zlib
- zlib-devel
- httpd-devel
- openssl-devel
- curl-devel
- ncurses-devel
- gdbm-devel
- readline
- readline-devel
- sqlite
- sqlite-devel
- libyaml-devel
- libffi-devel
- bison
- name: git clone rbenv
git: repo=https://github.com/sstephenson/rbenv.git dest=/home/vagrant/.rbenv
when: rbenv_present.rc == 1
become: no
- name: update bash_profile
copy: src=bash_profile.custom dest=/home/vagrant/.bash_profile backup=yes
become: no
- name: git clone ruby-build
git: repo=https://github.com/sstephenson/ruby-build.git dest=/home/vagrant/.rbenv/plugins/ruby-build
when: rbuild_present.rc == 1
become: no
- name: update rbenv
command: git pull --rebase chdir=/home/vagrant/.rbenv
become: no
- name: update ruby-build
command: git pull --rebase chdir=/home/vagrant/.rbenv/plugins/ruby-build
become: no
- name: install ruby
shell: /bin/bash -lc "rbenv install {{ruby_version}} && rbenv rehash && rbenv global {{ruby_version}}"
when: ruby_installed.rc == 1
become: no
- name: install node script
shell: /bin/bash -lc "curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -"
when: node_installed.rc == 127
- name: install nodejs
yum: name=nodejs state=latest
when: node_installed.rc == 127
- name: install npm
yum: name=npm state=latest
when: node_installed.rc == 127
MySQLの設定
$ vi my.cnf.custom
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock character_set_server=utf8 default-storage-engine=InnoDB innodb_file_per_table symbolic-links=0 user=mysql ;plugin-load=rpl_semi_sync_master=semisync_master.so ;plugin-load=rpl_semi_sync_slave=semisync_slave.so ;rpl_semi_sync_master_enabled=1 ;rpl_semi_sync_master_timeout=10 ;rpl_semi_sync_slave_enabled=1 ;performance_schema [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid !includedir /etc/my.cnf.d
bashprofileの設定
$ vi bash_profile.custom
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
Ansibleで実行する
ansible-playbook main.yml --connection=local
これでRailsをもう一度実行する
$ gem install rails $ rails new sampleapp $ cd sampleapp $ bundle exec spring binstub --all $ rails server
