Ansible-Rollen und Ansible Galaxy erstellen
Mit einer Ansible-Rolle kann ein wichtiges Ansible-Playbook in wiederverwendbare Teile, sogenannte Rollen, aufgeteilt werden. Eine Rolle definiert eine Gruppe von Tasks, die Sie auf Ihren Zielhosts ausführen möchten. Um diese Tasks auf Ihren Hosts auszuführen, müssen Sie auf die Rolle in Ihrem Ansible-Playbook verweisen.
Ansible Galaxy ist ein Repository für verfügbare Ansible-Rollen, die direkt in Ihre Playbooks abgelegt werden können, um Ihre Automatisierungsprojekte zu optimieren. Ein neuer Systemadministrator kann innerhalb weniger Stunden mit der Automatisierung mit Ansible beginnen.
Sie können Ihre eigenen Rollen erstellen oder bestehende Rollen aus Ansible Galaxy verwenden.
Eigene Rollen in Ansible erstellen
Um Ihr Ansible-Playbook zu optimieren, können Sie sich für ein Herausfiltern von Playbook-Tasks entscheiden, indem Sie Rollen erstellen und auf diese in Ihrem Playbook verweisen. Verwenden Sie es, um automatisch zugehörige Variablen, Dateien, Aufgaben, Handler und andere Ansible basierend auf einer bekannten Dateistruktur zu laden.
-
Ermitteln Sie die Tasks in Ihrem Playbook, die Sie über mehrere Hosts hinweg wiederverwenden möchten. Sie können beispielsweise Tasks, die Sie auf allen Hosts ausführen möchten, in einer Gruppe zusammenfassen und Tasks, die Sie auf Ihren Web-Servern und in Ihren Datenbanken ausführen möchten, in einer anderen Gruppe. Jede Gruppe von Tasks kann zu einer eigenen Rolle werden.
-
Erstellen Sie die Ansible-Rollenstruktur in Ihrem GitHub-Repository. Rollen müssen in einem Verzeichnis
roles
relativ zu Ihrem Ansible-Playbook gespeichert werden. Das Rollenverzeichnis kann ein Unterverzeichnis wie/roles/db/
haben, das die Aufgaben in der Dateimain.yml
beschreibt.├── roles └── db └── tasks └── main.yml ├── playbook.yaml ├── README.md
-
Fügen Sie die auszuführenden Tasks zu einer Datei
main.yml
hinzu. Im folgenden Beispiel filtern Sie die Task zum Herunterladen des MySQL Community-Repositorys aus Ihrem Haupt-Playbook heraus und speichern sie in der Dateimain.yml
.- name: Download MySQL Community Repo get_url: url: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm dest: /tmp
-
Verweisen Sie auf die Rolle in Ihrem Ansible-Playbook.
- name: deploy MySQL and configure the databases hosts: all remote_user: root roles: - db tasks: - shell: "hostname"
Weitere Informationen zu anderen Dateien und Bedingungen, die Sie zu Ihrer Rolle hinzufügen können, finden Sie in Ansible.
Rollen aus Ansible Galaxy installieren
Sie können vorhandene Rollen aus Ansible in Ihrem Playbook verwenden. Ansible Galaxy bietet vordefinierte Arbeitseinheiten aus der Ansible-Community an, die als Rollen und Sammlungen verfügbar gemacht werden.
-
Durchsuchen Sie Ansible, um die gewünschten Rollen zu finden.
-
Erstellen Sie eine Datei
requirements.yml
, in der Sie alle von Ihnen benötigten Rollen angeben. Eine Übersicht über die Referenzierung von Ansible finden Sie in Ansible. Im folgenden Beispiel möchten Sie die Rolleandrewrothstein.kubectl
von Ansible Galaxy verwenden.--- roles: - name: andrewrothstein.kubectl
-
Fügen Sie Ihrem GitHub-Repository einen Ordner
roles
hinzu, der relativ zum Playbook ist, und speichern Sie die Dateirequirements.yml
wie in diesem Beispiel gezeigt in diesem Ordner.├── roles └── requirements.yml ├── playbook.yaml ├── README.md
-
Verweisen Sie auf die Rolle in Ihrem Ansible-Playbook. In diesem Beispiel wird die Rolle mit dem Namen
andrewrothstein.kubectl
verwendet.- hosts: all roles: - role: andrewrothstein.kubectl
Weitere Informationen zu Ansible-Playbook-Beispielen finden Sie IBM® bereitgestellten Ansible-Playbook.