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


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.