つまりなにしたの?
先日は、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