一千萬個為什麽

搜索

基於操作系統使用Ansible中的角色和主機部署虛擬機



我遇到的問題是如何最好地將主機/角色應用於Ansible中的不同操作系統。

我目前使用Ansible生成Windows/Mac/Linux虛擬機,每個虛擬機都有不同的角色需要應用到他們。

我已經閱讀了最佳實踐並試圖關註它們,特別是使用分組方法,但我仍然不確定,因為他們主要提到webservers和dbservers。


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

我相信需要使用 build_nodes:children 更改 environment/test/meta 文件,但我不知道該怎麽做。以前我只是讓虛擬機擁有以下內置的所有角色:

舊site.yml

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

但後來意識到我不希望一切都建在同一臺機器上。請註意, build-machine-test-12 兩者都有單獨的Windows/Mac/Linux版本,因為它們會根據操作系統檢測包含的內容。

任何人都可以提出一種更好的基於操作系統的虛擬機分離方法嗎?

轉載註明原文: 基於操作系統使用Ansible中的角色和主機部署虛擬機

一共有 2 個回答:

所以我設法大致保持了相同的結構,並設法分離機器的生成方式,但仍然有點模糊,可能會提高效率!


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

該解決方案允許生成更多測試節點,並為其添加不同的角色,並且可以將其添加到要配置的機器的正確組中。

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

main.yml

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

把Debian所需要的所有東西放在Debian.yml中的apt和Centos.yml中的yum中。

總之,如果操作系統特定的東西放在單獨的文件中,可以讓所有操作系統類型使用相同的角色。

This is a more comprehensive example https://github.com/geerlingguy/ansible-role-mysql/blob/master/tasks/main.yml