根据操作系统在Ansible中使用角色和主机部署VM


9

我在解决如何最好地将主机/角色应用于Ansible中的不同操作系统时遇到问题。

我当前正在使用Ansible生成Windows / Mac / Linux VM,并且每个VM具有不同的角色,需要将其应用于它们。

我已经阅读了最佳实践并尝试遵循这些最佳实践,尤其是使用分组方法,但是我仍然不确定,因为它们大多提到了Web服务器和dbserver。


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,但是我不确定该怎么做。以前,我只是让VM具有以下所有内置角色:

旧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的基础,因为他们发现基于操作系统中包含的内容。

谁能提出一种更好的基于操作系统的虚拟机分离方法?

Answers:


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所需的所有内容都放到Debian.yml中的apt和Centos.yml中的yum上。

总之,如果将特定于操作系统的内容放在单独的文件中,则可以让所有操作系统类型使用相同的角色。

这是一个更全面的示例https://github.com/geerlingguy/ansible-role-mysql/blob/master/tasks/main.yml


我已经在较低的级别完成了此操作,因为每个build-machine-test-1角色都有基于off的独立构建os_family。我的问题是在更高的层次上,在应用角色之前需要分离出构建机器本身……
Rekovni
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.