হোস্টটি কোনও গ্রুপের অন্তর্ভুক্ত না হলেই টাস্কটি চালান


110

আমি যদি বর্তমান প্লেবুকের হোস্টটি কোনও নির্দিষ্ট গোষ্ঠীর অন্তর্ভুক্ত না হয় তবেই আমি একটি জবাবদিহি টাস্ক চালাতে সক্ষম হতে চাই । আধা ছদ্ম কোডে:

- name: my command
  command: echo stuff
  when: "if {{ ansible_hostname }} not in {{ ansible_current_groups }}"

আমি এই কিভাবে করা উচিত?

উত্তর:


205

এটি করার আরেকটি উপায় এখানে:

- name: my command
  command: echo stuff
  when: "'groupname' not in group_names"

group_namesএখানে দলিলযুক্ত হিসাবে একটি যাদু ভেরিয়েবল: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#accessing-information-about-other-hosts-with-magic-variables :

গ্রুপ_নামগুলি বর্তমান হোস্টে থাকা সমস্ত গ্রুপের একটি তালিকা (অ্যারে)।


4
+1 এবং যদি আপনি আশেপাশের উক্তিটি অন্তর্ভুক্ত না করেন তবে আপনি ত্রুটিটি পেয়েছেন:This one looks easy to fix. It seems that there is a value started with a quote, and the YAML parser is expecting to see the line ended with the same kind of quote.
পিটার আজতাই

4
আমি এই পদ্ধতির লেখার পক্ষে আরও পঠনযোগ্য এবং সুবিধাজনক বলে মনে করি তবে উভয়ই সমানভাবে ভাল কাজ করে। when: inventory_hostname not in groups.certain_groups
লিয়াম

4
এই পথটি আরও শক্তিশালী inventory_hostname in groups['groupname']কারণ যেসব ক্ষেত্রে গ্রাউট নিজেই উপস্থিত নেই, উত্তরযোগ্য একটি ত্রুটি নিক্ষেপ করবে "আপনার ভেরিয়েবলের নামটিতে '-' এর মতো অবৈধ অক্ষর রয়েছে না তা নিশ্চিত করুন: 'স্ট্রাইকইনডাফাইন্ডড' টাইপের যুক্তি পুনরাবৃত্তিযোগ্য নয়"
hamx0r

22

আপনি group_vars/হোস্ট ফাইলের মধ্যে বা সরাসরি হোস্ট ফাইলগুলিতে অবস্থিত ভার্স ফাইলগুলিতে একটি নিয়ন্ত্রণ ভেরিয়েবল সেট করতে পারেন :

[vagrant:vars]
test_var=true

[location-1]
192.168.33.10 hostname=apollo

[location-2]
192.168.33.20 hostname=zeus

[vagrant:children]
location-1
location-2

এবং এর মতো কাজগুলি চালান:

- name: "test"
  command: "echo {{test_var}}"
  when: test_var is defined and test_var

4
প্রশ্নের উত্তর গৃহীত হয়েছে প্রশ্নের উত্তর আরও সঠিক, তবে এটি আপনাকে আরও ভাল পথে নিয়ে যায়
nik.shornikov
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.