एक विशिष्ट उपयोगकर्ता के रूप में अन्सिबल कार्य चलाना


23

मैं एक अलग उपयोगकर्ता के रूप में एक विशिष्ट कार्य चलाने की कोशिश कर रहा हूं जो कि प्लेबुक चला रहा है। मेरी .ymlफ़ाइल इस तरह दिखती है:

---

- hosts: staging_servers
  tasks:    
    - name: check user
      remote_user: someusername
      shell: whoami

इस कार्य को चलाने से मुझे पता चलता है कि whoamiकमांड किसी भिन्न उपयोगकर्ता को कार्य में परिभाषित किया गया है (ठीक है, उस उपयोगकर्ता को लौटाता है जिसे hostsफाइल में परिभाषित किया गया है ubuntu)।

मैंने इस तरह कार्य को परिभाषित करने का भी प्रयास किया:

---

- hosts: staging_servers
  tasks:
    - name: check user
      sudo: yes
      sudo_user: someusername
      shell: whoami

लेकिन तब मुझे Missing sudo passwordत्रुटि मिलती है , हालाँकि sudoersफ़ाइल में एक पंक्ति होती है जो कहती है someusername ALL=(ALL) NOPASSWD:ALLऔर sudoरिमोट मशीन पर कमांड जारी someusernameकरती है जैसा कि मुझसे पासवर्ड के लिए नहीं पूछा जाता है।

तो, मैं एक अलग उपयोगकर्ता के रूप में विशिष्ट कार्य कैसे चला सकता हूं जो उपयोगकर्ता hostsफ़ाइल या rootस्वयं में परिभाषित नहीं है ?

जवाबों:


19

आप दोनों सेटिंग्स को गलत समझ रहे हैं:

  • Remote_user एक Ansible सेटिंग है जो SSH उपयोगकर्ता को नियंत्रित करता है Ansible कनेक्ट करने के लिए उपयोग कर रहा है:ssh ${REMOTE_USER}@remotehost

  • someusername ALL = (ALL) NOPASSWD: ALL एक sudo कॉन्फ़िगरेशन है जो उपयोगकर्ता someusernameको किसी भी होस्ट में बिना पासवर्ड के सभी कमांड निष्पादित करने की अनुमति देता है । हालांकि यह किसी को भी आदेश जारी करने की अनुमति नहीं देता है someusername

आदर्श रूप में, आप सीधे सही उपयोगकर्ता के रूप में लॉगिन करेंगे और यही remote_userसब कुछ है। लेकिन आमतौर पर आप केवल एक प्रशासनिक उपयोगकर्ता (कहते हैं ubuntu) के रूप में लॉगिन करने में सक्षम होते हैं और दूसरे उपयोगकर्ता के रूप में कमांड करना पड़ता है (मान लीजिए scrapy)। फिर आपको remote_userउस उपयोगकर्ता को छोड़ देना चाहिए जो लॉग इन करता है और नौकरी के लिए निम्नलिखित गुण जोड़ें:

- name: log in as ubuntu and do something as scrapy
  remote_user: ubuntu
  sudo: true
  sudo_user: scrapy
  shell: do-something.sh

1
समझा। यह स्पष्ट करने के लिए बहुत बहुत धन्यवाद! लेकिन फिर एक विशिष्ट उपयोगकर्ता के रूप में एक विशिष्ट कार्य कैसे चलाया जाए?
इरेटा

1
ध्यान दें कि remote_userआपके स्थानीय मशीन में वर्तमान उपयोगकर्ता के लिए चूक - जैसा कि ssh करता है, वास्तव में।
कैपी ईथरल

ठीक है, लेकिन इस तरह के एक सेटअप के साथ मुझे अभी भी ' Missing sudo password' त्रुटि मिलती है । क्या उस विशिष्ट उपयोगकर्ता के लिए पासवर्ड पूछने से बचने का कोई तरीका है?
इरेटा

मुझे लगता है कि मुझे उत्तर मिला, मैं सूडोर्स में लाइन जोड़ ubuntu ALL=(someusername) NOPASSWD: ALLरहा हूं : लेकिन मुझे इसके पीछे की सुरक्षा के बारे में सोचना है ... क्या इस लाइन को सूडोर में जोड़ने के अलावा कोई और तरीका है?
इरेटा

1
उचित तरीका यह होगा कि आप अपने दूरस्थ उपयोगकर्ता को सीधे लॉगिन करने दें।
कैपी एथरिएल

16

ध्यान दें कि Ansible 1.9 के बाद, sudoशब्दों को becomeइस प्रकार बदल दिया गया था

sudo: yes
sudo_user: some_user

बन जाता है (इरादा इरादा):

become: yes
become_user: some_user

अधिक विवरण यहां देखें: /programming//a/22749788/402727

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.