
Ansible로 서버에 Ruby 설치
2022-10-06 last update
7 minutes reading Ansible ansible-playbook 환경 구축 루비Ansible로 서버(Amazon Linux2)의 환경 구축을 하고 있습니다만, rbenv를 사용하지 않고 소스로부터 ruby를 넣었으므로, 그 순서를 정리해 보았습니다
절차는 대략 다음 4가지
1. Ansible Galaxy에서 Ruby를 설치할 역할을 찾습니다.
2.
3. 설치하고자하는 Ruby의 버전 등 설정 파일을 재기록
4. Playbook을 실행하고 웹 서버의 Ruby 버전을 확인합니다.
※ Ansible Galaxy란?
역할을 공유하는 서비스로 Docker Hub와 Chef의 Supermarket과 같은 이미지입니다.
Ansible Galaxy 에서 keyword에 Ruby를 입력하고 star 수 등을 확인하면서 원하는 것을 찾습니다.
이번은 이쪽( geerlingguy.ruby )을 사용해 보겠습니다
프로젝트의 역할 아래에 설치하고 싶었으므로이 명령을 실행했습니다.
그런 다음 roles/servers/common/geerlingguy.ruby에 작성되었습니다.

Ruby 2.4.2를 설치하고 싶었기 때문에
main.yml
※주의점
Playbook의 gather_facts를 true로 설정하지 않으면
false로 하면
main.yml
Playbook의 일례로 이런 파일이라고 하면
webserver.yml
서버에 ssh하고 루비 버전을 확인해보십시오.

안전 Ruby 2.4.2가 설치되었습니다.
You Don't Need common-roles in Ansible
설치하기 위해 한 일
절차는 대략 다음 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가 설치되었습니다.