কীভাবে স্বয়ংক্রিয়ভাবে উত্তর গ্যালাক্সি ভূমিকা ইনস্টল করবেন?


129

আমার সমস্ত উত্তরযোগ্য প্লেবুক / ভূমিকা আমার গিট রেপোতে চেক ইন করা আছে।

তবে, জবাবদিহি গ্যালাক্সি ভূমিকার জন্য আমি সর্বদা স্পষ্টভাবে এগুলি ডাউনলোড করতে হয় প্রতিটি মেশিনে আমি উত্তর থেকে চালাতে চাই on

আগে থেকে জেনে রাখা শক্ত এমনকি সঠিক সময়ে উত্তরীয় গ্যালাক্সির ভূমিকাগুলির প্রয়োজন যতক্ষণ না রানী সময়টিতে উত্তরীয় কোনও অনুপস্থিত ভূমিকা সম্পর্কে অভিযোগ না করে।

উত্তর গ্যালাক্সির ভূমিকা নির্ভরতাগুলি কীভাবে পরিচালনা করার কথা? আমি আমার বাকী উত্তরীয় কোডের সাথে সেগুলি আমার গিট রেপোতেও পরীক্ষা করে দেখতে চাই বা আমি নতুন যন্ত্রে আনসিবল চালানোর সময় সেগুলি স্বয়ংক্রিয়ভাবে চিহ্নিত এবং ডাউনলোড করতে চাই have


galaxy.ansible.com/docs/using/index.html এখানে উত্তরীয়-ছায়াপথ ব্যবহার করার জন্য প্রয়োজনীয় প্রতিটি বিষয় রয়েছে। এটি একটি ভাল সম্পন্ন ডক! এমনকি আপনি যদি শিক্ষানবিশ হয় তবে :)
আয়রা

@pdeva আপনি নীচের একটি বৈধ উত্তর গ্রহণ করতে পারেন?
জিজি

উত্তর:


148

requirements.ymlএই ব্যবহারের ক্ষেত্রে আপনার একটি ফাইল ব্যবহার করা উচিত । বিভিন্ন ইনস্টল পদ্ধতি ব্যবহার করে আপনার প্রয়োজনীয় ভূমিকা বর্ণনা করুন:

# Install a role from the Ansible Galaxy
- src: dfarrell07.opendaylight

# Install a role from GitHub
- name: opendaylight
  src: https://github.com/dfarrell07/ansible-opendaylight

# Install a role from a specific git branch
- name: opendaylight
  src: https://github.com/dfarrell07/ansible-opendaylight
  version: origin/master

# Install a role at a specific tag from GitHub
- name: opendaylight
  src: https://github.com/dfarrell07/ansible-opendaylight
  version: 1.0.0

# Install a role at a specific commit from GitHub
- name: opendaylight
  src: https://github.com/dfarrell07/ansible-opendaylight
  version: <commit hash>

তারপরে এগুলি ইনস্টল করুন:

ansible-galaxy install -r requirements.yml

এখানে একটি কার্যকারী উদাহরণ (ভ্যাগ্র্যান্ট প্রভিজার হিসাবে উত্তরযোগ্য ব্যবহার করে ওপেনডায়লাইট ইনস্টল করা)। দেখুন প্রাসঙ্গিক Ansible ডক্স আরও তথ্যের জন্য।


নীচে @ কিরান অ্যান্ড্রুজের উত্তরও দেখুন। এটি এটিকে প্রসারিত করে।
মার্কো ফেরারি 10

1
এটি কোনও প্লেবুকের ভূমিকা নির্ভরতাগুলি স্বয়ংক্রিয়ভাবে ইনস্টল করছে না, এটি স্পষ্টভাবে প্লেবুক তৈরির লোকদের দ্বারা ম্যানুয়ালি তালিকাভুক্ত করা নির্ভরতার একটি তালিকা ইনস্টল করছে।
নিল

53

প্রস্তাবিত হিসাবে, আপনি এই প্রয়োজনের জন্য উত্তরযোগ্য গ্যালাক্সি ব্যবহার করতে পারেন।

