চলক যে চলমান উত্তরযোগ্য-প্লেবুকের সাথে চালাচ্ছে তার পথ রয়েছে?


109

এমন কোনও উত্তরযোগ্য ভেরিয়েবল রয়েছে যার বর্তমান চালিত উত্তরসুলভ-প্লেবুকের নিখুঁত পথ রয়েছে?

কিছু প্রসঙ্গ: আমি একটি মাইএসকিএল localhostডকার কনফিগার করতে এবং উত্তরীয় স্ক্রিপ্টের সাথে সম্পর্কিত ডেটা ভলিউম মাউন্ট করতে চাইবার বিরুদ্ধে একটি জবাবদিহ স্ক্রিপ্ট তৈরি করছি / তৈরি করছি ।

উদাহরণস্বরূপ, ধরা যাক যে আমি একটি সংগ্রহস্থল চেকআউট করেছি ~/branch1/এবং তারপরে আমি চালাচ্ছি ansible-playbook dev.ymlআমি ভেবেছিলাম এটির ভলিউমটি সংরক্ষণ করা উচিত ~/branch1/.docker_volume/। আমি যদি এটির ~/branch2পরে চালিয়ে যাই তবে এটিতে ভলিউমটি কনফিগার করা উচিত ~/branch2/.docker_volume/


2
একটি আকর্ষণীয় প্রশ্ন, যা আমি কখনই ভাবিনি। তবে আপনি যে বিষয়টি জিজ্ঞাসা করছেন তা এমন একটি সূচক যা আপনি খুব ভুল উপায়ে কিছু করছেন।
অ্যান্টনিস ক্রিস্টোফাইডস

আমি সম্মত, আমি @ অ্যান্টনিস ক্রিসটফাইডগুলি বিস্তারিতভাবে জানাব
জোশ উঙ্গার

উত্তর:


192

আপনি playbook_dirপরিবর্তনশীল ব্যবহার করতে পারেন ।


2
আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি এবং আপনার উত্তর এটি সমাধান করেছে। ধন্যবাদ। তবে playbook_dirভেরিয়েবল নথিভুক্ত এমন কোনও জায়গা আমি খুঁজে পাইনি । আপনি কি আমাকে ডকুমেন্টেশনের দিকে নির্দেশ করতে পারেন? বা, আপনি কীভাবে এই পরিবর্তনশীল সম্পর্কে জানতে পারলেন তা ব্যাখ্যা করতে পারতেন?
স্লায়ডব্লিউসিফার

3
আমি এটি উত্তরীয় কোডে পেয়েছি: github.com/ansible/ansible/blob/…
সেবা

2
এছাড়াও , সমস্ত ভেরিয়েবল সহ আকর্ষণীয় রেপো github.com/lorin/ansible-quickref রয়েছে।
সেবা পলিয়াকভ

46

এমন কোনও ভেরিয়েবল বলে মনে হয় না যা আপনি যা চান ঠিক তেমন ধারণ করে।

তবে দস্তাবেজগুলি উদ্ধৃত করে :

এছাড়াও উপলভ্য, inventory_dirআনসিবলের ইনভেন্টরি হোস্ট ফাইল ধারণকারী ডিরেক্টরিটির পাথনামটি, inventory_fileপ্যাথনাম এবং ফাইলের নাম যা উত্তরীর তালিকা হোস্ট ফাইলকে নির্দেশ করে।

playbook_dir এ প্লেবুক বেস ডিরেক্টরি রয়েছে।

এবং শেষ অবধি, role_pathবর্তমান ভূমিকার পথ নামটি (1.8 সাল থেকে) ফিরিয়ে দেবে। এটি কেবল কোনও ভূমিকার ভিতরে কাজ করবে।

আপনার সেটআপের উপর নির্ভরশীল, সেগুলি বা $ pwdভিত্তিক সমাধান যথেষ্ট হতে পারে।


2

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

