IBM Cloud Docs
Ansible-Rollen und Ansible Galaxy erstellen

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.

  1. 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.

  2. 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 Datei main.yml beschreibt.

    ├── roles
        └── db
            └── tasks
                └── main.yml
    ├── playbook.yaml
    ├── README.md
    
  3. 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 Datei main.yml.

    - name: Download MySQL Community Repo
        get_url:
        url: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
        dest: /tmp
    
  4. 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.

  1. Durchsuchen Sie Ansible, um die gewünschten Rollen zu finden.

  2. 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 Rolle andrewrothstein.kubectl von Ansible Galaxy verwenden.

    ---
    roles:
      - name: andrewrothstein.kubectl
    
  3. Fügen Sie Ihrem GitHub-Repository einen Ordner roles hinzu, der relativ zum Playbook ist, und speichern Sie die Datei requirements.yml wie in diesem Beispiel gezeigt in diesem Ordner.

        ├── roles
            └── requirements.yml
        ├── playbook.yaml
        ├── README.md
    
  4. 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.