การปรับใช้ VMs โดยใช้บทบาทและโฮสต์ใน Ansible ตามระบบปฏิบัติการ


9

ฉันมีปัญหาในการหาวิธีใช้โฮสต์ / บทบาทกับระบบปฏิบัติการต่าง ๆ ใน Ansible ให้ดีที่สุด

ปัจจุบันฉันใช้ Ansible เพื่อสร้าง Windows / Mac / Linux VM และ 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

สภาพแวดล้อม / ทดสอบ / hosts

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 มีบทบาททั้งหมดที่สร้างขึ้นโดยมีดังต่อไปนี้:

เก่า site.yml

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

แต่รู้แล้วว่าฉันไม่ต้องการให้ทุกสิ่งถูกสร้างขึ้นในเครื่องเดียวกัน หมายเหตุbuild-machine-test-1และ2ทั้งคู่มีการสร้าง Windows / Mac / Linux แยกต่างหากเนื่องจากตรวจพบสิ่งที่จะรวมอยู่บนพื้นฐานของระบบปฏิบัติการ

ใครสามารถแนะนำวิธีที่ดีกว่าในการแยก 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

สภาพแวดล้อม / ทดสอบ / hosts

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'

ใส่ทุกอย่างที่จำเป็นสำหรับเดเบียนเช่น apt ใน Debian.yml และ yum ใน Centos.yml

โดยสรุปเป็นไปได้ที่จะให้ระบบปฏิบัติการทุกประเภทใช้บทบาทเดียวกันหากมีการระบุสิ่งต่าง ๆ ในระบบปฏิบัติการเป็นไฟล์แยกต่างหาก

นี่เป็นตัวอย่างที่ครอบคลุมมากขึ้นhttps://github.com/geerlingguy/ansible-role-mysql/blob/master/tasks/main.yml


ฉันได้ทำสิ่งนี้ในระดับที่ต่ำกว่าแล้วเนื่องจากแต่ละbuild-machine-test-1บทบาทมีงานสร้างที่แยกจากos_familyกัน คำถามของฉันสำหรับระดับที่สูงขึ้นซึ่งตัวเครื่องสร้างต้องถูกแยกออกก่อนที่จะมีการใช้บทบาท ...
Rekovni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.