2016-11-21 105 views
3

好傢伙我做一個簡單的劇本與Ansible練習,但我有一個問題,當我嘗試運行劇本(ansible-playbook -i hosts.ini playbook.yml)來配置實例EC2的輸出回報:Ansible:以XXX共享的連接關閉

> fatal: [XX.XXX.XXX.XXX]: FAILED! => { 
>  "changed": false, 
>  "failed": true, 
>  "invocation": { 
>   "module_name": "setup" 
>  }, 
>  "module_stderr": "Shared connection to XXX.XXX.XXX.XXX closed.\r\n", 
>  "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 
>  "msg": "MODULE FAILURE" }  to retry, use: --limit @/home/douglas/Ansible/ansible_praticing/projeto2.retry 
> 
> PLAY RECAP 
> ********************************************************************* 
> XX.XXX.XXX.XXX    : ok=0 changed=0 unreachable=0 failed=1 

當我嘗試通過ssh -i ~/.ssh/key.pem [email protected]與實例連接時,它運行良好,但不提供配置。

我的劇本:

- hosts: projeto 
    sudo: True 
    remote_user: ubuntu 
    vars_files: 
    - vars.yml 

    tasks: 
    - name: "Update" 
     apt: update_cache=yes 

    - name: "Install the Ansible" 
     apt: name=ansible state=latest 

    - name: "Installt the mysql" 
     apt: 
     args: 
     name: mysql-server 
     state: latest 

    - name: "Install the Nginx" 
     apt: 
     args: 
     name: nginx 
     state: latest 

hosts.ini也行(公網IP AWS的EC2實例),我把公鑰(本地計算機的~/.ssh/id_rsa.pem)在~/.ssh/authorized_keys文件,實例的內部。

在上週(星期五),這本劇本運作良好。

我在做什麼錯?

+0

這是從錯誤信息很清楚,它無法找到目標節點上的'在/ usr/bin中/ python'。您提供的所有其他信息與問題無關。 – techraf

+0

Ubuntu 16.04目標?沒有默認的Python 2.x ... –

+0

@ techraf的評論是正確的。化妝品評論:使用'apt'時,您實際上可以移除'args:'關鍵字:http://docs.ansible.com/ansible/apt_module.html。 – xeroqu

回答

0

也許我的答案爲時已晚,但今天我面臨同樣的問題。我有一個運行在我的EC2上的Ubuntu 16.04實例。我認爲,因爲它有Python 3(Python 3.5)作爲它的默認Python安裝。因此,ansible無法找到所需的Python目錄(/usr/bin/python)。我通過將可行的Python解釋器更改爲Python 3來解決此問題。

我將ansible_python_interpreter=/usr/bin/python3添加到我的清單文件中,並且不必更改操作手冊。

參考 - http://docs.ansible.com/ansible/latest/python_3_support.html