82 lines
2.5 KiB
YAML
82 lines
2.5 KiB
YAML
|
---
|
||
|
|
||
|
- name: Fetch Ruby version required by Mastodon
|
||
|
shell: "cat {{ mastodon_home }}/{{ mastodon_path }}/.ruby-version"
|
||
|
register: ruby_version
|
||
|
|
||
|
- name: Fetch latest tagged release of rbenv
|
||
|
shell: "git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/rbenv/rbenv.git | tail --lines=1 | cut -d '/' -f 3"
|
||
|
register: rbenv_version
|
||
|
|
||
|
- name: Fetch latest tagged release of ruby-build
|
||
|
shell: "git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/rbenv/ruby-build.git | tail --lines=1 | cut -d '/' -f 3"
|
||
|
register: ruby_build_version
|
||
|
|
||
|
- name: "Clone rbenv version {{ rbenv_version.stdout }}"
|
||
|
git:
|
||
|
repo: "https://github.com/rbenv/rbenv.git"
|
||
|
dest: "~/.rbenv"
|
||
|
clone: true
|
||
|
version: "{{ rbenv_version.stdout }}"
|
||
|
|
||
|
- name: "Clone ruby-build version {{ ruby_build_version.stdout }}"
|
||
|
git:
|
||
|
repo: "https://github.com/rbenv/ruby-build.git"
|
||
|
dest: "~/.rbenv/plugins/ruby-build"
|
||
|
clone: true
|
||
|
version: "{{ ruby_build_version.stdout }}"
|
||
|
register: ruby_build
|
||
|
|
||
|
- name: Configure rbenv
|
||
|
command: ./configure
|
||
|
args:
|
||
|
chdir: "~/.rbenv/src"
|
||
|
register: rbenv_configure
|
||
|
|
||
|
- name: Build rbenv
|
||
|
command: make
|
||
|
args:
|
||
|
chdir: "~/.rbenv/src"
|
||
|
when: rbenv_configure is succeeded
|
||
|
|
||
|
- name: Update profile settings
|
||
|
copy:
|
||
|
dest: "~/.bashrc"
|
||
|
content: |
|
||
|
export PATH="~/.rbenv/bin:${PATH}"
|
||
|
eval "$(rbenv init -)"
|
||
|
|
||
|
- name: Check if the Ruby version is already installed
|
||
|
shell: "~/.rbenv/bin/rbenv versions | grep -q {{ ruby_version.stdout }}"
|
||
|
register: ruby_installed
|
||
|
ignore_errors: true
|
||
|
check_mode: no
|
||
|
|
||
|
- name: Install Ruby {{ ruby_version.stdout }}
|
||
|
shell: "~/.rbenv/bin/rbenv install {{ ruby_version.stdout }}"
|
||
|
args:
|
||
|
executable: /bin/bash
|
||
|
when: ruby_installed is failed
|
||
|
|
||
|
- name: Set the default Ruby version to {{ ruby_version.stdout }}
|
||
|
shell: "~/.rbenv/bin/rbenv global {{ ruby_version.stdout }}"
|
||
|
args:
|
||
|
executable: /bin/bash
|
||
|
register: default_ruby_version
|
||
|
|
||
|
#Locking the Bundler version by itself is no longer required
|
||
|
#https://bundler.io/blog/2022/01/23/bundler-v2-3.html
|
||
|
- name: Install bundler
|
||
|
shell: 'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; gem install bundler'
|
||
|
args:
|
||
|
executable: /bin/bash
|
||
|
when: default_ruby_version is succeeded
|
||
|
|
||
|
- name: Set SELinux policy for rbenv bundle same as /bin
|
||
|
become: true
|
||
|
#Workaround for "SELinux policy is not managed or store cannot be accessed" issue
|
||
|
become_user: root
|
||
|
shell: "chcon -R --reference /bin {{ mastodon_home }}/.rbenv/shims/bundle"
|
||
|
when:
|
||
|
- ansible_os_family == "RedHat"
|