2014-04-08 13 views
24

मैं एक वेब सर्वर से एक फ़ाइल को एक उत्तरदायी प्लेबुक के भीतर से एक फ़ाइल को भूलने की कोशिश कर रहा हूं।उत्तर और Wget

--- 
- hosts: all 
    sudo: true 
    tasks: 
    - name: Prepare Install folder 
    sudo: true 
    action: shell sudo mkdir -p /tmp/my_install/mysql/ && cd /tmp/my_install/mysql/ 
    - name: Download MySql 
    sudo: true 
    action: shell sudo wget http://{{ repo_host }}/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar 

के माध्यम से इसे लागू:

यहाँ Ansible टुकड़ा है

ansible-playbook my_3rparties.yml -l vsrv644 --extra-vars "repo_host=vsrv656" -K -f 10 

यह साथ विफल निम्नलिखित:

Cannot write to `MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar' (Permission denied). 
FATAL: all hosts have already failed -- aborting 

PLAY RECAP ******************************************************************** 
      to retry, use: --limit @/usr2/ihazan/vufroria_3rparties.retry 

vsrv644    : ok=2 changed=1 unreachable=0 failed=1 

जब आदेश के माध्यम से विफल करने का प्रयास कर नियमित रिमोट एसएसएच यह समझाने के लिए कि क्या उत्तरदायी होगा, यह निम्नानुसार काम नहीं करता है:

-bash-4.1$ ssh [email protected] 'cd /tmp/my_install/mysql && sudo wget http://vsrv656/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar' 
Enter passphrase for key '/usr2/ihazan/.ssh/id_rsa': 
sudo: sorry, you must have a tty to run sudo 

लेकिन मैं इसे आयकर का उपयोग कर के रूप में इस का समाधान कर सकते हैं:

-bash-4.1$ ssh -t [email protected] 'cd /tmp/my_install/mysql && sudo wget http://vsrv656/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar' 

तो यह काम करता है।

क्या उत्तर पर -t (छद्म tty विकल्प) सेट करने का कोई तरीका है?

पीएस: मैं इसे सडोएर्स फ़ाइल को संपादित करके हल कर सकता हूं क्योंकि दूसरों का प्रस्ताव है लेकिन यह एक मैन्युअल कदम है जिसे मैं टालने की कोशिश कर रहा हूं।

उत्तर

53

shell-मॉड्यूल का उपयोग न करें जब विशेष मॉड्यूल उपलब्ध हों। आपके मामले में: get_url मॉड्यूल के साथ

- name: create project directory {{ common.project_dir }} 
    file: state=directory path={{ common.project_dir }} 

फ़ाइलें डाउनलोड करें:

file मॉड्यूल के साथ निर्देशिका बनाएं

- name: download sources 
    get_url: url={{ opencv.url }} dest={{ common.project_dir }}/{{ opencv.file }} 

नोट उपरोक्त उदाहरण में नया मॉड्यूल कॉल वाक्य रचना।

यदि आपको sudo का उपयोग करना है, तो पासवर्ड के साथ --ask-sudo-pass को याद रखने के लिए याद रखें (उदाहरण के लिए Remote Connection Information)।

+0

Thx, यह सहायक था !!! –