আমদানি স্থিতিশীল, অন্তর্ভুক্ত গতিশীল। আমদানিগুলি পার্সিংয়ের সময় ঘটে থাকে, এটি রানটাইমের অন্তর্ভুক্ত।
আমদানিগুলি মূলত ফাইল থেকে টাস্কের সাথে প্রতিস্থাপন করে। কোন ব্যাপার 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
নিশ্চিত হওয়া দরকার যে অন্তর্ভুক্ত ফাইল বা এর অন্তর্ভুক্ত ফাইলগুলি থেকে কোনও কিছুই আমদানি করা হয়নি। তবে এটি বজায় রাখা বেশ জঘন্য। এটি এখনও আমাকে ঝামেলা থেকে রক্ষা করবে কিনা তা এখনও পরিষ্কার নয়। অর্থ, include
s এবং import
s এর মিশ্রণ যা তারা সুপারিশ করে না।
আমি কেবলমাত্র ব্যবহার করতে পারি না 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
এটি শিশুর কার্যগুলিতে ছড়িয়ে পড়া প্রতিরোধ করে ।