2016-03-24 261 views
1

問題:當我嘗試安裝軟件包時,無法繼續。 CLI只是在那裏閒置。無法使用Ansible安裝軟件包

SSH被配置爲與輸出口令連接。我創建了一個名爲「test」的用戶,我的sudoers文件中有如下配置:

test ALL=(ALL)  NOPASSWD:ALL 
在/etc/ansible/ansible.cfg

而且

inventory  = /etc/ansible/hosts 
#library  = /usr/share/my_modules/ 
remote_tmp  = $HOME/.ansible/tmp 
pattern  = * 
forks   = 5 
poll_interval = 15 
sudo_user  = root 
#ask_sudo_pass = True 
#ask_pass  = True 
transport  = smart 
#remote_port = 22 module_lang = C 

當爲用戶「測試」我做

yum install lynx 

指定的軟件包已安裝。 但是,如果我做

ansible local -s -m shell -a 'yum install lynx' 

什麼也沒有發生。

我不知道什麼是對:(

+1

[這就是yum模塊存在的原因](https://docs.ansible.com/ansible/yum_module.html)。 – tedder42

+0

@Sam只有在主機下才夠用。一些東西跨越: - 主機:成爲:真正的任務: - 名稱:安裝lynx註冊:結果成爲'通常需要一個布爾如果我沒有錯,所以整個安裝將在root權限下 – qubsup

回答

2

去你得說 「是」 百勝:

試試這個:

ansible local -s -m shell -a 'yum install lynx -y' 
2

嘗試使用yum的模塊來代替:

ansible local -s -m yum -a 'name=lynx state=present' 
0

您應該使用yum模塊或甚至更好的package這是OS通用的模塊。

另一方面,你的其他選項是raw模塊,它對你的節點運行SSH-dirty命令!

這是在任務使用package模塊的示例:

---- 
- hosts: <hosts_names> 
    sudo: yes 
    tasks: 
    - name: install lynx 
    register: result 
    package: name=lynx state=latest 
    become: yes 
    become_user: root 
    become_method: sudo 
    ignore_errors: True 

使用上面的劇本,希望可以幫助您安裝你需要的包,即使它沒有做到這一點,你」我們可以很容易地通過result變量,看看發生了什麼問題。

當然,在所有這些之前,您應該確保您的YUM存儲庫能夠正常工作!