ansible-role-mastodon/tasks/bare/ruby.yml

82 lines
2.5 KiB
YAML
Raw Normal View History

2022-11-19 10:10:57 +01:00
---
- 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"