উত্তরীয়দের একটি বৈশিষ্ট্য রয়েছে যেখানে আপনি এমন একটি requirements.ymlফাইল তৈরি করতে পারেন যা আপনার সমস্ত ভূমিকার তালিকা করে। আপনি এখানে সে সম্পর্কে জানতে পারেন: http://docs.ansible.com/ansible/latest/galaxy.html#installing-m Multipleple-roles-from-a-file

উদাহরণস্বরূপ (প্রয়োজনীয়তা.আইএমএল):

- src: yatesr.timezone

তারপরে আপনি ansible-galaxy install -r requirements.ymlএখানে তালিকাভুক্ত সমস্ত রোল ডাউনলোড করতে এই ফাইলটিতে চালান ।

আপনি যদি এটিকে আরও স্বয়ংক্রিয় করতে চান তবে আপনি একটি সাধারণ শেল স্ক্রিপ্ট তৈরি করতে পারেন যা দুটি কমান্ড চালাবে।

উদাহরণস্বরূপ (উত্তরযোগ্য):

./ansible.sh

ansible-galaxy install -r requirements.yml
ansible-playbook playbook.yml -i inventory 

1
সবেমাত্র পরীক্ষিত, এটি এমন একটি বার্তা প্রদর্শন করে যা ভূমিকা ইতিমধ্যে ডাউনলোড হয়েছে, কোনও ত্রুটি নেই। সংস্করণ2.2.1
ইগোনাতো

আপনি যদি ইনস্টল করছেন যে গ্যালাক্সি রোলগুলি যদি প্লেবুক ব্যবহার করে তবে প্লেবুকটি ডাউনলোড করার আগে তাদের উপস্থিতি চেক করার পরে প্লেবুকটি প্রথমবার চালানো হবে না। প্লেবুককে দ্বিতীয়বার কল করা তারপরে নতুন ইনস্টল করা ভূমিকাগুলি বেছে নেবে।
বেন

কমান্ডগুলি হ্রাস করার জন্য একটি মোড়ক স্ক্রিপ্ট সহ আমি এখন এটি কীভাবে করছি তা আপডেট করেছি।
কায়রান অ্যান্ড্রুজ

19

আমি প্রায়শই নিজেকে জাভা জেডিকে ইনস্টল করতে দেখি। কোনও ভূমিকা ব্যবহার করা সেই স্পর্শটিকে আরও সহজ করে তোলে। আমি বেশ কয়েকটি বিভিন্ন উপায়ে চেষ্টা করেছি (প্রচুর .gitmodule এবং submodule সহ ... আমাকে কাজের জন্য একাধিক গিট সিস্টেম ব্যবহার করতে হবে এবং এটি কুৎসিত হয়)। আমার সবচেয়ে বড় প্রয়োজনটি হ'ল আমি আমার প্লেবুক প্রকল্পে রোল কোডটি যাচাই না করি, বেশিরভাগ ক্ষেত্রে আমি সমস্ত কিছু এক জায়গায় রাখতে পারি।

আমার 'প্রয়োজনীয়তা.আইএমএল' ফাইলের বিষয়বস্তু:

- src: https://github.com/staylorx/ansible-role-wls-prep.git
  version: master
  name: staylorx.wls-prep

- src: https://my-work-git-extravaganza.com
  version: 2.x
  name: coolplace.niftyrole

#From Ansible Galaxy
- src: staylorx.oracle-jdk

আমি একটি পৃথক প্লেবুক চালাচ্ছি, ইনস্টল-রোলস.আইএমএল:

---

- hosts: localhost

  tasks:
    - file:
        path:  roles
        state: absent

    - local_action:
        command ansible-galaxy install -r requirements.yml --roles-path roles

    - lineinfile:
        dest:   .gitignore
        regexp: '^\/roles$'
        line:   '/roles'
        state:  present

