【问题标题】:How do I move this ansible task (to install R packages) from a playbook to a role?如何将这个 ansible 任务(安装 R 包)从剧本移动到角色?
【发布时间】:2021-06-01 19:17:48
【问题描述】:

我正在使用 ansible 自动化我的 mac 设置,取得了巨大的成功。我只是不知道如何将一项特定任务从我的剧本(它成功的地方)转移到一个角色。该任务依赖于一个模块(或者可能是一个角色:从上下文中我并不完全清楚):yutannihilation.module-cran(参见:https://github.com/yutannihilation/ansible-module-cran),它的工作是从 CRAN 安装两个 R 包。这是我(成功的)剧本任务:

- 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

它工作正常的地方(成功安装了这两个包)。我现在创建了一个角色 av_dev,并且在角色/av_dev/tasks/main.yml 中我尝试了各种方式:这是唯一一种 ansible 不会出错的形式,但不幸的是它也没有安装包:

- 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

注意:只有这个任务没有达到我的预期:我创建了很多角色,有很多任务,这是我无法在角色内部实现相同结果的唯一任务就像在我的剧本中一样。我假设(希望)可以从我的角色中调用这个模块/角色;如果有人能告诉我怎么做,我将不胜感激:毫无疑问,因此可以更好地理解 ansible。非常感谢,

迈克

【问题讨论】:

标签: r macos ansible cran


【解决方案1】:

没关系:我想通了:我将角色与模块混淆了。原来我根本不需要引用这个角色:

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

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多