【发布时间】: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。非常感谢,
迈克
【问题讨论】:
-
您应该考虑在诸如 SO 之类的问答网站上从您的词汇表中禁止“它不起作用”,至少在单独使用时是这样。 It does not accurately describe your problem