2014-01-23 29 views
4

我有這兩個簡單的任務:ansible sudo_user掛起了幾分鐘,然後失敗(在centos6.5.1流浪漢VM)

- name: I am 
    shell: "echo `id`" 

- name: say hello 
    shell: echo "postgres saying hello" 
    sudo_user: postgres 

第二個任務失敗了好一會後,輸出低於 (它與詳細級別VVV遊民乳寧)(是的,我已經驗證用戶Postgres的存在, 我可以從虛擬機內部做了須藤Postgres的蘇)

TASK: [postgresql | I am] ***************************************************** 
changed: [192.168.78.6] => {"changed": true, "cmd": "echo `id` ", "delta": "0:00:00.002511", "end": "2014-01-23 22:49:14.161249", "item": "", "rc": 0, "start": "2014-01-23 22:49:14.158738", "stderr": "", "stdout": "uid=0(root) gid=0(root) groups=0(root)"} 

TASK: [postgresql | say hello] ************************************************ 
fatal: [192.168.78.6] => failed to parse: [sudo via ansible, key=fnfgfnxabemrzbfixwgoksvgjrfzplxf] password: 


FATAL: all hosts have already failed -- aborting 

事情在centos6運行。 5.1 vagrant vm

+0

不知道,但我認爲你還需要在說你好行動中'sudo:True'。 – mestachs

回答

6

對於Centos6.5它顯然不起作用。假設是它無法通過postgres系統用戶密碼的提示,儘管這是推測。

在回答這個問題如何克服ansible無力sudo來的Pos​​tgres(這反過來會通過默認的pg_hba.conf配置中使用對等身份驗證)的postgresql_期間*命令,這裏是一個解決辦法:

- hosts: all 
    sudo: yes 
    gather_facts: no 

    tasks: 
    - lineinfile: dest='/var/lib/pgsql/9.3/data/pg_hba.conf' regexp="^local\s+all\s+all\s+peer$" line="local all  all      trust" backrefs=yes 

    - name: restart after line change 
     action: shell sudo /etc/init.d/postgresql-9.3 restart 

    - name: create database 
     postgresql_db: name=acme 
     sudo: no       # NB!! 
     sudo_user: postgres 

我們正在改變從peertrust本地接入這就需要所要求的操作被執行或者通過另一lineinfile或使用MD5或任何所期望的配置之後重新啓動替換該文件之後被去除。以上只是爲了演示而已。這是一個巨大的黑客攻擊,但會允許你發出在Centos6下工作的非常可靠的postgresql模塊命令。請注意,我們爲postgresql任務設置了sudo

我證實了問題的存在和黑客的作品,爲此VM箱:

https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box 
2

的問題可能是在sudoers配置。我有相同的這一塊的Debian 7.6框有以下線/etc/sudoers一個問題:

%sudo ALL=(ALL:ALL) NOPASSWD: ALL 

我改變了線以下後:

%sudo ALL=(ALL) NOPASSWD: ALL 

Ansible開始按預期工作,即它能夠執行任務,如postgres用戶使用sudo

+1

是的!修復它在這裏。 –