背景
我正在试验Ansible (1.9.4)角色,并试图了解角色依赖的诀窍。
我创建了以下角色:
第二个角色将第一个角色定义为/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配置到主目录中的某个位置:
roles_path = ~/ansible/roles然后,我使用以下命令将ansible-java8角色安装为java8:
ansible-galaxy install -r requirements.yml运行该命令后,我可以在~/ansible/ 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问题
发布于 2015-12-31 23:10:53
这是一个问题,我是如何测试的角色。
我告诉Vagrant使用以下site.yml文件提供我的测试盒:
- hosts: all
sudo: yes
tasks:
- include: tasks/main.yml这显然导致Ansible只运行Tomcat任务,而没有考虑到这实际上是一个角色,而不仅仅是一个包含一些任务的剧本。
我用于测试的site.yml剧本位于存储库的根部,因此,一旦我将它更改为将存储库作为角色引用,一切都开始工作。
- hosts: all
sudo: yes
roles:
- { role: '../ansible-tomcat7' }https://stackoverflow.com/questions/34539670
复制相似问题