背景
我正在尝试使用 Ansible (1.9.4) 角色,并试图掌握角色依赖关系。
我创建了以下角色:
- 安装 Oracle JDK (ansible-java8) 的角色
- 一个安装Tomcat的角色(ansible-tomcat7)
第二个角色将第一个角色定义为/ansible-tomcat7/meta/main.yml
:
dependencies:
- { role: java8 }
我还包含了一个 requirements.yml 文件,其中包含以下内容:
- name: java8
src: 'https://github.com/gregwhitaker/ansible-java8'
我已将以下配置添加到我的配置中,/etc/ansible/ansible.cfg
以将我的角色路径配置到我的主目录中的某个位置:
roles_path = ~/ansible/roles
然后我使用以下命令安装了ansible-java8
角色:java8
ansible-galaxy install -r requirements.yml
运行命令后,我可以在 ~/ansible/roles 目录中看到 java8 角色。
但是,当我运行一个调用 tomcat7 角色的剧本时,只会执行该角色。java8 角色不会在 tomcat7 角色之前执行。
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [default]
TASK: [Install Tomcat7 (Ubuntu)] **********************************************
changed: [default] => (item=tomcat7,libtcnative-1,libapr1)
TASK: [Install Tomcat7 (Debian)] **********************************************
skipping: [default]
TASK: [Install Tomcat7 (Amazon Linux)] ****************************************
skipping: [default]
PLAY RECAP ********************************************************************
default
问题
- 这是定义依赖角色的正确方法还是我完全错过了什么?
- 我是否认为因为我将 tomcat7 角色标记为依赖于 java8,所以我认为 java8 角色应该从角色路径中找到并首先运行?
- 我犯了什么错误导致 java8 角色无法在 tomcat7 角色之前运行?