উত্তর: কেবলমাত্র গন্তব্য ফাইল উপস্থিত না থাকলে টেমপ্লেট অনুলিপি করুন


47

আমি Ansible 1.6.6আমার মেশিন সরবরাহ করার জন্য ব্যবহার করছি ।

আমার প্লেবুকে একটি টেম্পলেট টাস্ক রয়েছে যা জিনজা 2 টেমপ্লেট থেকে গন্তব্য ফাইল তৈরি করে:

tasks:
    - template: src=somefile.j2 dest=/etc/somefile.conf

somefile.confএটি ইতিমধ্যে বিদ্যমান থাকলে আমি প্রতিস্থাপন করতে চাই না । এটা কি উত্তর দিয়ে সম্ভব? যদি তাই হয়, কিভাবে?

উত্তর:


61

আপনি স্ট্যাট ব্যবহার করে ফাইল অস্তিত্বের জন্য পরীক্ষা করতে পারেন, এবং তারপরে কেবল ফাইলের অস্তিত্ব না থাকলে টেমপ্লেট ব্যবহার করতে পারেন।

tasks:
  - stat: path=/etc/somefile.conf
    register: st
  - template: src=somefile.j2 dest=/etc/somefile.conf
    when: not st.stat.exists

42

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

tasks:
    - template: src=somefile.j2 dest=/etc/somefile.conf force=no

বা কার্যটির নামকরণ ;-)

tasks:
    - name: Create file from template if it doesn't exist already.
      template: 
        src: somefile.j2
        dest:/etc/somefile.conf
        force: no

থেকে Ansible টেমপ্লেট মডিউল দস্তাবেজ:

বল: ডিফল্ট হ্যাঁ, যা সামগ্রীর উত্সের চেয়ে পৃথক হলে দূরবর্তী ফাইলটিকে প্রতিস্থাপন করবে। যদি না হয় তবে গন্তব্যটি বিদ্যমান না থাকলে কেবল ফাইলটি স্থানান্তর করা হবে।

অন্যান্য উত্তরগুলি ব্যবহার statকারণ বল প্যারামিটার পর তারা লেখা হয়েছে যোগ করা হয়েছিল।


2
আমার উত্তরটি স্ট্যাট ব্যবহার করে, কারণ প্রশ্ন / উত্তরের সময় টেমপ্লেটের জন্য কোনও জোর যুক্তি আওয়াজযোগ্য ছিল না
টেফটিন

10

আপনি প্রথমে গন্তব্য ফাইলটি উপস্থিত আছে কিনা তা যাচাই করতে পারেন এবং তার ফলাফলের ফলাফলের ভিত্তিতে সিদ্ধান্ত নিতে পারেন।

tasks:
  - name: Check that the somefile.conf exists
    stat:
      path: /etc/somefile.conf
    register: stat_result

  - name: Copy the template, if it doesnt exist already
    template:
      src: somefile.j2
      dest: /etc/somefile.conf
    when: stat_result.stat.exists == False   

1
আমি এই উত্তরটিকে পছন্দ করি কারণ এটি এর কার্যগুলির নাম দেয় :)
আসফান্দ কাজী

-3

আমার মতে, সবচেয়ে সহজ সমাধানটি হ'ল টেমপ্লেট মডিউল থেকে "বল = না" বৈশিষ্ট্যটি ব্যবহার করা

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