Ansible로 서버에 Ruby 설치

Ansible로 서버(Amazon Linux2)의 환경 구축을 하고 있습니다만, rbenv를 사용하지 않고 소스로부터 ruby를 넣었으므로, 그 순서를 정리해 보았습니다

설치하기 위해 한 일



절차는 대략 다음 4가지
1. Ansible Galaxy에서 Ruby를 설치할 역할을 찾습니다.
2. ansible-galaxy install 명령으로 프로젝트의 역할에 추가
3. 설치하고자하는 Ruby의 버전 등 설정 파일을 재기록
4. Playbook을 실행하고 웹 서버의 Ruby 버전을 확인합니다.

※ Ansible Galaxy란?

역할을 공유하는 서비스로 Docker Hub와 Chef의 Supermarket과 같은 이미지입니다.

1. Ansible Galaxy에서 Ruby를 설치할 역할을 찾습니다.



Ansible Galaxy 에서 keyword에 Ruby를 입력하고 star 수 등을 확인하면서 원하는 것을 찾습니다.
이번은 이쪽( geerlingguy.ruby )을 사용해 보겠습니다

2. ansible-galaxy install 명령을 사용하여 프로젝트의 역할에 추가



프로젝트의 역할 아래에 설치하고 싶었으므로이 명령을 실행했습니다.
$ ansible-galaxy install geerlingguy.ruby -p roles/servers/common

그런 다음 roles/servers/common/geerlingguy.ruby에 작성되었습니다.


3. 설치하고자하는 Ruby의 버전 등 설정 파일을 재기록



Ruby 2.4.2를 설치하고 싶었기 때문에 geerlingguy.ruby/defaults/main.yml 파일을 다시 씁니다.

main.yml
---
workspace: /root

# Whether this role should install Bundler.
ruby_install_bundler: True

# A list of Ruby gems to install.
ruby_install_gems: []

# The user account under which Ruby gems will be installed.
ruby_install_gems_user: "{{ ansible_user }}"

# If set to True, ruby will be installed from source, using the version set with
# the 'ruby_version' variable instead of using a package.
ruby_install_from_source: True
ruby_download_url: http://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz
ruby_version: 2.4.2

# Default should usually work, but this will be overridden on Ubuntu 14.04.
ruby_rubygems_package_name: rubygems

※주의점

Playbook의 gather_facts를 true로 설정하지 않으면 "{{ ansible_user }}"를 얻을 수 없습니다.
false로 하면 "{{ ansible_user }}"를 다시 작성해야 합니다.

main.yml

省略

# The user account under which Ruby gems will be installed.
ruby_install_gems_user: "{{ ansible_user }}"

省略


Playbook의 일례로 이런 파일이라고 하면

webserver.yml
- name: webserver
  hosts: web
  gather_facts: true
  remote_user: ec2-user
  become: yes
  roles:
    - servers/common/geerlingguy.ruby

4. Playbook을 실행하고 웹 서버의 Ruby 버전을 확인합니다.



서버에 ssh하고 루비 버전을 확인해보십시오.

안전 Ruby 2.4.2가 설치되었습니다.

참고 사이트


  • You Don't Need common-roles in Ansible
  • 좋은 웹페이지 즐겨찾기