জবাবদিহি কোনও ফাইলে ভেরিয়েবল লিখুন


104

আমি ইউআরআই মডিউলটির মাধ্যমে জেএসএন টানছি এবং প্রাপ্ত ফাইলটি একটি ফাইলে লিখতে চাই। আমি সামগ্রীটি পেতে এবং এটি ডিবাগারে আউটপুট করতে সক্ষম হয়েছি তাই আমি জানি যে সামগ্রীটি পাওয়া গেছে তবে আমি ফাইল লেখার সর্বোত্তম অনুশীলন জানি না।

উত্তর:


204

আপনি পরামিতি copyসহ মডিউলটি ব্যবহার করতে পারেন content:

- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file

ডক্স এখানে: কপি মডিউল


5
বিষয়বস্তু = "{{আপনার_জসন_ফিড}}" হোয়াইট স্পেস এবং নিউলাইনগুলিতে ডিল করে। উদ্ধৃতিগুলি গুরুত্বপূর্ণ।
এম.কোসিকোভস্কি

@ রামোনডিলা ফুয়েন্ত যদি আমি ফাইলে একাধিক ভার্সের বিষয়বস্তু যুক্ত করতে চাই তবে আমাকে "অনুলিপি" মডিউলটি একাধিকবার ব্যবহার করতে হবে বা অন্য কোনও উপায় আছে?
কিশোর রেডি

4
@ কিশোররেডি আমার ধারণা আপনি ভেরিয়েবল যুক্ত করতে জিনজা ২ সিনট্যাক্স ব্যবহার করতে পারেন। "{{পরিবর্তনশীল ~ অন্য_ পরিবর্তনশীল}}" এর মতো কিছু। সুন্দর নয়, তবে জিনিসগুলি আরও জটিল হয়ে উঠলে আপনি template:মডিউলটি ব্যবহার করতে এবং রানটাইমটিতে নিবন্ধভুক্ত ভেরিয়েবলগুলি পূরণ করতে পারেন ।
রামন ডি লা

আপনি যখন ফর্মের মধ্যে একটি শ 256 টি সমষ্টি ফাইল উত্পন্ন করতে চান shahash /path/to/file(এর মধ্যে 2 স্পেস নোট করুন) এবং তারপরে sha256sum -c shafileআপনি উত্তরযোগ্যের মাধ্যমে কী উত্পন্ন করেছেন তা কমান্ড লাইন (মাধ্যমে ) যাচাই করতে চাইলে এটি আরও ভাল কাজ করে ।
ড্যানিয়েল আন্দ্রে মিনসি

13

আপনি যদি খুব ছোট ফাইল না লিখে থাকেন তবে আপনার সম্ভবত টেমপ্লেট ব্যবহার করা উচিত ।

উদাহরণ:

- name: copy upstart script
  template: 
    src: myCompany-service.conf.j2 
    dest: "/etc/init/myCompany-service.conf"

4
যদিও রামনর উত্তরটি ঠিক যা জিজ্ঞাসা করা হয়েছিল তা সম্বোধন করে, সাধারণভাবে এই উত্তরটি সর্বোত্তম পন্থা। উদাহরণস্বরূপ, যদি আপনার কাছে এমন কোনও প্লেবুক থাকে যা মেঘে ভিএম তৈরি করে এবং আপনি অন্য প্লেবুকের জন্য হোস্টের একটি তালিকা তৈরি করতে চান তবে একটি টেমপ্লেট যাওয়ার উপায় the
লুইস আর্টোলা

কেন আপনি ভাল এটি ব্যাখ্যা করতে পারেন?
উত্সব

@ ভার্টিসিটি এর চেয়ে ভাল কি?
জানুস ট্রয়লসেন

@ জানুসট্রোলেসন দুঃখিত, বড় ফাইল লেখার সময় গ্রহণযোগ্য উত্তরের চেয়ে কেন এটি ভাল তা আপনি ব্যাখ্যা করতে পারেন?
উত্সব

4
@ ভার্টিসিটি কারণ আপনারা যখন অন্য কোনও ফাইল এম্বেড করে কোনও ফাইল রাখেন তখন এটি অযৌক্তিক হয়ে যায়। আপনার পালানোর দরকার এবং সিনট্যাক্স হাইলাইটিংয়ের কাজ হবে না। টেম্প্লেটিং মেকানিজম আপনার যদি প্রয়োজন হয় তবে মাঝখানে জিনিসগুলি সন্নিবেশ করতে সক্ষম করে।
জানুস ট্রয়লসেন

12

রামনের উত্তরের ভিত্তিতে আমি একটি ত্রুটিতে চলেছি। JSON- এ যে জায়গাগুলি লেখার চেষ্টা করেছি সেই সমস্যাটি আমি প্লেবুকের মধ্যে টাস্কটি পরিবর্তন করে দেখে দেখতে ঠিক করেছি:

- copy:
    content: "{{ your_json_feed }}"
    dest: "/path/to/destination/file"

কেন এখন এটার দরকার ছিল তা আমি নিশ্চিত নই। আমার সেরা অনুমানটি হ'ল এটির সাথে সম্পর্কিত ছিল যে কীভাবে ভেরিয়েবলগুলি উত্তরযোগ্যগুলিতে প্রতিস্থাপন করা হয় এবং ফলস্বরূপ ফাইলটি পার্স করা হয়।


1

আমরা 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.