Ansible / bin / sh: 1: / usr / bin / python के साथ विफल रहता है: नहीं मिला


187

मैं एक ऐसी त्रुटि में भाग रहा हूं जिसे मैंने पहले कभी नहीं देखा। यहाँ आदेश और त्रुटि है:

$ ansible-playbook create_api.yml

PLAY [straw] ******************************************************************

GATHERING FACTS ***************************************************************
failed: [104.55.47.224] => {"failed": true, "parsed": false}
/bin/sh: 1: /usr/bin/python: not found


TASK: [typical | install required system packages] *****************************
FATAL: no hosts matched or all hosts have already failed -- aborting


PLAY RECAP ********************************************************************
           to retry, use: --limit @/Users/john/create_api.retry

104.55.47.224               : ok=0    changed=0    unreachable=0    failed=1

यहाँ create_api.yml फ़ाइल है:

---

- hosts: api
  remote_user: root
  roles:
    - api

और यहाँ मेजबान फ़ाइल है:

[api]
104.55.47.224

मैं रोल्स सेक्शन को हटा सकता हूं और यह पहले TASK को नहीं बनाएगा, यह बदले में इसे केवल लाइन में बनाएगा /bin/sh: 1: /usr/bin/python: not found। यहां क्या हो सकता है?


नोट: यदि कोई आईपी पते को पिंग कर रहा है और प्रतिक्रिया पाने में विफल है, तो आपको पता होना चाहिए कि मैंने कोड को पेस्ट करने के बाद से आईपी पता बदल दिया है।

EDIT अजगर को स्थानीय रूप से स्थापित किया गया था, समस्या यह थी कि यह रिमोट मशीन पर स्थापित नहीं था, जो कि Ubuntu 15.04 चल रहा था

जवाबों:


171

मैं इस त्रुटि पर Ubuntu 15.10 सर्वर पर चल रहा है, क्योंकि यह Python 3.4.3 के साथ जहाज करता है और ansible Python 2 की आवश्यकता होती है

यह मेरा provision.ymlअब कैसा दिखता है:

- hosts: my_app
  sudo: yes
  remote_user: root
  gather_facts: no
  pre_tasks:
    - name: 'install python2'
      raw: sudo apt-get -y install python

  tasks:
    - name: 'ensure user {{ project_name }} exists'
      user: name={{ project_name }} state=present
  • Ay-get (या कच्चे मॉड्यूल चुपचाप अटक जाएगा ) के साथ -y -y (सभी प्रश्नों के लिए हां कहते हैं) विकल्प को मत भूलना

  • gather_facts: no लाइन भी महत्वपूर्ण है (क्योंकि हम अजगर के बिना तथ्यों को इकट्ठा नहीं कर सकते हैं)


12
तो फिर बाद की भूमिकाएं तथ्यों का उपयोग नहीं कर सकती हैं ... क्या फिर से तथ्यों को इकट्ठा करने का एक तरीका है? अहा, stackoverflow.com/questions/31054453/...
स्टीफन

16
ध्यान दें कि 'collect_facts: no' लाइन भी महत्वपूर्ण है।
rcreswick

6
@ surfer190 महान खोज! मैंने यह भी पाया कि action: setupअंतिम प्री_टस्क के रूप में जोड़ने पर भी बढ़िया काम किया :)
mrooney

1
@ surfer190 यहां मेरा उत्तर देखें यदि आप EC2 का उपयोग कर रहे हैं, तो आप CloudInit का उपयोग python2 को स्थापित करने के लिए कर सकते हैं ताकि आप हमेशा की तरह एकत्रित तथ्यों का उपयोग कर सकें।
मिरोस्लाव

1
यदि कोई भी सोच रहा है, तो पायथन 2 को स्थापित करने के लिए कार्य चलाना आवश्यक नहीं है ; नियमित काम भी ठीक है। लेकिन इसे अंसिबल मॉड्यूल को भी कॉल करने के लिए एक और कार्य के साथ , यह सुनिश्चित करेगा कि मेजबान को सौंपी गई किसी भी भूमिका के लिए तथ्य उपलब्ध हों। rawpre_taskstaskspre_taskssetup
केनी एविट

