আমি ইউআরআই মডিউলটির মাধ্যমে জেএসএন টানছি এবং প্রাপ্ত ফাইলটি একটি ফাইলে লিখতে চাই। আমি সামগ্রীটি পেতে এবং এটি ডিবাগারে আউটপুট করতে সক্ষম হয়েছি তাই আমি জানি যে সামগ্রীটি পাওয়া গেছে তবে আমি ফাইল লেখার সর্বোত্তম অনুশীলন জানি না।
আমি ইউআরআই মডিউলটির মাধ্যমে জেএসএন টানছি এবং প্রাপ্ত ফাইলটি একটি ফাইলে লিখতে চাই। আমি সামগ্রীটি পেতে এবং এটি ডিবাগারে আউটপুট করতে সক্ষম হয়েছি তাই আমি জানি যে সামগ্রীটি পাওয়া গেছে তবে আমি ফাইল লেখার সর্বোত্তম অনুশীলন জানি না।
উত্তর:
আপনি পরামিতি copy
সহ মডিউলটি ব্যবহার করতে পারেন content
:
- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file
ডক্স এখানে: কপি মডিউল
template:
মডিউলটি ব্যবহার করতে এবং রানটাইমটিতে নিবন্ধভুক্ত ভেরিয়েবলগুলি পূরণ করতে পারেন ।
shahash /path/to/file
(এর মধ্যে 2 স্পেস নোট করুন) এবং তারপরে sha256sum -c shafile
আপনি উত্তরযোগ্যের মাধ্যমে কী উত্পন্ন করেছেন তা কমান্ড লাইন (মাধ্যমে ) যাচাই করতে চাইলে এটি আরও ভাল কাজ করে ।
আপনি যদি খুব ছোট ফাইল না লিখে থাকেন তবে আপনার সম্ভবত টেমপ্লেট ব্যবহার করা উচিত ।
উদাহরণ:
- name: copy upstart script
template:
src: myCompany-service.conf.j2
dest: "/etc/init/myCompany-service.conf"
রামনের উত্তরের ভিত্তিতে আমি একটি ত্রুটিতে চলেছি। JSON- এ যে জায়গাগুলি লেখার চেষ্টা করেছি সেই সমস্যাটি আমি প্লেবুকের মধ্যে টাস্কটি পরিবর্তন করে দেখে দেখতে ঠিক করেছি:
- copy:
content: "{{ your_json_feed }}"
dest: "/path/to/destination/file"
কেন এখন এটার দরকার ছিল তা আমি নিশ্চিত নই। আমার সেরা অনুমানটি হ'ল এটির সাথে সম্পর্কিত ছিল যে কীভাবে ভেরিয়েবলগুলি উত্তরযোগ্যগুলিতে প্রতিস্থাপন করা হয় এবং ফলস্বরূপ ফাইলটি পার্স করা হয়।
আমরা dest
এখন বিকল্পটির সাথে সরাসরি গন্তব্য ফাইলটি নির্দিষ্ট করতে পারি । নীচের উদাহরণে, আউটপুট জেসনটি সংরক্ষণ করা হয়/tmp/repo_version_file
- name: Get repository file repo_version model to set ambari_managed_repositories=false
uri:
url: 'http://<server IP>:8080/api/v1/stacks/HDP/versions/3.1/repository_versions/1?fields=operating_systems/*'
method: GET
force_basic_auth: yes
user: xxxxx
password: xxxxx
headers:
"X-Requested-By": "ambari"
"Content-type": "Application/json"
status_code: 200
dest: /tmp/repo_version_file