2017-11-18 197 views
-1

我創建了一個Vagrant vm(Ubuntu)並安裝了Ansible。我可以ping我的本地主機,這意味着我的虛擬主機。我寫了一本劇本來安裝nodejs。通過Ansible安裝nodejs playbook

--- 
- hosts: node #it contains localhost 
    gather_facts: no 
    tasks: 
    - name: install node.js 
    shell: apt-get install nodejs 
    sudo: yes 

當我運行手冊時,狀態顯示成功。據我的理解,它應該在我的虛擬機中安裝nodejs和npm。但是,如果輸入node -v,則表明它尚未安裝。

[email protected]:/vagrant_data$ ansible-playbook ping.yml 

PLAY [node] ******************************************************************* 

TASK: [install node.js] ******************************************************* 
changed: [localhost] 

PLAY RECAP ******************************************************************** 
localhost     : ok=1 changed=1 unreachable=0 failed=0 

[email protected]:/vagrant_data$ node -v 
The program 'node' can be found in the following packages: 
* node 
* nodejs-legacy 
Ask your administrator to install one of them 

我在做什麼錯在這裏?

回答

3

我在這裏做錯了什麼?

  • 您通過shell模塊執行一個命令,而不是使用天然,冪等Ansible module;

  • 您正在執行apt-get無參數以阻止交互式提示(-y);

  • 您正在使用長期過時的sudo參數(在當前Ansible版本中被忽略)而不是become;

  • 最後,你似乎有閱讀屏幕上的信息和區別包名的問題:期待node.js安裝node可執行文件,而你的系統中明確規定它可以在node或​​包被發現。


獎勵:您正在安裝 - 通過一個單獨的進程 - 一組用於設置和使用用戶環境變量的程序,而是繼續使用shell會話,而設置了環境(這並沒有直接影響node可執行可用性,但無論如何都是錯誤的)。