微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将这个 ansible 任务安装 R 包从剧本转移到角色?

如何解决如何将这个 ansible 任务安装 R 包从剧本转移到角色?

我正在使用 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。非常感谢,

迈克

解决方法

没关系:我想通了:我把角色和模块搞混了。结果我根本不需要引用这个角色:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?