【问题标题】:How do you install nginx on CentOS 6.5 using ansible如何使用 ansible 在 CentOS 6.5 上安装 nginx
【发布时间】:2015-03-28 06:51:09
【问题描述】:

我是使用 ansible 的新手,我正在尝试设置一个简单的 Hello World 剧本。到目前为止,我的一切都在互相交谈,但我似乎无法自动化 nginx 安装。我尝试了几种变体,但似乎找不到任何关于 yum 使用 ansible 安装 nginx 的文档。

我的剧本如下所示:(抱歉格式化)。它贯穿 EPEL 发行版安装,似乎永远挂在 nginx 安装上。

---
- hosts: webserver
  tasks:
      - name: Install EPEL release for nginx
        yum: name=epel-release state=present

      - name: Install nginx web server
        yum: name=nginx state=installed update_cache=true
        notify:
          - start nginx

      - name: Upload the default index.html file
        copy: src=html_files/index.html dest=/usr/share/nginx/www/ mode=0644

  handlers:
      - name: start nginx
        service: name=nginx enables=yes state=started

任何帮助将不胜感激。

如果我将第 8 行更改为:

yum: name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present

运行良好。

失败任务的剧本输出:

TASK: [Install nginx web server] **********************************************
<54.67.19.159> ESTABLISH CONNECTION FOR USER: root
<54.67.19.159> REMOTE_MODULE yum name=nginx state=latest update_cache=true
<54.67.19.159> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/username/.ansible/cp/ansible-ssh-%h-%p-%r" -o IdentityFile="/Users/username/.ssh/pemfile.pem" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 54.67.19.159 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1427534955.48-246337214944853 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1427534955.48-246337214944853 && echo $HOME/.ansible/tmp/ansible-tmp-1427534955.48-246337214944853'
<54.67.19.159> PUT /var/folders/l0/5f3qkrxd1sn976dzb5sfkk640000gn/T/tmpczLCV7 TO /root/.ansible/tmp/ansible-tmp-1427534955.48-246337214944853/yum
<54.67.19.159> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/username/.ansible/cp/ansible-ssh-%h-%p-%r" -o IdentityFile="/Users/username/.ssh/pemfile.pem" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 54.67.19.159 /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python -tt /root/.ansible/tmp/ansible-tmp-1427534955.48-246337214944853/yum; rm -rf /root/.ansible/tmp/ansible-tmp-1427534955.48-246337214944853/ >/dev/null 2>&1'

【问题讨论】:

  • 哦,我可以手动 ssh 进入并运行 yum install nginx,然后它运行并且任务说它发生了变化,但没有任何反应。
  • 请发布ansible-playbook yourplaybook -vvvv的输出
  • @seanm1985,你检查过 nginx 服务状态吗,如果它正在运行,请检查你的 iptables 规则并打开端口 80。
  • @seanm1985 您连接到远程主机的用户是什么?它是否有权安装软件包? Ansible 挂起时服务器上的情况如何?

标签: nginx ansible centos6.5


【解决方案1】:

首先 尝试使用 ssh 登录连接到没有密码的主机。 并改变

 service: name=nginx enables=yes state=started 

进入

 service: name=nginx enabled=yes state=started

【讨论】:

    【解决方案2】:

    @shilpa 的回答是正确的。展开...

    您的问题不在于安装,而在于启动服务。您的处理程序中有语法错误。

    说明: 在这里你有一个安装服务的任务然后你通知你的处理程序

      - name: Install nginx web server
        yum:
          name: nginx
          state: installed
          update_cache: yes
        notify:
          - start nginx
    

    但您的处理程序具有无效属性enables。它需要阅读,enabled。这样你上面的任务就完成了。该服务已安装但处于空闲状态。通知处理程序,但可能会生成错误(或 noop)。

    修正样本:

    - name: short line lengths make easier to catch mistakes
      service:
        name: nginx
        enabled: yes
        state: started
    

    我建议,在学习 ansible 时,检查你编写的每项任务的模块页面,或者使用有助于在编写代码时进行健全性检查的 linter。

    参考:

    我还推荐通用的package module,而不是 yum。祝你好运,编码愉快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 2014-10-27
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 2016-08-07
      相关资源
      最近更新 更多