125

Ansible 2.2 में पायथन 3 सपोर्ट का तकनीकी पूर्वावलोकन है। इसका लाभ उठाने के लिए (ताकि आपको उबंटू 16.04 पर पायथन 2 को स्थापित करने की आवश्यकता नहीं है), बस ansible_python_interpreterकॉन्फ़िगर विकल्प को सेट करें /usr/bin/python3। यह आपकी इन्वेंट्री फ़ाइल में प्रति-होस्ट के आधार पर किया जा सकता है:

[db]
123.123.123.123 ansible_python_interpreter=/usr/bin/python3

मैंने इस चर में usr / usr / bin / python को जोड़ने की कोशिश की, लेकिन यह काम नहीं किया। Python3 को जोड़ने के बजाय काम किया और यह मुद्दा तय हो गया
डीप LF

98

समाधान 1:

यदि आप उपयोग कर रहे हैं Ansible >2.2.0, तो आप ansible_python_interpreterकॉन्फ़िगरेशन विकल्प को /usr/bin/python3निम्न पर सेट कर सकते हैं :

ansible my_ubuntu_host -m ping -e 'ansible_python_interpreter=/usr/bin/python3'

या अपनी इन्वेंट्री फ़ाइल में:

[ubuntu_hosts]
<xxx.xxx.xxx.xxx>

[ubuntu_hosts:vars]
ansible_python_interpreter=/usr/bin/python3

समाधान 2:

यदि आप उपयोग कर रहे हैं Ansible <2.2.0तो आप इन्हें pre_tasksअपनी प्लेबुक में जोड़ सकते हैं :

gather_facts: False
pre_tasks:
  - name: Install python for Ansible
    raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
    register: output
    changed_when: output.stdout != ""
    tags: always
  - setup: # aka gather_facts

अद्यतन के साथ ansible 2.8.x, आपको इसके बारे में चिंता करने की आवश्यकता नहीं है, यह नियंत्रक और लक्ष्य मशीन (ओं) के लिए अजगर> 3.5 के लिए बॉक्स से बाहर काम कर रहा है


यदि आप टैग का उपयोग करके अपनी प्लेबुक चलाते हैं, तो सुनिश्चित करें कि आप टैग जोड़ते हैं: हमेशा सेटअप कार्य के लिए - अन्यथा जब आप टैग का उपयोग कर रहे होते हैं तो तथ्यों को इकट्ठा नहीं करेंगे।
इयोनट बाजेस्कु

16
मेरे पास है ansible 2.3.0.0और यह बॉक्स से बाहर काम नहीं करता है। ओपी द्वारा पोस्ट की गई एक ही त्रुटि।
कोडर

यदि यह स्पष्ट रूप से स्पष्ट नहीं है, तो आपको इसे होस्ट इन्वेंट्री फ़ाइल में जोड़ना होगा, न कि शामिल वेरिएस के लिए, अर्थात, यह होस्ट इन एड्रेस / नाम के समान इन्वेंट्री फाइल में बैठता है।
शॉन मेहान

32

आप दूरस्थ मेजबानों पर पायथन को स्थापित करने के लिए कच्चे मॉड्यूल का उपयोग कर सकते हैं :

- raw: sudo apt-get install python-simplejson

11
यह सुनिश्चित करने के लिए कि आपकी भूमिका में कार्यों से पहले यह कहा जाता है, और आपकी मेटा फ़ाइल में किसी भी निर्भरता से पहले, इसे अपनी प्लेबुक में इस तरह जोड़ें: pre_tasks: - raw: sudo apt-get install python-simplejson
लॉरेंस रिटवेल्ड

5
ध्यान दें कि एक प्लेबुक में, आपको एकत्रित_फैक्ट को भी अक्षम करना होगा , या कच्चे कमांड को चलाने से पहले यह विफल हो जाएगा। (इकट्ठा_फैक्ट्स: नहीं)
rcreswick

