কীভাবে একটি উত্তরযোগ্য স্ক্রিপ্টে বিভিন্ন প্লেবুকের জন্য আলাদা আলাদা হোস্ট নির্দিষ্ট করা যায়


9

আমি যেমন বুঝতে পারি, প্রতিটি প্লেবুক একটি করে হোস্ট এন্ট্রি নেয় takes আমি জানতে চাই যে আমি যদি একটি পাত্রে প্লেবুক তৈরি করি যাতে অন্যান্য প্লেবুকগুলি অন্তর্ভুক্ত থাকে তবে আমি প্রতিটি প্লেবুকের জন্য হোস্টকে প্যারামিটারাইজ করতে পারি। তাই কিছু

---
- include playbook_1.yml
    hosts: tag_postgres
- include: playbook_2.yml
    hosts: tag_rabbitmq

আমি একটি স্ক্রিপ্টে সমস্ত ভিন্ন প্লেবুক রাখতে এবং কল করতে সক্ষম হয়েছি, তবে তারপরে আমি কিছু সেট_ফ্যাক্ট একটি প্লেবুক থেকে অন্য প্লেবুকটিতে পুনরায় ব্যবহার করতে পারছি না এবং তাই এখানে অনেকগুলি কার্যের সদৃশতা রয়েছে।

প্রশ্নের আরেকটি মূলসূত্র হ'ল, আমি কি আমাজনে এক্স 2 চালু করতে পারি যা থাকতে পারে?

hosts: localhost

এবং প্রবর্তিত ইসি 2 এর কনফিগারেশন যা মূলত ইনভেন্টরি কনফিগার করবে -i ec2.pyএবং হোস্টগুলি হিসাবে নির্দিষ্ট করা হবে

hosts: tag_<some_tag>

একই প্লেবুক বা অন্তর্ভুক্ত প্লেবুকের সেট (বিভিন্ন ভূমিকা) এর মাধ্যমে ঘটছে?


আপনি কি জানেন যে hosts:আপনার ইয়ামলে এবং সংক্ষেপে একাধিক বিভাগ থাকতে পারে, আপনার তালিকাতে বিভিন্ন হোস্ট গ্রুপ ব্যবহার করে বেশ কয়েকটি প্লেবুক রয়েছে?
ইয়োনসি সলিস

উত্তর:


4

আসলে, আপনার একাধিক হোস্ট থাকতে পারে: প্লেবুক প্রতি বিভাগ per এটি প্রদর্শিত হয় যে একটি হোস্ট: একটি নতুন নাটক শুরু হয়। উদাহরণস্বরূপ, http://www.tecmint.com/use-ansible-playbooks-to-automate-complex-tasks-on-m Multipleple- linux- servers / দেখুন ।

এরকম কিছু আমার পক্ষে কাজ করে (উত্তরযোগ্য ২.২):

---
- hosts: localhost 
  connection: local
  roles:
    - { role: ec2,
        tag: 'master',
        instance_type: t2.2xlarge,
        count: 1
      }
  tasks:
  - shell: hostname # reports localhost

- hosts: tag_master
  tasks:
  - shell: hostname # reports instance(s) with tag 'master'

সুতরাং, হোস্টগুলি রাখুন: প্রতিটি অন্তর্ভুক্ত .YML অন্তর্ভুক্তের পরে নয় :.


4

http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts

... অন্যান্য স্থান রয়েছে যেখানে ভেরিয়েবলগুলি আসতে পারে তবে এগুলি এক ধরণের ভেরিয়েবল যা আবিষ্কার করা হয়, ব্যবহারকারী দ্বারা সেট করা হয় না।

তথ্যগুলি আপনার দূরবর্তী সিস্টেমগুলির সাথে কথা বলা থেকে প্রাপ্ত তথ্য ...

তথ্যগুলি আপনার দূরবর্তী হোস্টগুলি থেকে নেওয়া। সুতরাং আপনার কারণ যখন আপনার *। জিম ফাইলটিতে বেশ কয়েকটি প্লেবুক থাকে তখন সাধারণত আপনি আপনার বিভিন্ন হোস্টের মধ্যে তথ্য ভাগ করে নিতে পারেন ।

আপনি নিজের প্লেবুকের অন্য অংশে যদি এমন কিছু করেন তবে এখন আপনি অন্যান্য হোস্টের কাছ থেকে তথ্য অ্যাক্সেস করতে পারবেন:

{{ hostvars['server01.example.com']['ansible_eth0']['ipv4']['address'] }}
...
...
{{ hostvars[groups['servers'][0]]['ansible_eth0']['ipv4']['address'] }}

তবে এই ক্ষেত্রে, আপনার মনে রাখতে হবে যে এটি ব্যবহারের আগে আপনাকে সত্যগুলি পাওয়া উচিত। তারপরে আপনি আপনার প্লেবুকের প্রথম অংশ সেটআপ করতে পারেন যা সমস্ত হোস্টের জন্য সমস্ত তথ্য পায় বা এর জন্য ফ্যাক্ট ক্যাশে ব্যবহার করে (দেখুন: http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching )

এখন, আপনি যদি আপনার প্লেবুকগুলিতে বিকল্পগুলি ভাগ করতে চান তবে ভেরিয়েবলগুলি রাখার জন্য তথ্যটি পুনর্বিবেচনা করা ভাল এবং এটির সাহায্যে আপনি একই ভেরিয়েবলগুলি একই includeনির্দেশের সাথে "ভাগ" করতে পারেন , এটি দেখুন:

http://docs.ansible.com/ansible/playbooks_variables.html#variables-defined-from-included-files-and-roles


2
আমার প্রশ্নটি হোস্টগুলির পক্ষে খুব নির্দিষ্ট ছিল এবং সাধারণভাবে ভেরিয়েবল নয়। আমার প্রয়োজন হ'ল একটি মাস্টার প্লেবুক তৈরি করতে সক্ষম হওয়া যার কোনও হোস্ট নেই, তবে প্রতিটি অন্তর্ভুক্ত প্লেবুকের মধ্যে এটিতে একটি হোস্ট রয়েছে, বা এটি প্যারামিটার হিসাবে সরবরাহ করা যেতে পারে। আমি এগুলি সর্বদা পৃথক প্লেবুক হিসাবে চালাতে পারি তবে তারপরে প্রাপ্ত তথ্যগুলি পরেরটির দিকে এগিয়ে যায় না এবং তাই প্রচুর অপ্রয়োজনীয়তা রয়েছে
পঙ্কজ লাল

উপরে আবার পড়ুন দয়া করে: "আপনার প্লেবুকের অন্য অংশে আপনি যদি এরকম কিছু করেন তবে এখন আপনি অন্যান্য হোস্টের কাছ থেকে তথ্য অ্যাক্সেস করতে পারবেন: ... তবে এই ক্ষেত্রে, আপনার মনে রাখা দরকার যে আপনি ব্যবহারের আগে সত্যগুলি পাওয়া উচিত এই "তাই, হ্যাঁ, আপনি আপনার মাস্টার প্লেবুকের অন্তর্ভুক্ত প্লেবুকগুলির মধ্যে আপনার সত্যতা ভাগ করতে পারেন।
ইয়োনসি সলিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.