আমদানি স্থিতিশীল, অন্তর্ভুক্ত গতিশীল। আমদানিগুলি পার্সিংয়ের সময় ঘটে থাকে, এটি রানটাইমের অন্তর্ভুক্ত।
আমদানিগুলি মূলত ফাইল থেকে টাস্কের সাথে প্রতিস্থাপন করে। কোন ব্যাপার import_taskরানটাইম এ। সুতরাং, tagsএবং when(এবং সম্ভবত অন্যান্য বৈশিষ্ট্যগুলি) মতো বৈশিষ্ট্যগুলি প্রতিটি আমদানি করা কার্যটিতে অনুলিপি করা হয়।
includeগুলি সত্যই মৃত্যুদন্ড কার্যকর করা হয়। tagsএবং whenএকটি অন্তর্ভুক্ত টাস্ক শুধুমাত্র টাস্ক নিজেই প্রয়োগ।
কোনও আমদানি করা ফাইল থেকে ট্যাগ করা কাজগুলি যদি importটাস্কবিহীন থাকে তবে তা কার্যকর করা হয়। যদি কোনও কাজ includeআটকে না থাকে তবে কোনও অন্তর্ভুক্ত ফাইল থেকে কোনও কার্য সম্পাদন করা হয় না।
importটাস্ক ট্যাগ করা থাকলে আমদানি করা ফাইল থেকে সমস্ত কাজ সম্পাদন করা হয়। যদি কোনও ট্যাগ করা থাকে তবে কেবলমাত্র অন্তর্ভুক্ত করা ফাইল থেকে ট্যাগ করা কাজগুলি সম্পাদন করা includeহয়।
এর সীমাবদ্ধতা import:
- সঙ্গে ব্যবহার করা যাবে না
with_*বা loopবৈশিষ্ট্যাবলী
- কোনও ফাইলটি আমদানি করতে পারে না, কোন নামটি একটি ভেরিয়েবলের উপর নির্ভর করে
এর সীমাবদ্ধতা include:
--list-tags অন্তর্ভুক্ত ফাইলগুলি থেকে ট্যাগগুলি দেখায় না
--list-tasks অন্তর্ভুক্ত ফাইল থেকে কাজ দেখায় না
- আপনি
notifyকোনও হ্যান্ডলার নামটি ট্রিগার করতে ব্যবহার করতে পারবেন না যা ডায়নামিক অন্তর্ভুক্ত থেকে আসে
- আপনি
--start-at-taskডায়নামিকের অন্তর্ভুক্ত কোনও টাস্কে এক্সিকিউশন শুরু করতে ব্যবহার করতে পারবেন না
এটি এখানে এবং এখানে আরও ।
আমার জন্য যা মূলত নীচে নেমে আসে যে importগুলি লুপ বৈশিষ্ট্যের সাথে ব্যবহার করা যায় না।
importঅবশ্যই এই জাতীয় ক্ষেত্রে ব্যর্থ হবে :
# playbook.yml
- import_tasks: set-x.yml
when: x is not defined
# set-x.yml
- set_fact
x: foo
- debug:
var: x
debugকার্যকর করা হয় না, যেহেতু এটি কার্য whenথেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় import_tasks। সুতরাং, importএর whenগুণাবলী ব্যবহার করে ভেরিয়েবল পরিবর্তন করে এমন কোনও আমদানি টাস্ক ফাইল নেই ।
importএর সাথে শুরু করার জন্য আমার নীতি ছিল , তবে একবার আমার includeনিশ্চিত হওয়া দরকার যে অন্তর্ভুক্ত ফাইল বা এর অন্তর্ভুক্ত ফাইলগুলি থেকে কোনও কিছুই আমদানি করা হয়নি। তবে এটি বজায় রাখা বেশ জঘন্য। এটি এখনও আমাকে ঝামেলা থেকে রক্ষা করবে কিনা তা এখনও পরিষ্কার নয়। অর্থ, includes এবং imports এর মিশ্রণ যা তারা সুপারিশ করে না।
আমি কেবলমাত্র ব্যবহার করতে পারি না import, যেহেতু মাঝে মাঝে আমার লুপের includeকাজগুলি প্রয়োজন । আমি সম্ভবত শুধুমাত্র includeএস এ যেতে পারে । তবে আমি সিদ্ধান্ত নিয়েছি যে কাজটি বেশ কয়েকবার পরিচালিত হওয়ার কথা বাদে অন্যত্র আমদানিতে সরিয়ে নেব। আমি সিদ্ধান্ত নিয়েছি those সমস্ত কৃপণ প্রবণতাগুলি প্রথম হাতের অভিজ্ঞতা অর্জন করার জন্য। আমার প্লেবুকগুলিতে কোনও কিছুই থাকবে না। অথবা আশা করি আমি এটি কার্যকর করার জন্য একটি উপায় খুঁজে বের করব।
ইউপিডি একটি টাস্ক ফাইল তৈরি করতে সম্ভবত দরকারী কৌশল যা বহুবার আমদানি করা যায় তবে একবার কার্যকর করা হয় :
- name: ...
...
when: not _file_executed | default(False)
- name: ...
...
when: not _file_executed | default(False)
...
- name: Set _file_executed
set_fact:
_file_executed: True
ইউপিডি একের মিশ্রণের প্রকৃত প্রত্যাশিত প্রভাবের অন্তর্ভুক্ত এবং আমদানিগুলি হ'ল ভার্স ওভাররাইড আমদানিগুলি অন্তর্ভুক্ত করে:
playbook.yml:
- hosts: all
tasks:
- import_tasks: 2.yml
vars:
v1: 1
- include_tasks: 2.yml
vars:
v1: 1
2.yml:
- import_tasks: 3.yml
vars:
v1: 2
3.yml:
- debug:
var: v1 # 2 then 1
সম্ভবত, কারণ include_tasksপ্রথমে সমস্ত অতিরিক্ত স্ট্যাটিক আমদানি করে এবং তার varsনির্দেশাবলীর মধ্য দিয়ে পাস করা ভেরিয়েবলগুলি পরিবর্তন করে ।
আসলে, এটি কেবল আমদানি দিয়েই ঘটে না:
playbook.yml:
- hosts: all
tasks:
- import_tasks: 2.yml
vars:
v1: 1
- include_tasks: 2.yml
vars:
v1: 1
2.yml:
- debug:
var: v1 # 2 then 1
vars:
v1: 2
ইউপিডি মিশ্রণের আরেকটি ক্ষেত্রে অন্তর্ভুক্ত এবং আমদানি।
playbook.yml:
- hosts: all
tasks:
# here you're bound to use include, some sort of loop
- include_tasks: 2.yml
vars:
https: yes
2.yml:
- import_tasks: 3.yml
when: https
3.yml:
- import_tasks: 4.yml
vars:
https: no # here we're trying to temporarily override https var
- import_tasks: 4.yml
4.yml:
- debug:
var: https
আমরা পেয়েছি trueএবং true, পূর্ববর্তী কেসটি দেখতে পাই (অন্তর্ভুক্ত ওয়ার্স আমদানি vars এর চেয়ে বেশি অগ্রাধিকার গ্রহণ করে)। সুতরাং আমরা অন্তর্ভুক্ত স্যুইচ করুন 3.yml। তবে তারপরে প্রথম অন্তর্ভুক্তটি 3.ymlবাদ দেওয়া হয়। যেহেতু এটি when: httpsপিতা-মাতার কাজ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং সম্ভবত পরবর্তীটি টাস্কটির httpsথেকে নেওয়া হয় vars। সমাধানটি হ'ল 2.ymlপাশাপাশি অন্তর্ভুক্ত করা যায়। when: httpsএটি শিশুর কার্যগুলিতে ছড়িয়ে পড়া প্রতিরোধ করে ।