উত্তর / বিন / শ: 1: / usr / বিন / পাইথন সহ উত্তর ব্যর্থ: পাওয়া যায় নি


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

আমি ভূমিকা বিভাগগুলি সরিয়ে ফেলতে পারি এবং এটি এটি প্রথম টিএএসকে তৈরি করে না, পরিবর্তে এটি কেবল লাইনে পরিণত করবে make /bin/sh: 1: /usr/bin/python: not found । এখানে কি হচ্ছে করা যেতে পারে?


বিঃদ্রঃ: যদি কেউ আইপি ঠিকানাটি পিং করে এবং কোনও প্রতিক্রিয়া পেতে ব্যর্থ হয় তবে আপনার জানা উচিত যে আমি কোড আটকে দেওয়ার পরে আইপি ঠিকানাটি পরিবর্তন করেছি।

এডিটি পাইথনটি স্থানীয়ভাবে ইনস্টল করা হয়েছিল, সমস্যাটি হ'ল এটি দূরবর্তী মেশিনে ইনস্টল করা হয়নি যা উবুন্টু 15.04 চলছে was

উত্তর:


171

উবুন্টু 15.10 সার্ভারে জবাবদিহি করতে গিয়ে এই ত্রুটিটি আমি হোঁচট খেয়েছি , কারণ এটি পাইথন ৩.৪.৩ সহ জাহাজে এবং জবাবদিহীর জন্য পাইথন ২ প্রয়োজন

এভাবেই আমার হয় 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
  • অ্যাপ-গেট (অথবা কাঁচা মডিউল নিঃশব্দে আটকে যাবে ) বিকল্পটি (ভুলে যাবেন না )

  • gather_facts: no লাইনটিও সমালোচিত (কারণ আমরা পাইথন ছাড়া তথ্য সংগ্রহ করতে পারি না)


12
তাহলে এরপরের ভূমিকাগুলি তথ্য ব্যবহার করতে পারে না ... আবার কি তথ্য সংগ্রহ করার উপায় আছে? আহা, স্ট্যাকওভারফ্লো.
স্টিফেন

16
উল্লেখ্য যে 'gather_facts: কোন' লাইন এছাড়াও সমালোচনামূলক।
rcreswick

6
@ surfer190 দুর্দান্ত অনুসন্ধান! আমি এটিও দেখতে পেয়েছি যে action: setupফাইনাল প্রাক-টাস্ক হিসাবে যুক্ত করাও দুর্দান্ত কাজ করেছে :)
মুরুনি

1
@ surfer190 আমার উত্তরটি এখানে দেখুন যদি আপনি উত্তরদাতাদের সাথে ইসি 2 ব্যবহার করেন তবে আপনি পাইথন 2 ইনস্টল করতে ক্লাউডইনাইট ব্যবহার করতে পারেন যাতে আপনি যথারীতি সংগ্রহের ঘটনাগুলি ব্যবহার করতে পারেন।
মিরোস্লাভ

1
কেউ যদি ভাবছেন যে, পাইথন 2 ইন ইনস্টল করার জন্য টাস্কটি চালানোর প্রয়োজন নেই ; নিয়মিত কাজ ভাল। তবে এটিকে জবাব মডিউলকেও কল করার জন্য আরেকটি কাজ করা , হোস্টকে নির্ধারিত যে কোনও ভূমিকার জন্য তথ্য উপলব্ধ রয়েছে তা নিশ্চিত করবে। rawpre_taskstaskspre_taskssetup
কেনি এভিট

125

উত্তরযোগ্য ২.২ এ পাইথন 3 সমর্থনের একটি প্রযুক্তিগত পূর্বরূপ বৈশিষ্ট্যযুক্ত। এর সুবিধা নিতে (যাতে আপনাকে উবুন্টু 16.04-তে পাইথন 2 ইনস্টল করতে হবে না), কেবল ansible_python_interpreterকনফিগার বিকল্পটি এতে সেট করুন /usr/bin/python3। এটি আপনার ইনভেন্টরি ফাইলটিতে প্রতি হোস্ট ভিত্তিতে করা যেতে পারে:

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

