Ansibleでホスト/ロールをさまざまなオペレーティングシステムに最適に適用する方法を考え出すのに問題があります。
現在、Ansibleを使用してWindows / Mac / Linux VMを生成しています。各VMには、適用する必要のある異なる役割があります。
私はベストプラクティスを読み、特にグループ化の方法を使用するために、それらに従うことを試みましたが、彼らが主にWebサーバーとDBサーバーに言及しているため、まだわかりません。
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を分離するより良い方法を誰かが提案できますか?
build-machine-test-1
ロールには、に基づいた独自の個別のビルドがあるためos_family
です。私の質問は、役割が適用される前にビルドマシン自体を分離する必要があるより高いレベルに対するものです...