Seperti yang disebutkan, ini adalah desain. Ansible mengeksekusi hanya satu permainan pada satu waktu. Playbook Anda terdiri dari dua play (dua item dalam daftar YAML tingkat root yang ditentukan oleh file playbook). Permainan pertama berlaku role1 dan role2 untuk group1. Drama itu dijalankan pertama kali, dan hanya setelah selesai barulah drama kedua dimulai. Tetapi Ansible tidak berusaha untuk menggabungkan permainan bersama secara logis. Setelah semua, Anda mungkin benar-benar ingin tugas dalam role2 berjalan dua kali
Adapun untuk mengatasi masalah, ada beberapa cara Anda bisa mengatasi hal ini, dan yang Anda pilih akan tergantung pada detail kelompok dan peran.
Jika semua tugas dalam role2 idempoten, yaitu jika mereka dapat dijalankan beberapa kali dan berakhir dengan hasil yang sama setiap kali, maka semua yang Anda benar-benar kehilangan adalah waktu, dan tidak apa-apa untuk membiarkan peran itu diulang. Jika peran membutuhkan waktu sangat lama untuk diterapkan atau jika Anda tidak dapat membuatnya idempoten, maka pertimbangkan ide-ide berikut:
Anda dapat membagi buku pedoman menjadi tiga drama, dan menerapkan peran satu per satu:
---
- hosts: group1
roles:
- role1
- hosts: group1:group2
roles:
- role2
- hosts: group2
roles:
- role3
Atau jika peran Anda perlu dikelompokkan bersama, Anda dapat membuat grup ketiga untuk server yang membutuhkan ketiga peran tersebut. Anda tidak perlu mengeluarkan mereka dari dua kelompok lainnya. Anda dapat membuat grup di file inventaris Anda seperti ini:
[group1and2:children]
group1
group2
Kemudian di buku pedoman Anda, Anda bisa lagi membagi menjadi tiga drama, tetapi gunakan kelompok ketiga untuk menghindari menjalankan kembali peran:
---
- hosts: group1:!group1and2
roles:
- role1
- role2
- hosts: group1and2
roles:
- role1
- role2
- role3
- hosts: group2:!group1and2
roles:
- role2
- role3
Itu sangat jelek tetapi mungkin berguna dalam beberapa kasus.