আমি এই পরিবর্তনশীলটিতে / usr / বিন / পাইথন যুক্ত করার চেষ্টা করেছি, তবে এটি কার্যকর হয়নি। পরিবর্তে অজগর 3 যুক্ত করা কাজ করেছিল এবং এই সমস্যাটি স্থির হয়ে গেছে
ডিপ এলএফ

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
মনে রাখবেন, যে প্লেবুক, আপনাকে অবশ্যই এছাড়াও অক্ষম gather_facts, কিংবা এই কাঁচা কমান্ড চালানোর আগে ব্যর্থ হবে। (জমায়েত_ফেক্টস: না)
rcreswick

@ ক্রিসউইক এটি আমার সমস্যা ছিল এবং আপনার সমাধান আমার পক্ষে কাজ করেছিল। অনেক ধন্যবাদ. আমি আমার প্রধান। জিল ফাইল (সেটআপ-অ্যাসিবসিল.আইএমএল) -তে "সংগ্রহ_ফ্যাক্টস: নন" লাইনটি রেখেছি এবং এই কমান্ডটি দিয়ে প্লেবুকটি সম্পাদন করেছি: "উত্তরযোগ্য-প্লেবুক -i হোস্ট সেটআপ-অ্যান্সিবল.আইএমএল --ফ্লুশ-ক্যাশে -vvvvvv -kK "। আমি উত্তর-প্লেবুকের সাথে "-KK" বিকল্পগুলি ব্যবহার করেছি কারণ ডিফল্ট উবুন্টু ইনস্টলেশনটির জন্য "সুডো" করতে পাসওয়ার্ড প্রয়োজন।
আলী ইউসুফী সাবজেবর

আপনি কেন সিম্পজসন ইনস্টল করছেন এবং পাইথগন নয় কিন্তু পাইথন ইনস্টল করার বিষয়ে কথা বলছেন?
হেনিং

