未定义 Ansible 错误更改处理程序
Ansible error change handler is not defined
我正在尝试运行我的第一个剧本以在四台服务器上安装 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 版本似乎缺少配置文件。
你应该把你的处理程序放到 /etc/ansible/java/handlers/main.yml
因为处理程序是角色的一部分。
备注:
您不应使用您的处理程序,因为它会在您每次调用此剧本时将该行粘贴到 /etc/environment
中。我会推荐 lineinefile 模块。
您应该重新考虑将 ansible 剧本放入 /etc
的决定
我正在尝试运行我的第一个剧本以在四台服务器上安装 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 版本似乎缺少配置文件。
你应该把你的处理程序放到 /etc/ansible/java/handlers/main.yml
因为处理程序是角色的一部分。
备注:
您不应使用您的处理程序,因为它会在您每次调用此剧本时将该行粘贴到
/etc/environment
中。我会推荐 lineinefile 模块。您应该重新考虑将 ansible 剧本放入
的决定/etc