Mind Dump, Tech And Life Blog
written by Ivan Alenko
published under license Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)copy! share!
posted at 09. Oct '19
last updated at 31. Jan '22

Howto: Installing Rbenv with Ansible (only Debian 10- era)

This article is about how to install rbenv automatically with ansible on remote servers and users. Suitable for beginners.

EDIT: zzet ansible recipe works only for Debian 10 and not Debian 11. Fails on python-apt cannot be found even when it’s in fact installed. Even after 25 years, still so many problems with Python 3 migration. Also python cannot be found which can be dealt with an additional parameter ansible-playbook -i hosts rbenv.yml -e ansible_python_interpreter=/usr/bin/python --check. So…what’s the plan? Investigate newer forks or fork it myself as I did with capistrano nvm support.

Install ansible and rbenv role plugin.

# apt-get install ansible
brew install ansible
ansible-galaxy install zzet.rbenv

Define hosts where it should run.

# ./hosts
[web]
myrtana.sk

YAML configuration file with Rbenv version and Ruby version to be installed and user where it should switch to. This file is called “playbook”.

# rbenv.yml
- hosts: web
  gather_facts: true # https://github.com/zzet/ansible-rbenv-role/issues/37
  vars:
    rbenv:
      env: user
      version: v1.1.2
      default_ruby: 2.6.5
      rubies:
        - version: 2.6.5
          env:
            RUBY_CONFIGURE_OPTS: "--enable-shared --with-jemalloc"
    rbenv_extra_depends:
      - libjemalloc1
      - libjemalloc-dev
  roles:
    - role: zzet.rbenv
      rbenv_users:
        - myrtana_sk

Ansible needs to use root user, because jemalloc is going to be installed. Create a SHH key protected by a password.

ssh-keygen -t ed25519 -b 4096 -C 'my key'

Add the key.pub into .ssh/authorized_keys on server(s) file or create the directory and file in case it doesn’t exist.

Tell SSH to use the key.

# .ssh/config
Host *myrtana.sk
  User root
  IdentityFile ~/.ssh/mykey

Finally, run it.

ansible-playbook -i hosts rbenv.yml

You should see lots of output and at the end everything passed.

PLAY RECAP ***************
myrtana.sk                 : ok=19   changed=9    unreachable=0    failed=0    skipped=24   rescued=0    ignored=0

P.S. root login needs to be allowed in my way, but you could use become_user config in the playbook to switch to root user from regular one.

Add Comment