আমি এই প্রথম প্লেবুকটি চালাই, তারপরে আমি যে কোনও প্লেবুকগুলিতে আমার ভূমিকাগুলি চালাই। আমার কাছে গোপনীয়তা হ'ল এটি গিট দ্বারা উপেক্ষা করা নিশ্চিত করা যাতে আমি ভুল করে ভুমিকাগুলি পরীক্ষা করি না। এছাড়াও আমি যেহেতু প্রতিবার ফোল্ডারটি মুছে ফেলি তাই আমি নিশ্চিত করি যে ত্রুটিগুলি জোর করে বা উপেক্ষা করার দরকার নেই।


এমনকি স্থানীয় কমান্ড চালানোর আগে এটি 'ভূমিকা পাওয়া যায় নি' নিয়ে ব্যর্থ হবে'll
ড্যানিয়েল আন্দ্রে মিনসি

1
@ মিনসিă ড্যানিয়েল আন্ড্রেই আপনাকে গতিশীল উপায় ব্যবহার করতে হবে, যেমন অন্তর্ভুক্ত_রোল। পরীক্ষা এই
user1686407

4

আর একটি সমাধান হ'ল গিট সাবমডিউল ব্যবহার করা। সর্বোপরি, উত্তরযোগ্য গ্যালাকী হ'ল গিথুব সংগ্রহস্থলের একটি ডিরেক্টরি ...

সাব-মডুল হিসাবে কোনও গ্যালাক্সি ভূমিকা স্বয়ংক্রিয়ভাবে যুক্ত করতে আমি এই আদেশটি ব্যবহার করি:

ansible-galaxy info <package> | grep -A 1 github_repo | tr '\n' ' ' | sed -e "s/.*github_repo: \([^[:space:]]*\)[^\w]*github_user: \([^[:space:]]*\)[[:space:]]*/git submodule add git:\/\/github.com\/\2\/\1.git roles\/\2.\1/g" | sh

তারপরে আপনার গিট রেপোতে পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন। ভবিষ্যতে আপনি যখন আপনার রেপো ক্লোন করে ফেলেন তখন এটি সাবমোডিয়ুলগুলি দিয়ে ক্লোন করা নিশ্চিত করুন eggit clone ... --recursive

এর একটি সুবিধা হ'ল, একটি গিট সাবমডিউল সর্বদা একটি নির্দিষ্ট সংস্করণ (গিট কমিট-হ্যাশ) উল্লেখ করে। এটি আপনাকে আপনার উত্পাদনশীল পরিবেশে অনাকাঙ্ক্ষিত আপডেটগুলি চালানো থেকে বিরত করবে। গ্যালাক্সি রোলের নতুন সংস্করণে বাগগুলি থাকতে পারে বা আগের চেয়ে সম্পূর্ণ আলাদা কাজ করতে পারে। গিট সাবমোডিয়ালের সাহায্যে আপনি সিদ্ধান্ত নেন যে আপনি কখন এবং নতুন সংস্করণে কোনও ভূমিকা আপডেট করবেন।

এছাড়াও, গ্যালাক্সির ভূমিকাগুলি কালো তালিকাভুক্ত .gitignoreকরার জন্য আপনার ভান্ডারগুলিতে তাদের কোড করা প্রতিরোধ করার জন্য আপনাকে অতিরিক্তভাবে যত্ন নিতে হবে না ।


5
এটি আমার মতে খারাপ অভ্যাস is এসসিএম রেপোগুলিকে একসাথে আঠালো করার জন্য নির্ভরতা পরিচালনার সরঞ্জামগুলি ব্যবহার করা সহজতর, বিশেষত যখন আমরা এসসিএমের জন্য গিট সাবমডিউলগুলির বিষয়ে কথা বলি।
ডেভিড রজনিক

