关于简单apache2任务的ansible-playbook出错

时间:2015-05-04 14:17:17

标签: apache ansible

尝试使用小型编排的ansible,但很快就会发现一个简单的apache问题。在启用mod_proxy后重新启动时,它失败并显示:

~$ ansible-playbook ansible/playbooks/apache_tomcat_mysql_mongo_stack.yml -u ansible --private-key ~/ansible/ansible.pem
PLAY [web] ******************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.56.103]

TASK: [apache | Update apt cache]  ********************************************* 
ok: [192.168.56.103]

TASK: [apache | Install Apache2] ********************************************** 
ok: [192.168.56.103]

TASK: [apache | Creating a Document virtualhost file] ************************* 
skipping: [192.168.56.103]

TASK: [apache | Creating a Reverse Proxy virtualhost file] ******************** 
ok: [192.168.56.103]

TASK: [apache | Activate Mod Proxy] ******************************************* 
changed: [192.168.56.103]

NOTIFIED: [apache | Restart-Apache] ******************************************* 
failed: [192.168.56.103] => {"failed": true}
msg: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

FATAL: all hosts have already failed -- aborting

NOTIFIED: [apache | Restart-Apache] ******************************************* 
FATAL: no hosts matched or all hosts have already failed -- aborting


FATAL: all hosts have already failed -- aborting

NOTIFIED: [apache | Restart-Apache] ******************************************* 
FATAL: no hosts matched or all hosts have already failed -- aborting

FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
       to retry, use: --limit @/home/user/apache_tomcat_mysql_mongo_stack.retry

192.168.56.103             : ok=5    changed=1    unreachable=0    failed=1  

以下是playbook apache_tomcat_mysql_mongo_stack.yml

- hosts: web
  roles:
  - apache
  sudo: True
  vars:
    document_vhost: False
    proxy_vhost: True
    activate_vhost: False
    deactivate_vhost: False
    apache_domain_name: node3.localhost
    apache_admin_email_address: devops@node3.localhost
    apache_port: 80
    activate_vhost: True
    apache_vhosts:
    - apache_proxy_context: /
      reversed_server_mod: ajp
      reversed_server_ip: 192.168.56.105
      reversed_server_port: 8009
      reversed_server_context: /
- hosts: tomcat
  roles:
  - java
  - tomcat
  sudo: True
  vars:
    java_version: 7
    tomcat_version: 7
    tomcat_port: 8080
    tomcat_redirection_port: 8443
    tomcat_ajp_port: 8009
    tomcat_ajp_redirection_port: 8443
    tomcat_ajp_server_fake_name: Server
    tomcat_jvmroute_name: jvmroute1

为了简洁起见,pastie.org上可以找到所有相关信息,如apache角色和处理程序。我无法弄清楚发生了什么,因为看起来ansible正试图在已经运行的服务旁边启动一个不同的apache服务。

如何解决这样的问题?感谢

1 个答案:

答案 0 :(得分:1)

我看到你可以进一步调查的两件事:

  

msg:(98)地址已被使用:AH00072:make_sock:无法绑定到地址[::]:80   (98)已在使用的地址:AH00072:make_sock:无法绑定到地址0.0.0.0:80   没有可用的侦听套接字,关闭

看起来apache无法绑定TCP端口80,因为其他东西正在使用它。在运行playbook之前运行sudo netstat -ntlp | grep 80并确认在端口80上确切地监听了哪个进程。确保它是apache。

  

AH00015:无法打开日志

这看起来似乎是apache的文件系统权限写入它的日志文件可能是错误的。您还应该验证/var/log/apache2的相关目录权限(或者您的发行版的路径)。