简单 apache2 任务上的 ansible-playbook 出错
Error on ansible-playbook on simple apache2 task
尝试使用小型编排来处理 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
下面是剧本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
为了简洁起见,所有相关信息(如 apache 角色和处理程序)都可以在 pastie.org 上找到。我无法真正弄清楚发生了什么,因为它看起来像 ansible 正试图在已经 运行ning 之外启动一个不同的 apache 服务。
如何解决此类问题?谢谢
我发现有两件事你可以进一步调查:
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
这看起来 apache 无法绑定 TCP 端口 80,因为其他东西正在使用它。 运行 sudo netstat -ntlp | grep 80
在 运行 剧本之前,并准确验证哪个进程正在侦听端口 80。确保它是 apache。
AH00015: Unable to open logs
看起来 apache 写入其日志文件的文件系统权限可能是错误的。您还应该验证 /var/log/apache2
(或您的发行版的任何路径)的相关目录权限。
尝试使用小型编排来处理 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
下面是剧本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
为了简洁起见,所有相关信息(如 apache 角色和处理程序)都可以在 pastie.org 上找到。我无法真正弄清楚发生了什么,因为它看起来像 ansible 正试图在已经 运行ning 之外启动一个不同的 apache 服务。
如何解决此类问题?谢谢
我发现有两件事你可以进一步调查:
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
这看起来 apache 无法绑定 TCP 端口 80,因为其他东西正在使用它。 运行 sudo netstat -ntlp | grep 80
在 运行 剧本之前,并准确验证哪个进程正在侦听端口 80。确保它是 apache。
AH00015: Unable to open logs
看起来 apache 写入其日志文件的文件系统权限可能是错误的。您还应该验证 /var/log/apache2
(或您的发行版的任何路径)的相关目录权限。