- Home
- AWS, linuxに関すること, Ruby, その他
- 【Ansible】rbenv で Ruby 環境を整える | AWS EC2
【Ansible】rbenv で Ruby 環境を整える | AWS EC2
目次
Ansible で Ruby 環境を整える
AWS EC2 のインスタンスに、Ansible で Rubyの環境を整えます。rbenv をインストール、rbenv install で Ruby(指定バージョン)をインストールします。
Playbookのタスク実装例です(実際は、rbenv と Ruby を分けて記述)。
- name: ruby env hosts: my_server become: true become_user: ubuntu vars: rbenv_path: "{{ ansible_user_dir }}/.rbenv" ruby_version: 2.6.3 ruby_dir: "{{ rbenv_path }}/versions/{{ ruby_version }}" tasks: - name: check rbenv install command: "{{ rbenv_path }}/bin/rbenv --version" register: rbenv_exists changed_when: False ignore_errors: True - name: rbenv install git: repo: https://github.com/sstephenson/rbenv.git dest: "{{ rbenv_path }}" when: rbenv_exists is failed - name: ruby-build install git: repo: https://github.com/sstephenson/ruby-build.git dest: "{{ rbenv_path }}/plugins/ruby-build" when: rbenv_exists is failed - name: prepare rbenv install become_user: root command: "{{ rbenv_path }}/plugins/ruby-build/install.sh" when: rbenv_exists is failed - name: PATH for rbenv blockinfile: dest: "{{ home_path }}/.bash_profile" create: yes insertafter: '^PATH=\$PATH:\$HOME/bin$' content: | export RBENV_ROOT={{ rbenv_path }} export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)" when: rbenv_exists is failed - name: packages for ruby become_user: root apt: pkg={{ item }} with_items: - build-essential - libssl-dev - libcurl4-openssl-dev - libreadline-dev - ruby-dev - zlib1g-dev - name: check ruby version command: bash -lc "rbenv versions | grep {{ ruby_version }}" register: rbenv_check_install changed_when: False ignore_errors: True - name: install ruby command: bash -lc "rbenv install {{ ruby_version }}" when: rbenv_check_install is failed args: creates: "{{ ruby_dir }}" - name: check rbenv global command: bash -lc "rbenv version | grep {{ ruby_version }}" register: rbenv_default changed_when: False ignore_errors: True - name: set rbenv global command: bash -lc "rbenv global {{ ruby_version }}" when: rbenv_default is failed
Ansible 主なモジュール・ディレクティブ
ruby 環境を整えるときに使用した、主なモジュールの簡単な説明です。
vars
Playbook内の変数。展開して利用できる。
apt
apt 実行。with_items:で指定したパッケージをインストール。
become
管理者権限で実行(true)。
git
git実行。repo(レポジトリ)、dest(インストール先)はモジュールに渡す引数。
command
コマンド実行。shellより推奨されている。
register
コマンドの実行結果を変数として保持。
when・changend_when・failed_when
制御構造。タスクの条件付き実行。
blockinfile
ファイルに追記。
参考書籍
Ansible 入門として、わかりやすい解説書です。
少し情報が古いことがありましたが、検索で対応できるレベルだったので問題ありませんでした。
Docker・AWS EC2 で Ansible を使いたかったので参考になりました。