@ आर्कसेविक मेरी समस्या थी और आपके समाधान ने मेरे लिए काम किया। बहुत बहुत धन्यवाद। मैंने अपनी मुख्य .yml फ़ाइल (setup-ansible.yml) में "collect_facts: no" लाइन लगाई और इस कमांड के साथ प्लेबुक को निष्पादित किया: "ansible-playbook -i होस्ट सेटअप-ansible.yml -flush-cache -vvvvvv -kK "। मैंने "-केके" विकल्पों का उपयोग करने योग्य-प्लेबुक के साथ किया क्योंकि डिफ़ॉल्ट यूबंटू इंस्टॉलेशन को "सुडो" करने के लिए पासवर्ड की आवश्यकता होती है।
अली युसेफ़ी सब्ज़्वर

आप सिंपलसन को क्यों स्थापित कर रहे हैं और पायथन को नहीं बल्कि अजगर को स्थापित करने के बारे में बात कर रहे हैं?
हेनिंग

@ हेनिंग python-simplejsonपायथन में लिखा गया है और इसलिए उसे पायथन की आवश्यकता है। simplejson भी अधिकांश Ansible कोर मॉड्यूल के लिए एक आवश्यकता है। के python-simplejsonमाध्यम से स्थापित करके apt-get/ yumआप भी पायथन को स्थापित करते हैं और इसलिए सभी मूल उत्तर निर्भरता को कवर करते हैं ...
udondan

18

हर किसी के जवाब को संक्षेप में बताने के लिए, यहाँ संयुक्त सेटिंग्स हैं जो मेरे लिए काम करती हैं:

 - hosts: all
   become: true
   gather_facts: false

   # Ansible requires python2, which is not installed by default on Ubuntu Xenial
   pre_tasks:
     - raw: sudo apt-get -y install python-simplejson
     # action: setup will gather facts after python2 has been installed
     - action: setup

14

मुझे व्यक्तिगत रूप से इस समस्या के 3 संभावित समाधान मिले हैं जो विभिन्न परिस्थितियों में अच्छी तरह से काम करते हैं:

विकल्प 1 - ansible_python_interpreter: /usr/bin/python3उन मेजबानों के लिए सेट करें जो python3डिफ़ॉल्ट रूप से इंस्टॉल किए गए हैं

मुझे लगता है कि समस्या को हल करने के लिए यह एक बेहतर तरीका है यदि आपके पास अपने होस्ट python3को डिफ़ॉल्ट रूप से स्थापित करने या न करने का तरीका है । जहां तक ​​मुझे जानकारी है, python3सभी उबंटू रिलीज 16.04 और उच्चतर पर उपलब्ध है।

  • यदि आपके सभी मेजबान निश्चित रूप से हैं python3, तो आप चर को अपने group_vars/all.yml(या समतुल्य) में जोड़ सकते हैं :
# group_vars/all.yml

ansible_python_interpreter: /usr/bin/python3
  • यदि आपके कुछ मेजबानों के पास नहीं है python3और आपके पास डायनामिक इन्वेंट्री का उपयोग करते समय उन्हें टैग करने का एक तरीका है (जैसे AWS टैगिंग के लिए ec2.py), तो आप इस तरह से कुछ मेजबानों के लिए चर को लागू कर सकते हैं:
# group_vars/tag_OS_ubuntu1804.yml

ansible_python_interpreter: /usr/bin/python3
  • यदि आप स्टैटिक इन्वेंट्री का उपयोग करते हैं और मेजबान को इस बात पर आधारित python3कर सकते हैं कि क्या उनके पास है , तो आप कुछ इस तरह से कर सकते हैं:
# inventory/hosts

[python2_hosts]
centos7_server

[python3_hosts]
u1804_server

