我目前正在使用Ansible生成Windows / Mac / Linux VM,每个VM都有
我已经阅读了最佳实践并尝试遵循它们,尤其是使用分组方法,但是我仍然不确定,因为它们大多提到了Web服务器和数据库服务器。
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-1
和2
都有各自的Windows / Mac / Linux构建,因为它们可以根据操作系统检测要包含的内容。有人可以提出一种更好的基于操作系统分离VM的方法吗? br />
#1 楼
因此,我设法大致保持了相同的结构,并设法分离了机器的生成方式,但是仍然有些模糊,可能可以进行改进以提高效率!站点。 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
该解决方案允许生成更多的测试节点,并在其中添加单独的角色,并且可以将其添加到要配置的计算机的正确组中。
#2 楼
https://github.com/030/ansible-certbotmain.yml
- include: Debian.yml
when: ansible_os_family == 'Debian'
像apt这样放置debian所需的一切
总而言之,如果将特定于OS的东西放在单独的文件中,则可以让所有OS类型使用相同的角色。
这是一个更全面的示例https://github.com/geerlingguy/ansible-role-mysql/blob/master/tasks/main.yml
评论
我已经在较低级别完成了此操作,因为每个build-machine-test-1角色都有基于os_family的独立构建。我的问题是在更高层次上,在应用角色之前需要分离出构建机器本身。
– Rekovni
17年9月15日在14:25