shell - আনসিবলে মাল্টিলাইন শেল স্ক্রিপ্ট কীভাবে করবেন




ansible (2)

এখনই আমি জবাবদিহি করে একটি শেল স্ক্রিপ্ট ব্যবহার করছি যা এটি একাধিক লাইনে থাকলে আরও বেশি পঠনযোগ্য

- name: iterate user groups
  shell: groupmod -o -g {{ item['guid'] }} {{ item['username'] }} ....more stuff to do
  with_items: "{{ users }}"

উত্তর শেল মডিউলটিতে মাল্টলাইন স্ক্রিপ্টকে কীভাবে অনুমতি দেওয়া যায় তা ঠিক নিশ্চিত নন


ইওএফ ডিলিমিটারের আগে একটি স্থান যুক্ত করা সিএমডি এড়াতে দেয়:

- shell: |
    cat <<' EOF'
    This is a test.
    EOF

উত্তরযোগ্য তার প্লেবুকগুলিতে YAML সিনট্যাক্স ব্যবহার করে। ওয়াইএএমএলে বেশ কয়েকটি ব্লক অপারেটর রয়েছে:

  • >> একটি ভাঁজ ব্লক অপারেটর। এটি ফাঁক দিয়ে একাধিক লাইনগুলিতে একত্রিত হয়। নিম্নলিখিত বাক্য গঠন:

    key: >
      This text
      has multiple
      lines

    মান নির্ধারণ করবে This text has multiple lines\n key This text has multiple lines\n

  • | চরিত্রটি একটি আক্ষরিক ব্লক অপারেটর। এটি সম্ভবত আপনি বহু-লাইন শেল স্ক্রিপ্টগুলির জন্য চান। নিম্নলিখিত বাক্য গঠন:

    key: |
      This text
      has multiple
      lines

    This text\nhas multiple\nlines\n মানটি This text\nhas multiple\nlines\n key This text\nhas multiple\nlines\n key to

আপনি এটি মাল্টিলাইন শেল স্ক্রিপ্টগুলির জন্য এটির মতো ব্যবহার করতে পারেন:

- name: iterate user groups
  shell: |
    groupmod -o -g {{ item['guid'] }} {{ item['username'] }} 
    do_some_stuff_here
    and_some_other_stuff
  with_items: "{{ users }}"

একটি সতর্কতামূলক বিষয় রয়েছে: shell কমান্ডের সাথে যুক্তিগুলির কিছু জঙ্কি হেরফের জবাবযোগ্য, তাই উপরেরগুলি সাধারণত প্রত্যাশা অনুযায়ী কাজ করবে, নিম্নলিখিতটি নিম্নলিখিত হবে না:

- shell: |
    cat <<EOF
    This is a test.
    EOF

জবাবদিহি আসলে সেই পাঠ্যটি শীর্ষস্থানীয় স্পেস সহ রেন্ডার করবে যার অর্থ শেলটি কোনও লাইনের শুরুতে EOF স্ট্রিংটি কখনই খুঁজে পাবে না। আপনি এর মতো cmd প্যারামিটার ব্যবহার করে উত্তরযোগ্যের অসহ্য হিউরিস্টিকস এড়াতে পারবেন:

- shell:
    cmd: |
      cat <<EOF
      This is a test.
      EOF






ansible