如何使用ansible在CentOS 6.5上安装nginx

时间:2015-03-28 06:51:09

标签: nginx ansible centos6.5

我是使用ansible的新手,我正在尝试设置一个简单的Hello world playbook。到目前为止,我有一切都在互相交谈,但我似乎无法自动化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

它运行良好。

失败任务的Playbook输出:

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'

2 个答案:

答案 0 :(得分:1)

首先 尝试使用ssh登录连接到主机而无需密码。 并改变

 service: name=nginx enables=yes state=started 

 service: name=nginx enabled=yes state=started

答案 1 :(得分:0)

@ 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来帮助您在编写代码时理智地检查代码。

参考:

我还建议在yum one上使用通用package module。祝你好运,编码愉快。