ऑपरेटिंग सिस्टम पर आधारित Ansible में भूमिकाओं और मेजबानों का उपयोग करके वीएम को तैनात करना


9

मैं बाहर काम कर रहे मुद्दों के लिए सबसे अच्छा कैसे मेजबान / भूमिकाओं लागू करने के लिए विभिन्न ऑपरेटिंग सिस्टम में हैं।

मैं वर्तमान में Windows / Mac / Linux VMs बनाने के लिए Ansible का उपयोग कर रहा हूं, और प्रत्येक VM की अलग-अलग भूमिकाएँ हैं, जिन पर उन्हें लागू करने की आवश्यकता है।

मैंने सर्वोत्तम प्रथाओं को पढ़ा है और विशेष रूप से समूहीकरण पद्धति का उपयोग करने के लिए उनका पालन करने की कोशिश की है, लेकिन मैं अभी भी अनिश्चित हूं क्योंकि वे ज्यादातर वेबसर्वर और डेसबर्वर का उल्लेख करते हैं।


site.yml

- name: Apply common configuration to all nodes
  hosts: all
  roles:
    - common

- name: Configure and deploy test node 1
  hosts: build-test-node
  roles:
    - build-machine-test-1

- name: Configure and deploy test node 2
  hosts: build-test-node-2
  roles:
    - build-machine-test-2

वातावरण / परीक्षण / समूहों

[win_build_nodes]
win_build_machine_1
win_build_machine_2

[mac_build_nodes]
mac_build_machine_1

वातावरण / परीक्षण / मेजबान

win_build_machine_1   ansible_host=......
win_build_machine_2   ansible_host=......
mac_build_machine_1   ansible_host=......

वातावरण / परीक्षण / मेटा

[mac_build_nodes]
[win_build_nodes]

[win:children]
win_build_nodes

[mac:children]
mac_build_nodes

[linux:children]

[build_nodes:children]
win_build_nodes
mac_build_nodes

environment/test/metaमेरा मानना ​​है कि फ़ाइल को इसके साथ बदलना होगा build_nodes:children, लेकिन मुझे यकीन नहीं है कि क्या करना है। पहले मैं सिर्फ VMs कर रहा था सभी भूमिकाएँ निम्नलिखित के साथ इसे बनाया है:

पुरानी साइट

- name: Apply everything
  hosts: build_nodes
  roles:
    - common
    - build-machine-test-1
    - build-machine-test-2

लेकिन तब एहसास हुआ कि मैं नहीं चाहता था कि सब कुछ उसी मशीन पर बनाया जाए। ध्यान दें, build-machine-test-1और 2दोनों के पास अलग-अलग विंडोज / मैक / लिनक्स हैं, क्योंकि वे पता लगाते हैं कि ऑपरेटिंग सिस्टम के आधार पर क्या शामिल करना है।

क्या कोई ऑपरेटिंग सिस्टम के आधार पर VMs को अलग करने का बेहतर तरीका सुझा सकता है?

जवाबों:


6

इसलिए मैं एक ही संरचना को मोटे तौर पर रखने में कामयाब रहा, और मशीनों को कैसे उत्पन्न किया जाता है इसे अलग करने में कामयाब रहा, हालांकि अभी भी थोड़ा फजी है और शायद अधिक कुशल होने के लिए इसमें सुधार किया जा सकता है!


site.yml

- name: Apply common configuration to all nodes
  hosts: all
  roles:
    - common

- name: Configure and deploy test node 1
  hosts: build-test-node
  roles:
    - build-machine-test-1

- name: Configure and deploy test node 2
  hosts: build-test-node-2
  roles:
    - build-machine-test-2

वातावरण / परीक्षण / समूहों

[win_test_1_nodes]
win_build_machine_1

[mac_test_1_nodes]
mac_build_machine_1

[win_test_2_nodes]
win_build_machine_2

[mac_test_2_nodes]
mac_build_machine_2

वातावरण / परीक्षण / मेजबान

win_build_machine_1   ansible_host=......
win_build_machine_2   ansible_host=......
mac_build_machine_1   ansible_host=......
mac_build_machine_2   ansible_host=......

वातावरण / परीक्षण / मेटा

[win_test_1_nodes]
[mac_test_1_nodes]
[win_test_2_nodes]
[mac_test_2_nodes]

[win:children]
win_test_1_nodes
win_test_2_nodes

[mac:children]
mac_test_1_nodes
mac_test_2_nodes

[build-machine-test-1:children]
win_test_1_nodes
mac_test_1_nodes

[build-machine-test-2:children]
win_test_2_nodes
mac_test_2_nodes

यह समाधान अधिक परीक्षण नोड्स को उनके साथ जोड़े गए अलग-अलग भूमिकाओं के साथ उत्पन्न करने की अनुमति देता है, और बस मशीन के प्रावधान के लिए सही समूह में जोड़ा जा सकता है।


1

https://github.com/030/ansible-certbot

main.yml

- include: Debian.yml
when: ansible_os_family == 'Debian'

Debian.yml में apt की तरह डेबियन पर आवश्यक सब कुछ रखो और Centos.yml में yum।

सारांश में, यदि ओएस विशिष्ट चीजों को अलग-अलग फ़ाइलों में डाला जाता है, तो सभी ओएस प्रकारों को एक ही भूमिका का उपयोग करना संभव है।

यह एक अधिक व्यापक उदाहरण है https://github.com/geerlingguy/ansible-role-mysql/blob/master/tasks/main.yml


मैंने पहले ही निचले स्तर पर यह कर लिया है, क्योंकि प्रत्येक build-machine-test-1भूमिका का अपना अलग-अलग निर्माण होता है os_family। मेरा प्रश्न उच्च स्तर के लिए है जहां भूमिकाओं को लागू करने से पहले बिल्ड मशीनों को खुद को अलग करने की आवश्यकता होती है ...
Rekovni
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.