2015-10-05 8 views
12

पर मौजूद है या नहीं, मुझे एक ऐसी स्थिति है जहां मुझे स्थानीय मशीन पर एक फ़ाइल की स्थिति की जांच करने की आवश्यकता है (वह एक जहां मैं ansible-playbook ... पर कॉल करूंगा)।उत्तरदायी - जांचें कि फ़ाइल * स्थानीय * मशीन

यदि उपयोगकर्ता द्वारा बनाई गई एक फ़ाइल मौजूद है, तो इसे दूरस्थ होस्ट (अभियानों) पर कॉपी करने की आवश्यकता है। यदि यह अस्तित्व में नहीं है, तो दूरस्थ होस्टों में से कोई भी इसकी आवश्यकता नहीं है।

मैं जानता हूँ कि मैं जैसे कार्यों को पूर्ण करने है:

- name: Check for ~/.blah/config 
    stat: path=/home/ubuntu/.blah/config 
    register: stat_blah_config 

- name: Do something with blah config 
    shell: ~/do_something_with_config.sh 
    when: stat_aws_config.stat.exists == true 

लेकिन केवल तभी, फ़ाइल दूर से मौजूद है काम करेंगे। क्या सशर्त रूप से कार्य (जैसे प्रतिलिपि) निष्पादित करने का कोई तरीका है यदि फ़ाइल स्थानीय रूप से है (stat को पहले कार्य में स्थानीय रूप से निष्पादित करने के बजाय स्थानीय रूप से निष्पादित करें), और चुपचाप विफल होने पर यह विफल हो जाता है? मुझे यकीन नहीं है कि उत्तरदायी इस तरह की कार्यक्षमता है, लेकिन यह उपयोगी होगा।

+0

वास्तव में, मैं पहले से ही एक जवाब यहाँ मिल गया है हो सकता है, का उपयोग करते हुए 'local_action': http://stackoverflow.com/ प्रश्न/28855236/प्रति-स्थानीय-फ़ाइल-अगर-अस्तित्व-उपयोग-उत्तरदायी है? rq = 1 – FrustratedWithFormsDesigner

उत्तर

14

local_action बयान के माध्यम से स्थानीय होस्ट करने के लिए कार्य सौंपना आप क्या चाहते हैं करना चाहिए:

- name: Check for ~/.blah/config 
    local_action: stat path=/home/ubuntu/.blah/config 
    register: stat_blah_config 
+0

क्या कोई स्थानीय अनुमति सेटिंग है जिसे 'local_action' का उपयोग करने के लिए सेट करने की आवश्यकता है? मुझे "अनुमति अस्वीकार" त्रुटियां मिल रही हैं: 'TASK: [blah_stuff | ~/.blah/config के लिए जांचें] ************************************** विफल: [i-34b724e0 -> 127.0.0.1] => {"विफल": सत्य, "पार्स किया गया": झूठा} BECOME-SUCCESS-tqbkvkywytucgnfrjbmokwelpwddzevz /bin/sh: 1: /tmp/.ansible/tmp/ansible-tmp -1444157688.04-230781782204943/stat: अनुमति अस्वीकार ' मैंने' सूडो: सच्चाई 'का उपयोग करने का प्रयास किया लेकिन यह – FrustratedWithFormsDesigner

+0

की मदद नहीं करता था अगर 'sudo: true' विफल हो रहा है तो सुनिश्चित करें कि जिस उपयोगकर्ता को आप उत्तर दे रहे हैं पासवर्ड के बिना sudo करने की क्षमता। उत्तरदायी आपको पासवर्ड के लिए संकेत नहीं देगा, इसलिए यदि यह कार्य नहीं कर सकता है तो यह असफल हो जाएगा। –

संबंधित मुद्दे