如何使用我自己的参数从 galaxy 使用 ansible 角色?

How to use ansible role from galaxy with my own parameters?

我想使用在 ansible galaxy 上找到的角色:robertdebock.java

我想使用此角色安装 java 并将版本作为参数。我在我的 roles/java/tasks/main.yml 文件中试过这个:

- name: Install Java
  include_role:
    name: robertdebock.java
  vars:
    java_version: 10

不幸的是,无论我为 java_version.

提供什么参数,都只安装了版本 11

如何通过我自己的参数使用现有的 Galaxy 角色?

是的,可以使用带有您自己的参数的现有 Galaxy 角色。

但对于您的情况,请阅读 VALID-COMBINATIONS.md 文档。

您可能获得了 OS:

的默认版本

https://github.com/robertdebock/ansible-role-java/blob/master/vars/main.yml#L73

java_openjdk_package: "{{ _java_openjdk_package[java_type][java_version][ansible_distribution] | default(_java_openjdk_package[java_type][java_version]['default'] | default([])) }}"

您可以在剧本中使用角色时将变量传递给角色:

- name: Install Java
  roles: 
  - { role: robertdebock.java, java_version: 10 }

只要变量使用相同的名称,它们将作为角色变量被拉入,在the proper scope