1
একমত। আসলে আমি এটিকে আর ব্যবহার করছি না। এখনও এটি বৈধ পন্থা যেহেতু উত্তরযোগ্য-গ্যালাক্সি নিখুঁত from গ্যালাক্সি আপডেটগুলির জন্য যাচাই করবে না, এমনকি যদি কোনও প্রয়োজনীয় সংস্করণ আপনার প্রয়োজনীয় ফাইলগুলিতে আবদ্ধ হয়, আপনি যদি অনিবন্ধিত --forceপতাকা সহ সমস্ত ভূমিকা পুনরায় ডাউনলোড করতে বাধ্য করেন তবে তা আপনাকে প্রদর্শিত হবে না বা আসলে কী পরিবর্তন হয়েছিল তা আপনাকে দেখাবে না। এটি একটি কালো বাক্স আপনি কেবলমাত্র এসসিএম-তে ডাউনলোড করা গ্যালাক্সি ভূমিকা রাখলে তা নিয়ন্ত্রণ করতে পারেন। অন্য কারণে এটি যাইহোক ভাল ধারণা। সাবমডিউলগুলি টানানোর সময় আপনি কমপক্ষে দেখুন যে কোন ভূমিকা পরিবর্তন হয়েছে changed
উডন্ডন

বিটিডাব্লু, সাবমোডিয়ালগুলির সমস্ত সমস্যা, এএফআইকে এই পরিস্থিতিতে নগণ্য কারণ তারা তাদের বিষয়বস্তু পরিবর্তনের সাথে সম্পর্কিত। আমার অভিজ্ঞতার মাধ্যমে
টান

4

কমান্ড মডিউলটি ব্যবহার করে প্রয়োজনীয় ভূমিকা ইনস্টল করতে আপনি একটি উত্তরযোগ্য ভূমিকা ব্যবহার করতে পারেন ।

এখানে চালিত একটি খুব প্রাথমিক উদাহরণ ansible-galaxy install:

- name: Install roles from Ansible Galaxy
  command: ansible-galaxy install {{ item.item }}
  with_items:
    - "{{ ansible_roles_list }}"

এটি ansible_roles_listভেরিয়েবল হিসাবে বা ভূমিকা পরামিতি হিসাবে সরবরাহ করা যেতে পারে।

আপনি যদি কোনও ভূমিকায় এটি করেন তবে এটি অন্য কোনও ভূমিকা যা আপনি এটি ব্যবহার করে ইনস্টল করতে চান তা আলাদা প্লেবুকের আগে প্রয়োগ করতে হবে । এর কারণ হ'ল প্লেবুক যেখানে আপনি সেগুলি উল্লেখ করেছেন সেগুলি চালনার আগে সমস্ত ভূমিকা উপলব্ধ থাকলে উত্তরযোগ্য এটি পরীক্ষা করে।


ডিম এবং মুরগি :)
বাজেউজ

2

এই সময়ে, যতদূর আমি জানি রানটাইমের সময় রোলগুলি ডাউনলোড করার কোনও স্বয়ংক্রিয় উপায় নেই। আপনার সেরা বাজি হয় হয় তাদের নিজের রেপোতে প্রতিশ্রুতিবদ্ধ করা বা সমস্ত প্রয়োজনীয়তার তালিকাভুক্ত একটি সঠিক ডকুমেন্টেশন। এমনকি আপনি একটি প্রাক-ফ্লাইট প্লেবুক তৈরি করতে পারেন যা আপনার ভূমিকা ইনস্টল করে। :)


3
আপনি এটির জন্য প্রয়োজনীয়তা। টেক্সট ফাইলটি ব্যবহার করতে পারেন। দেখুন: docs.ansible.com/…
toast38coza

0

এখানে, আমার প্রয়োজনীয়তাগুলি ভূমিকাটিতে রয়েছে এবং ইনস্টল.আইএমএলে ব্যবহৃত হয়

main.yml

 # tasks file for MY_ROLE
- name: Install requirements
  local_action: command ansible-galaxy install -r {{ role_path }}/requirements.yml -p /etc/ansible/roles

- include_tasks: install.yml 
.  
├── playbook.yml  
├── inventory  
├── roles  
│    └── My_Role   
│        ├── tasks  
│        │   └── main.yml  
│        │   └── install.yml  
│        └── requirements.yml
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.