How to move an ansible task (to install R packages) from a playbook to a role?

I’m automating my mac setup using ansible, having great success. I just can’t figure out how to move one particular task from my playbook (where it succeeds) to a role. The task relies on a module (or possibly a role: it’s not entirely clear to me from the context): yutannihilation.module-cran (see: https://github.com/yutannihilation/ansible-module-cran) and its job is to install two R packages from CRAN. This is my (successful) playbook task:


- hosts: mac

roles:

- yutannihilation.module-cran

environment:

PATH: /opt/brew/bin:{{ ansible_env.PATH }}

tasks:

- name: Install R packages

cran: name={{ item }} state=present

with_items:

- tuneR

- seewav

where it works fine. I’ve now created a role av_dev, and in roles/av_dev/tasks/main.yml I have tried all manner of things: this is the only form in which ansible doesn’t error out, but unfortunately it also doesn’t install the packages:


- name: Install AV dev R packages

include_role:

name: yutannihilation.module-cran

vars:

name: "{{ item }}"

state: present

environment:

PATH: /opt/brew/bin:{{ ansible_env.PATH }}

with_items:

- tuneR

- seewave

Note: it’s only this task that doesn’t work: I have created lots of roles, with lots of tasks, and this is the only task I can’t get to work inside a role. I assume (hope) that it is possible to call this module/role from within my role; if anyone can show me how to do it I’ll be very grateful: and no doubt understand ansible a little better as a result. Many thanks,

Note: this is cross-posted to stack overflow (https://stackoverflow.com/questions/67794835/how-to-move-this-ansible-task-to-install-r-packages-from-a-playbook-to-a-role) but I realized this forum is much more appropriate!

Mike

Nevermind: I figured it out: I had confused the role with the module. Turns out I don’t need to reference the role at all:

  • name: Install AV dev R packages
    cran: name={{ item }} state=present
    with_items:
  • tuneR
  • seewave
    environment:
    PATH: “{{ homebrew_prefix }}/bin:{{ ansible_env.PATH }}”