@ হেনিংটি python-simplejsonপাইথনে লেখা এবং তাই পাইথন প্রয়োজন। সিম্পজসনও বেশিরভাগ উত্তরযোগ্য মডিউলগুলির জন্য প্রয়োজনীয়। ইনস্টল করার মাধ্যমে python-simplejsonমাধ্যমে apt-get/ yumআপনার কাছে পাইথন ইনস্টল এবং সেইজন্য সমস্ত মৌলিক Ansible নির্ভরতা আবরণ ...
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 এবং ডায়নামিক ইনভেন্টরি (উদাহরণস্বরূপ এডাব্লুএস ট্যাগিং 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

আনসিবল চালাতে আপনার পাইথন ২.7 প্রয়োজন। উবুন্টু 16.04 এ, আপনি এটি এই আদেশের মাধ্যমে ইনস্টল করতে পারেন:

sudo apt-get install python-minimal

তারপরে, আমি দৌড়াতে পারি

ansible-playbook -i inventories/staging playbook.yml

সাফল্যের সাথে জবাবদিহি চালান

উবুন্টু 16.04উত্তরযোগ্য ব্যবহার করতে আরও চেক করুন


12

আমি একটি তাজা ডিজিটাল মহাসাগরের ফোঁটা উবুন্টু 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

একটি তাজা ওভিএইচ এসএসডি-তে উবুন্টু 16.04 এর জন্য, পাইথন 2 প্যাকেজগুলি উপলব্ধ হওয়ার আগে আমাকে আপগ্রেড করতে হয়েছিল।


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

অন্যরা যেমন বলেছে, এটি অজগর 2 হারিয়ে যাওয়ার কারণে। অন্যান্য উত্তর এখানে একটি ওয়ার্কঅ্যারাউন্ড প্রদান pre_tasksএবং gather_facts: noঅবশ্য তোমরা যদি EC2 উপর এবং আপনি ansible আপনি ব্যবহার করতে পারেন সঙ্গে উদাহরণস্বরূপ আপ ঘুর্ণন 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

তারপরে লোকেরা সাধারণত এসএসএস উপলভ্য হওয়ার জন্য অপেক্ষা করে:

  - 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

তবে আমি খুঁজে পেয়েছি যে এটি সর্বদা যথেষ্ট নয় কারণ ক্লাউডইনিটটি বুট প্রক্রিয়াতে বেশ দেরিতে মৃত্যুদন্ড কার্যকর করা হয় যাতে এসএসএস পাওয়া যাওয়ার পরে পাইথন 2 এখনও ইনস্টল করা না যায়। সুতরাং উদাহরণটি সবেমাত্র তৈরি হওয়ার ক্ষেত্রে আমি একটি বিরতি যুক্ত করেছি:

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

এটি কাজটি নিখুঁতভাবে করবে এবং একটি সুবিধা হিসাবে আপনি প্রতি রানে অজগর 2 এর জন্য পরীক্ষা করছেন না এবং পরে তথ্য সংগ্রহের জন্য আপনাকে কোনও কাজের ব্যবস্থা করতে হবে না।

আমি নিশ্চিত যে অন্যান্য মেঘ সরবরাহকারীরা একই রকম ক্লাউডইনাইট কার্যকারিতা সরবরাহ করে, তাই আপনার ব্যবহারের ক্ষেত্রে মানিয়ে নিন।


3

যার সাহায্যে প্যাকার নীচের সমাধানটি সহায়ক বলে মনে করতে পারে

আসুন ধরে নেওয়া যাক আপনি প্যাকারের জবাবদিহি ব্যবহারকারীর ব্যবহার করছেন, আপনার কনফিগারটি নীচের মত দেখতে পারে

আপনি প্রথমে শেল প্রভিজার ব্যবহার করে পাইথন ইনস্টল করতে পারেন তারপরে নীচের মত বর্ণিত উত্তরগুলি অ্যাসিবিল_পিথন_ইন্টারপ্রেটার বিকল্পটি কনফিগার করুন

"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

ডিফল্টরূপে, উত্তরযোগ্যটির জন্য পাইথন 2 প্রয়োজন , তবে, উত্তরযোগ্য 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

এই গিস্ট অনুসারে আপনি উবুন্টু 16.04 এ পাইথন 2 ইনস্টল করতে পারেন:

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

প্রচুর উত্তর .. পোস্ট করার জন্য ধন্যবাদ যেমন আমি এই পৃষ্ঠা থেকেও শুরু করেছি!

আমি কিছুটা খনন করেছি এবং এটি উবুন্টু 14.04LTS এর সাথে শক্ত ছিল, উবুন্টু 15.04LTS pythonসর্বশেষটি ফেলেছে বলে মনে হয়েছে, এবং উবুন্টু 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

টার্গেট মেশিনে আমরা যে মেশিনটি এসএসএইচ করতে চাইছি তাতে পাইথন ইনস্টল করে আমি একই সমস্যাটি সমাধান করতে সক্ষম হয়েছি। আমি নিম্নলিখিত কমান্ডটি ব্যবহার করেছি:

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

আপনি উবুন্টুকে 18.04 এ ইঙ্গিত করতে পারেন যে আপনি পাইথন 3 এর প্রথম অগ্রাধিকার হিসাবে ব্যবহার করতে চান /usr/bin/python

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

0

আমার একই সমস্যা ছিল, যতক্ষণ না আমি বুঝতে পেরেছি যে আপনার দূরবর্তী হোস্টের পাশাপাশি আপনার নিজস্ব স্থানীয় মেশিনেও পাইথন ইনস্টল করতে হবে। এখন এটা কাজ করছে!


-2

আমরা কেবল এটির মধ্যে দৌড়াতে।

আমরা উবুন্টু 16.04 একটি যোনিতে স্থাপন করি তাই যদি আপনি ভ্যাংর্টর ব্যবহার না করেন তবে আমার মন্তব্য অর্থহীন।

আমরা নীচের যান্ত্রিক প্লাগইন ইনস্টল করেছি (ট্রিগার, শেল-কমান্ডার) এবং আমরা পাইথন ২.7..6 পেয়েছি মেশিনে (যা থাইজ প্লাগিন ছাড়া ছিল না) ইনস্টল করেছিলাম এবং জবাবদিহি স্থাপনের পরে

এটি আমাদের শেষ পরীক্ষা ছিল, অন্যথায় আমরা এই ইনস্টলেশনটিকে ভ্যাগ্র্যান্ট ফাইলের শেল কমান্ডের মধ্যে অন্তর্ভুক্ত করতে চলেছিলাম

আশা করি এটি কাউকে সাহায্য করতে পারে


2
আপনি যদি উত্তরযোগ্য ব্যবহার করছেন তবে নীচের উত্তরযোগ্য সমাধানটি সঠিক সমাধান। কিছু প্লাগইনের পার্শ্ব প্রতিক্রিয়া হিসাবে ভ্যাব্রেন্ট দুর্ঘটনাক্রমে এটি আপনার জন্য ইনস্টল করবে এমন আশা করে ঝামেলা চেয়েছে বলে মনে হচ্ছে।
পল বেকোট

মাফ করবেন তবে অজগর না থাকলে আপনি কীভাবে একটি উত্তরযোগ্য প্রটাস্ক চালাতে পারেন ??? আমি সমাধানটি চেষ্টা করেছিলাম এবং এটি পূর্ববর্তী টাস্কের আগে টাস্ক সেটআপে ব্যর্থ হয়েছিল। যোনি ফাইলটিতে ভিজগ্রান শেল কমান্ড হ'ল এটি করার সবচেয়ে ভাল উপায় (অবশ্যই যোদ্ধাদের ক্ষেত্রে) তবে আমি কেবল লক্ষ্য করেছি যে আমি আমার দেবের উপর ইনস্টল করা ভিজাগর প্লাগইনটি কাজ করে। আমি প্লাগিনের উপর নির্ভর করে না তবে ভিজাগর ফাইলের উপর নির্ভর করছি, আমি কেবল এটিই নির্দেশ করেছিলাম যে এটি প্লাগইনটিতেও কাজ করে তবে ভিজাগর ফাইলটি আরও ভাল পছন্দ (স্বয়ংক্রিয়তার জন্যও) কারণ আপনাকে ম্যানুয়ালি প্রতিটিটিতে কিছু করার দরকার নেই ধ্বংস / বিধান
wadoo

1
আমি সেই কোড ব্লকটি ঠিক ঠিক তেমনভাবে অনুলিপি করেছি এবং আপনি আপনার উত্তর পোস্ট করার আগে ঠিক এটি বর্ণিত হিসাবে কাজ করেছে। আমি বিশ্বাস করি আপনি সম্ভবত gather_facts: noরেখাটি রাখেন নি - এজন্য অজগর দরকার। অন্য সম্ভাবনাটি হ'ল আপনারও হোস্ট মেশিনে অজগর দরকার, তবে আমি অনুমান করব যে প্রক্রিয়াটিতে আপনি এর আগেও ত্রুটি ঘটিয়েছেন।
পল বেকোট

আমি পেস্টটিও অনুলিপি করেছিলাম তবে এটি কাজের সময় শুক্রবার ছিল ig আমি জমায়েত হওয়ার বিষয়টি যদি অংশ গ্রহণ করি তবে আমি সৎভাবে মনে করতে পারি না। যাইহোক অন্য কম্পিউটারে আজ সকালে এটি আবার গতিবেগ করেছে এবং আমি ঠিক কমান্ডটি ভ্যাগ্রান্টফাইলে রেখেছি, আমরা সত্যিকারের সার্ভারে প্রযোজনা না হওয়া পর্যন্ত এটি আমার পক্ষে যথেষ্ট। আমি আবার একটি তাজা মন দিয়ে পরীক্ষা করব (উত্তরটি শুক্রবার সন্ধ্যায় নয়);
ওয়াডু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.