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