উত্তর দ্বারা সংজ্ঞায়িত সমস্ত ভেরিয়েবলগুলি দেখতে আপনি নিম্নলিখিত কমান্ডটি চালিয়ে যেতে পারেন :

$ ansible -m setup hostname

প্লেবুকের নিখুঁত পথটি আপনার জানা দরকার বলে কী মনে করেন?


ধন্যবাদ ব্রুস, আমি কী করার চেষ্টা করেছিলাম তার বিশদটি জানাতে আমার প্রশ্নটি পরিবর্তন করেছি।
জোশ উঙ্গার

6
পরম স্থানীয় পথটি মোটেই অর্থহীন নয়। উদাহরণস্বরূপ এটি কোনও স্থানীয় কমান্ড চালাতে এবং / অথবা অন্যান্য স্থানীয় ফাইল বা পরিষেবাদি অনুসন্ধান করতে ব্যবহৃত হতে পারে যা সরাসরি উত্তরযোগ্য কনফিগারেশনে অন্তর্ভুক্ত করা যায় না। জবাবদিহিতাটির local_actionমডিউল থাকা নিছক সত্যের অর্থ এই যে এখানে বৈধ ব্যবহারের কেস রয়েছে।
ক্রে

1

আমি স্থানীয়ভাবে আমার ভূমিকা পরীক্ষা করতে এটির মতো একটি প্লেবুক ব্যবহার করছিলাম:

---
- hosts: localhost
  roles:
     - role: .

তবে এটি উত্তরীয় v2.2 এর সাথে কাজ করা বন্ধ করে দিয়েছে।

আমি পূর্বোক্ত সমাধানটির ডিবাগ করেছি

---
- hosts: all
  tasks:
    - name: Find out playbooks path
      shell: pwd
      register: playbook_path_output
    - debug: var=playbook_path_output.stdout

এবং এটি আমার হোম ডিরেক্টরি উত্পাদন করেছিল, "বর্তমান কার্যনির্বাহী ডিরেক্টরি" নয়

আমি স্থির

---
- hosts: all
  roles:
    - role: '{{playbook_dir}}'

উপরের সমাধান প্রতি।


1

এই উদ্দেশ্যে কোনও বিল্ট-ইন ভেরিয়েবল নেই, তবে আপনি সর্বদা "পিডাব্লুডি" কমান্ড দিয়ে প্লেবুকের পরম পথটি খুঁজে পেতে পারেন এবং এর আউটপুটটিকে একটি ভেরিয়েবলের সাথে নিবন্ধভুক্ত করতে পারেন।

- name: Find out playbook's path
  shell: pwd
  register: playbook_path_output
- debug: var=playbook_path_output.stdout

এখন পাথটি ভেরিয়েবল প্লেবুক_পাথ_আউটপুট.স্টডআউটে উপলভ্য


7
এই ক্ষেত্রে pwdপ্লেবুক স্ক্রিপ্টের পথ ফেরায় না। এটি প্রক্রিয়াটির বর্তমান ডিরেক্টরিটি (সাধারণত ansible-playbook) প্রদান করে। দু'জনকে একই হতে হবে এবং সঠিকভাবে নির্ভর করতে হবে না যেখানে উত্তরদাতাকে ডাকা হয়েছিল।
ক্রাই

5
পছন্দ করুন অনিয়মিত, আমি কেবল উল্লেখ করতে চেয়েছিলাম যে উত্তরীয় ইতিমধ্যে আপনার জন্য এই পরিবর্তনশীল প্রস্তুত করে: debug: var=ansible_env.PWD(এটি আমাকে ansible-playbookআমার স্থানীয় মেশিনে এবং রিমোট সার্ভারের হোম ডিরেক্টরিতে চালিত ডিরেক্টরিটি দেয় )
এনএস ডু টোয়েট

4
বিকল্পভাবে বর্তমান ডিরেক্টরিটি {{ lookup('env','PWD') }}
এটির
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.