我试图运行我的第一个playbook在四台服务器上安装Java,然后定义一个JAVA_HOME环境变量。
ansible-playbook site.yml --check
PLAY [crave_servers] **********************************************************
GATHERING FACTS ***************************************************************
ok: [54.174.151.196]
ok: [54.174.197.35]
ok: [54.174.207.83]
ok: [54.174.208.240]
TASK: [java | install Java JDK] ***********************************************
changed: [54.174.197.35]
changed: [54.174.151.196]
changed: [54.174.208.240]
changed: [54.174.207.83]
ERROR: change handler (setvars) is not defined
我已将site.yml放在/ etc / ansible
下---
- hosts: crave_servers
remote_user: ubuntu
sudo: yes
roles:
- java
我已将main.yml放在/ etc / ansible / java / tasks
下---
- name: install Java JDK
apt: name=default-jdk state=present
notify:
- setvars
我已将main.yml放在/ etc / ansible / handlers
下---
- name: setvars
shell: echo "JAVA_HOME=\"/usr/lib/jvm/java-7-openjdk-amd64\"" >> /etc/environment
现在我不确定语法是否是我的处理程序的结构是正确的。但是从输出中可以明显看出Ansible能够找到正确的角色并执行正确的任务。但是任务无法找到处理程序。 没有其他人似乎有同样的问题。而且我真的不知道如何调试它,因为我的ansible版本似乎缺少配置文件。
答案 0 :(得分:3)
您应该将处理程序置于/etc/ansible/java/handlers/main.yml
由于处理程序是角色的一部分。
说明:
您不应该使用处理程序,因为每次调用此playbook时都会将行粘贴到/etc/environment
。我会推荐lineinefile模块。
您应该重新考虑将ansible playbooks放入/etc