ansible: হোস্টের একটি গ্রুপের বিরুদ্ধে প্লেবুক চালানোর সময় স্থানীয়_অ্যাকশন একবার চালানো (একাধিক পরিচালিত হোস্ট)


2

এটা করতে বাধ্য করা সম্ভব local_action হোস্ট একটি দলের বিরুদ্ধে playbook চলাকালীন শুধুমাত্র একবার কাজ করা হচ্ছে?

এখানে সমস্যা হল:

hosts:
    - macbooks
    - localhost
tasks:

#...<some_remote_tasks>...#

    - local_action: command
        ssh-keygen -o -a 100 -t ed25519 -f {{ ssh_key }} -q -N ''
      become: yes

ফলাফল:

fatal: [laptop -> localhost]: FAILED! => {"changed": true, "cmd": ["ssh-keygen", "-o", "-a", "100", "-t", "ed25519", "-f", "/etc/ssh/id_ed25519-HostCA", "-q", "-N", "", "-C", "SSH Host Certificate Authority for cypherpunk.synology.me"], "delta": "0:00:00.014818", "end": "2018-06-01 17:02:41.599111", "msg": "non-zero return code", "rc": 1, "start": "2018-06-01 17:02:41.584293", "stderr": "", "stderr_lines": [], "stdout": "/etc/ssh/id_ed25519-HostCA already exists.\nOverwrite (y/n)? ", "stdout_lines": ["/etc/ssh/id_ed25519-HostCA already exists.", "Overwrite (y/n)? "]}
changed: [localhost -> localhost] 

এবং এটি জ্ঞান করে কারণ প্রতিটি পরিচালিত হোস্টের জন্য একটি প্লেবুকের কোনও কাজ চালানো উচিত।

কিন্তু এটি একটি স্থানীয় পদক্ষেপ কারণ, এটি মূল ফাইল তৈরি করার প্রত্যাশিত হিসাবে প্রথমবার চালায়। দ্বিতীয়বার ফাইলটি ইতিমধ্যে বিদ্যমান এবং উত্তরযোগ্য একটি ত্রুটি পেয়েছে: "/etc/ssh/id_ed25519-HostCA already exists. Overwrite (y/n)?" সঙ্গে return code 1। তাই সত্যিই এটি শুধুমাত্র একবার চালানো আবশ্যক (অন্তত এই অবস্থায়)।

আমি ভালো কিছু করতে পারে:

- local_action: shell >
         [[ ! -f {{ ssh_key }} ]] && \
         ssh-keygen -o -a 100 -t ed25519 -f {{ ssh_key }} -q -N ''; \
         exit 0
      become: yes

কিন্তু আশ্চর্যের প্রস্তাবিত সমাধান থাকলে আমি ভাবছি? আপনি কিভাবে এই সমাধান হবে?

উত্তর:


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