[python3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3

मुझे यह विकल्प सबसे अधिक पसंद है क्योंकि इसके लिए रिमोट होस्ट पर कोई बदलाव नहीं करना पड़ता है और केवल चर में मामूली बदलाव होते हैं, विकल्प 2 और 3 के विपरीत, जिसके लिए हर प्लेबुक में परिवर्धन की आवश्यकता होती है।

विकल्प 2 - उपयोग करके पायथन 2 स्थापित करें raw

इस विकल्प को स्थापित करने के लिए gather_facts: falseउपयोग rawकरने वाले प्रत्येक प्लेबुक के शीर्ष पर एक नाटक डालने की आवश्यकता है python:

- name: install python2 on all instances
  hosts: "*"
  gather_facts: false
  tasks:
    - name: run apt-get update and install python
      raw: "{{ item }}"
      loop:
        - sudo apt-get update
        - sudo apt-get -y install python
      become: true
      ignore_errors: true

ignore_errors: trueयदि आपको मेजबानों पर नाटक चलाने की योजना है जो apt-getस्थापित नहीं है (उदाहरण के लिए आरएचईएल-आधारित कुछ भी), अन्यथा वे पहले नाटक में त्रुटि करेंगे।

यह समाधान काम करता है, लेकिन कुछ कारणों से मेरी सूची में सबसे कम है:

  1. हर प्लेबुक के शीर्ष पर जाने की जरूरत है (विकल्प 1 के विपरीत)
  2. aptसिस्टम पर मान लिया गया है और त्रुटियों को अनदेखा करता है (विकल्प 3 के विपरीत)
  3. apt-get कमांड धीमी हैं (विकल्प 3 के विपरीत)

विकल्प 3 - साइमलिंक /usr/bin/python -> /usr/bin/python3का उपयोग करनाraw

मैंने किसी अन्य द्वारा प्रस्तावित इस समाधान को नहीं देखा है। यह आदर्श नहीं है, लेकिन मुझे लगता है कि विकल्प 2 से कई मायनों में बेहतर है। मेरा सुझाव सिस्टम पर है और नहीं है तो rawसिम्कलिन के लिए एक शेल कमांड चलाने के लिए उपयोग करना है:/usr/bin/python -> /usr/bin/python3python3 python

- name: symlink /usr/bin/python -> /usr/bin/python3
  hosts: "*"
  gather_facts: false
  tasks:
    - name: symlink /usr/bin/python -> /usr/bin/python3
      raw: |
        if [ -f /usr/bin/python3 ] && [ ! -f /usr/bin/python ]; then
          ln --symbolic /usr/bin/python3 /usr/bin/python; 
        fi
      become: true

यह समाधान विकल्प 2 के समान है जिसमें हमें इसे हर प्लेबुक में सबसे ऊपर रखना होगा, लेकिन मुझे लगता है कि यह कुछ ही मामलों में बेहतर है:

  • केवल उस विशिष्ट मामले में सिम्लिंक बनाता है जो python3मौजूद है और pythonनहीं है - यह पायथन 2 को ओवरराइड नहीं करेगा यदि यह पहले से ही स्थापित है
  • aptस्थापित नहीं है
  • किसी भी विशेष त्रुटि से निपटने के बिना सभी मेजबानों के खिलाफ चला सकते हैं
  • सुपर फास्ट के साथ कुछ भी की तुलना में है apt-get

जाहिर है अगर आपको पायथन 2 की आवश्यकता है/usr/bin/python , तो यह समाधान एक नहीं है और विकल्प 2 बेहतर है।

निष्कर्ष

  • यदि आप कर सकते हैं तो मैं सभी मामलों में विकल्प 1 का उपयोग करने का सुझाव देता हूं ।
  • मैं विकल्प 3 का उपयोग करने का सुझाव देता हूं यदि आपकी इन्वेंट्री वास्तव में बड़ी / जटिल है और आपके पास आसानी से होस्ट करने के लिए कोई रास्ता नहीं है python3, तो विकल्प 1 को और अधिक कठिन और त्रुटि-प्रवण बना देगा।
  • मैं केवल सुझाव है कि विकल्प 2 से अधिक विकल्प 3 अगर आप अजगर 2 पर स्थापित की जरूरत है /usr/bin/python

सूत्रों का कहना है


13

आपको Ansible चलाने के लिए अजगर 2.7 की आवश्यकता है। Ubuntu 16.04 पर, आप इसे इस कमांड के माध्यम से स्थापित कर सकते हैं:

sudo apt-get install python-minimal

उसके बाद, मैं दौड़ सकता था

ansible-playbook -i inventories/staging playbook.yml

सफलतापूर्वक चलाएं

Ubuntu 16.04 पर ansible का उपयोग करने पर अधिक जांचें


12

मैं एक नए डिजिटल महासागर की छोटी बूंद पर ubuntu 15.10 पर काम कर रहा था:

# my-playbook.yml
- name: python2
  hosts: test
  gather_facts: no
  pre_tasks:
    - raw: sudo apt-get -y install python-simplejson

$ ansible-playbook path/to/my-playbook.yml

एक नए OVH SSD पर ubuntu 16.04 के लिए, मुझे python2 संकुल उपलब्ध होने से पहले उपयुक्त रूप से अपग्रेड करना पड़ा।


8

मुझे पता चला कि वास्तव में एक ही प्लेबुक में कई नाटक होना संभव है, इसलिए मेरे सेटअप में अब एक "निर्भरता प्रावधान" नाटक शामिल है जो सभी मेजबानों पर चलता है, और विशिष्ट मेजबानों के लिए अन्य नाटक। तो अब और नहीं pre_tasks

उदाहरण के लिए:

- name: dependency provisioning
  hosts: all
  become: yes
  become_method: sudo
  gather_facts: false
  tasks:
    - name: install python2
      raw: sudo apt-get -y install python-simplejson

- name: production
  hosts: production_host
  roles:
    - nginx
  tasks:
    - name: update apt cache
      apt: update_cache=yes cache_valid_time=3600
  # ....

- name: staging
  hosts: staging_host
  roles:
    - nginx
  tasks:
    - name: update apt cache
      apt: update_cache=yes cache_valid_time=3600
  # ....

6

जैसा कि दूसरों ने कहा, यह अजगर के लापता होने के कारण है। यहाँ अन्य उत्तर एक समाधान प्रदान करते हैं pre_tasksऔर gather_facts: no, यदि आप EC2 पर हैं और आप उस उदाहरण को स्पिन करते हैं जिसमें आप user_dataविकल्प का उपयोग कर सकते हैं :

- ec2:
    key_name: mykey
    instance_type: t2.micro
    image: ami-123456
    wait: yes
    group: webserver
    count: 3
    vpc_subnet_id: subnet-29e63245
    assign_public_ip: yes
    user_data: |
      #!/bin/bash
      apt-get update
      apt-get install -y python-simplejson
    register: ec2

तब लोग आमतौर पर ssh के इस तरह उपलब्ध होने की प्रतीक्षा करते हैं:

  - name: "Wait for the instances to boot and start ssh"
    wait_for:
      host: "{{item.public_ip}}"
      port: 22
      delay: 5
      timeout: 300
    with_items: "{{ ec2.tagged_instances }}"
    when: ec2|changed

हालाँकि मैंने पाया है, कि यह हमेशा पर्याप्त नहीं होता है क्योंकि CloudInit को बूट प्रक्रिया में काफी देर से क्रियान्वित किया जाता है, इसलिए ssh उपलब्ध होने के बाद भी python2 अभी भी स्थापित नहीं हो सकता है। उदाहरण के लिए, उदाहरण के लिए, मैंने एक ठहराव जोड़ा है:

  - name: "Wait for cloud init on first boot"
    pause: minutes=2
    when: ec2|changed

यह पूरी तरह से काम करेगा और एक लाभ के रूप में आप हर रन पर python2 के लिए जाँच नहीं कर रहे हैं और आपको बाद में तथ्यों को इकट्ठा करने के लिए कोई भी कार्यपट्टी करने की ज़रूरत नहीं है।

मुझे यकीन है कि अन्य क्लाउड प्रदाता समान CloudInit कार्यक्षमता प्रदान करते हैं, इसलिए अपने उपयोग के मामले के लिए अनुकूलित करें।


3

पैकर का उपयोग करने से समाधान उपयोगी हो सकता है

चलिए मान लेते हैं कि आप पैकर के अनसुने प्रोविजनर का उपयोग करते हैं, आपका कॉन्फिगरेशन नीचे की तरह लग सकता है

आप पहले शेल प्रोपर का उपयोग करके अजगर को स्थापित कर सकते हैं, फिर नीचे दिखाए अनुसार ansible_python_intepreter विकल्प को कॉन्फ़िगर करें

"provisioners": [
    {
      "type": "shell",
      "inline": [
        "apk update && apk add --no-cache python python-dev ansible bash"
      ]
    },
    {
      "type": "ansible-local",
      "playbook_file": "playbooks/your-play-book.yml",
      "playbook_dir": "playbooks",
      "extra_arguments": [
        "-e",
        "'ansible_python_interpreter=/usr/bin/python3'",
        "-vvv"
      ]
    },

2

डिफ़ॉल्ट रूप से, Ansible को Python 2 की आवश्यकता होती है , हालाँकि, Ansible 2.2+ पायथन 3 के साथ भी काम कर सकता है

तो या तो rawमॉड्यूल का उपयोग करके पायथन 2 स्थापित करें , जैसे

ansible localhost --sudo -m raw -a "yum install -y python2 python-simplejson"

या इन्वेंट्री फ़ाइल में ansible_python_interpreterचर सेट करें , जैसे:

[local]
localhost ansible_python_interpreter="env python3"

डॉकर के लिए, आप निम्नलिखित पंक्ति जोड़ सकते हैं:

RUN printf '[local]\r\nlocalhost ansible_python_interpreter="env python3"\r\n' > /etc/ansible/hosts

या इसे इस रूप में चलाएं:

ansible-playbook /ansible/provision.yml -e 'ansible_python_interpreter=/usr/bin/python3' -c local

1

इस Gist के अनुसार आप Ubuntu 16.04 पर Python2 स्थापित कर सकते हैं:

enter code here
gather_facts: False
pre_tasks:
  - raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
  - setup: # aka gather_facts

tasks:
  # etc. etc.

1

जवाब के बहुत सारे .. पोस्टिंग के लिए धन्यवाद, क्योंकि मुझे इस पेज से भी शुरुआत मिली!

मैंने थोड़ी खुदाई की और यह Ubuntu 14.04LTS के साथ ठोस था, Ubuntu 15.04LTS नवीनतम गिरा दिया गया है python, और Ubuntu 16.04LTS गिरा हुआ प्रतीत होता है aptitude

मैं किसी भी aptकॉल करने से पहले अपने बूटस्ट्रैप में निम्नलिखित क्रिया करता हूं :

- name: "FIX: Ubuntu 16.04 LTS doesn't come with certain modules, required by ansible"
  raw: apt-get install python-minimal aptitude -y
  become: true
  become_user: root
  become_method: sudo

यदि आप becomeकहीं और प्रबंधन करते हैं, तो बेझिझक इसे पट्टी करें।

सूत्रों का कहना है:


1

मैं उसी समस्या को ठीक करने में सक्षम था, जिसे टारगेट मशीन यानी जिस मशीन पर हम SSH करना चाहते हैं, उस पर पायथन लगाकर। मैंने निम्नलिखित आदेश का उपयोग किया था:

sudo apt-get install python-minimal

1

@ मिरोस्लाव, मुझे सही दिशा में इशारा करने के लिए धन्यवाद। मैं प्रयोग किया जाता user_dataमें ec2_instanceमॉड्यूल भी है और यह एक इलाज की तरह काम करता है।

अर्थात

- name: Creating single EC2 instance 
  ec2_instance:
    region: "{{ aws_region }}"
    key_name: "{{ aws_ec2_key_pair }}"
    name: "some-cool-name"
    instance_type: t1.micro
    image_id: ami-d38a4ab1
    security_group: sg-123456
    vpc_subnet_id: sn-678901234
    network:
        assign_public_ip: no
    volumes:
      - device_name: /dev/sda1
        ebs:
          volume_type: gp2
          volume_size: 15
    user_data: |
      #!/bin/bash
      #
      apt update
      apt install -y python-simplejson              
    termination_protection: yes
    wait: yes     

1

आप Ubuntu 18.04 को इंगित कर सकते हैं कि आप पहली प्राथमिकता के रूप में python3 का उपयोग करना चाहते हैं /usr/bin/python

- hosts: all
  become: true
  pre_tasks:
    - raw: update-alternatives --install /usr/bin/python python /usr/bin/python3 1

0

मेरे पास एक ही मुद्दा था, जब तक मुझे एहसास हुआ कि आपको दूरस्थ मेजबान के साथ-साथ अपने स्थानीय मशीन पर भी अजगर स्थापित करने की आवश्यकता है। अब यह काम कर रहा है!


-2

हम बस इसमें भागते हैं।

हम एक योनि पर ubuntu 16.04 को तैनात करते हैं तो यदि आप योनि का उपयोग नहीं कर रहे हैं तो मेरी टिप्पणी व्यर्थ है।

हमने निम्नलिखित योनि प्लगइन्स (ट्रिगर, शेल-कमांडर) स्थापित किए हैं और हम मशीन पर 2.7.6 स्थापित करते हैं (जो थिओज़ प्लगइन्स के बिना नहीं थे) और ansible तैनात कर सकते हैं

यह हमारा आखिरी परीक्षण था, अन्यथा हम इस इंस्टालेशन को वैगंट फाइल में शेल कमांड में शामिल करने वाले थे

आशा है कि यह किसी की मदद कर सकता है


2
यदि आप Ansible का उपयोग कर रहे हैं, तो नीचे दिया गया Ansible समाधान सही समाधान है। उम्मीद है कि Vagrant गलती से इसे आपके लिए इंस्टॉल कर देगा क्योंकि कुछ प्लगइन्स का साइड इफेक्ट ऐसा लगता है जैसे परेशानी के लिए पूछ रहा हो।
पॉल बेकोट्टे

माफ करना, लेकिन अगर आप अजगर नहीं है तो आप कैसे एक दिखावा चला सकते हैं ??? मैंने हल की कोशिश की और यह कार्य सेटअप में विफल रहा है इसलिए पूर्व कार्य से पहले घटना। योनि फ़ाइल में योनि खोल आदेश (पाठ्यक्रम के योनि मामले के लिए) ऐसा करने का सबसे अच्छा तरीका है, लेकिन मैं सिर्फ यह नोटिस करता हूं कि मेरे देव पर स्थापित योनि प्लगइन काम करता है। मैं प्लगइन पर भरोसा नहीं कर रहा हूं, लेकिन योनि फ़ाइल पर, मैंने अभी बताया कि यह प्लगइन के साथ भी काम करता है, लेकिन योनि फ़ाइल एक बेहतर विकल्प है (स्वचालन के लिए भी) क्योंकि आपको मैन्युअल रूप से प्रत्येक पर कुछ भी करने की आवश्यकता नहीं है नष्ट / प्रावधान
10

1
मैंने उस कोड ब्लॉक को बिल्कुल वैसा ही कॉपी किया, जैसा आपने अपना उत्तर पोस्ट करने से ठीक पहले दिया था। मेरा मानना ​​है कि आपने शायद gather_facts: noलाइन नहीं लगाई है - इसके लिए अजगर की आवश्यकता है। दूसरी संभावना यह है कि आपको मेजबान मशीन पर भी अजगर की आवश्यकता है, लेकिन मुझे लगता है कि इससे पहले ही प्रक्रिया में त्रुटियां हो सकती हैं।
पॉल बिकोटे

मैं भी कॉपी पेस्ट लेकिन यह काम पर शुक्रवार को था। मैं ईमानदारी से याद नहीं कर सकता कि अगर मैंने इकट्ठा_फैक्ट भाग लिया। वैसे भी एक अन्य कंप्यूटर में अगर यह आज सुबह फिर से आया है और मैंने अभी कमांड को योनिफाइल में रखा है, यह मेरे लिए पर्याप्त है जब तक कि हम वास्तविक सर्वर पर उत्पादन करने के लिए नहीं जाते। ); मैं फिर से एक ताजा दिमाग (ऐसा नहीं एक शुक्रवार की शाम) के साथ जवाब का परीक्षण होगा
wadoo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.