chilcano.apache-nifi

Ansible-Rolle: apache-nifi

Eine Ansible-Rolle, die Apache NiFi installiert, konfiguriert und ausführt. Diese Rolle bietet folgende Funktionen:

  • Installiert Apache NiFi.
  • Konfiguriert Apache NiFi in 3 Modi:
    • http: Standardkonfiguration von NiFi, keine Authentifizierung und läuft über HTTP.
    • https: Konfiguriert und führt NiFi über SSL/TLS mit Authentifizierung basierend auf dem Client-Zertifikat aus.
    • tls_toolkit: Holt das Schlüssel-Paar, digitale Zertifikate, den Java-Schlüsselbund und Konfigurationsdateien, die von Apache NiFi erstellt wurden, um NiFi sicher zu konfigurieren und auszuführen.
  • Führt Apache NiFi als systemd-Dienst aus.

Anforderungen

  • Java.

Rollenvariablen

Die Standardvariablen befinden sich in defaults/main.yml.

Abhängigkeiten

Diese Ansible-Rolle hat keine Abhängigkeiten, jedoch benötigt Apache NiFi Java. Um Java zu installieren, werde ich die Rolle (geerlingguy.java)[https://github.com/geerlingguy/ansible-role-java] verwenden, aber mit einigen Änderungen zur Installation von Oracle Java 8 unter Debian. Diese Änderungen sind in meinem Fork unter (chilcano.java / branch oracle-java-debian)[https://github.com/chilcano/ansible-role-java/tree/oracle-java-debian] verfügbar. Klonen Sie einfach diesen Branch.

Wenn Sie jedoch Apache NiFi unter Ubuntu oder CentOS verwenden, sind die oben genannten Änderungen nicht erforderlich. Laden Sie einfach das geerlingguy.java wie unten beschrieben herunter oder installieren Sie Java 7 oder 8 manuell auf Ihrem Gerät:

$ sudo ansible-galaxy install geerlingguy.java

Beispiel-Playbook

- hosts: nf1
  become: yes
  vars_files:
    - vars.yml
  roles:
    - role: ../../playbooks/roles/ansible-role-java
      java_packages:
        - oracle-java8-installer
        - ca-certificates
        - oracle-java8-set-default
      java_cleanup: false
      java_home: "/usr/lib/jvm/java-8-oracle"

    - role: chilcano.apache-nifi
      nifi:
        version: "1.2.0"
        packaging_bin: "tar.gz"
        packaging_src: "zip"
        action:
          clean:
            installer: false
            installation: false
            dependencies: false
          install: true
          run: true
        deployment:
          mode: "http"
          tls_toolkit:
            shared_dir_local: "/Users/Chilcano/1github-repo/binaries"
            hostname: ""
            dir_repo: ""
        download:
          http_uri: "http://mirror.ox.ac.uk/sites/rsync.apache.org"
      nifi_conf_authorizers:
        initial_admin_identity: ""
        nf_hostname_pattern: ""
        nf_domain: ""
        nf_dn_suffix: ""
      nifi_properties_j2:
        nifi.remote.input.host: ""
        nifi.remote.input.secure: false
        nifi.remote.input.socket.port:
        nifi.web.http.host: ""
        nifi.web.http.port: 8080
        nifi.web.https.host: ""
        nifi.web.https.port:
        nifi.security.keystore: ""
        nifi.security.keystoreType: ""
        nifi.security.keystorePasswd: ""
        nifi.security.keyPasswd: ""
        nifi.security.truststore: ""
        nifi.security.truststoreType: ""
        nifi.security.truststorePasswd: ""
        nifi.security.user.authorizer: ""
        nifi.security.user.login.identity.provider: ""
        nifi.cluster.protocol.is.secure: false
        nifi.cluster.node.address: ""
        nifi.cluster.node.protocol.port:
      nifi_sync_dir_local: "/Users/Chilcano/1github-repo/binaries"

- hosts: nf2
  become: yes
  vars_files:
    - vars.yml
  roles:
    - role: ../../playbooks/roles/ansible-role-java
      java_packages:
        - oracle-java8-installer
        - ca-certificates
        - oracle-java8-set-default
      java_cleanup: false
      java_home: "/usr/lib/jvm/java-8-oracle"

    - role: chilcano.apache-nifi
      nifi:
        action:
          clean:
            installer: false
            installation: false
            dependencies: false
          install: true
          run: true
        deployment:
          mode: "https"
          tls_toolkit:
            shared_dir_local: "/Users/Chilcano/1github-repo/binaries"
            hostname: "nftk1"
            dir_repo: "nifi-toolkit_repo"
        download:
          http_uri: "http://mirror.ox.ac.uk/sites/rsync.apache.org"
      nifi_conf_authorizers:
        initial_admin_identity: "{{ _nftk_client_cert_dn }}"
        nf_hostname_pattern: "{{ _nftk_hostname }}"
        nf_domain: "{{ _nftk_domain }}"
        nf_dn_suffix: "{{ _nftk_dn_suffix }}"
      nifi_properties_j2:
        nifi.remote.input.host: ""
        nifi.remote.input.secure: true
        nifi.remote.input.socket.port: 10443
        nifi.web.http.host: ""
        nifi.web.http.port:
        nifi.web.https.host: ""
        nifi.web.https.port: 9443
        nifi.security.keystore: ./conf/keystore.jks
        nifi.security.keystoreType: jks
        nifi.security.keystorePasswd: "{{ _nftk_run_keystorepasswd }}"
        nifi.security.keyPasswd: "{{ _nftk_run_keypasswd }}"
        nifi.security.truststore: ./conf/truststore.jks
        nifi.security.truststoreType: jks
        nifi.security.truststorePasswd: "{{ _nftk_run_truststorepasswd }}"
        nifi.security.user.authorizer: "file-provider"
        nifi.security.user.login.identity.provider: ""
        nifi.cluster.protocol.is.secure: true
        nifi.cluster.node.address: ""
        nifi.cluster.node.protocol.port: 11443
      nifi_sync_dir_local: "/Users/Chilcano/1github-repo/binaries"

- hosts: nf3
  become: yes
  vars_files:
    - vars.yml
  roles:
    - role: ../../playbooks/roles/ansible-role-java
      java_packages:
        - oracle-java8-installer
        - ca-certificates
        - oracle-java8-set-default
      java_cleanup: false
      java_home: "/usr/lib/jvm/java-8-oracle"

    - role: chilcano.apache-nifi
      nifi:
        action:
          clean:
            installer: false
            installation: false
            dependencies: false
          install: true
          run: true
        deployment:
          mode: "tls_toolkit"
          tls_toolkit:
            shared_dir_local: "/Users/Chilcano/1github-repo/binaries"
            hostname: "nftk1"
            dir_repo: "nifi-toolkit_repo"
        download:
          http_uri: "http://mirror.ox.ac.uk/sites/rsync.apache.org"
      nifi_conf_authorizers:
        initial_admin_identity: "{{ _nftk_client_cert_dn }}"
        nf_hostname_pattern: "{{ _nftk_hostname }}"
        nf_domain: "{{ _nftk_domain }}"
        nf_dn_suffix: "{{ _nftk_dn_suffix }}"
      nifi_properties_j2:
        nifi.remote.input.host: ""
        nifi.remote.input.secure: true
        nifi.remote.input.socket.port: 10443
        nifi.web.http.host: ""
        nifi.web.http.port:
        nifi.web.https.host: ""
        nifi.web.https.port: 9443
        nifi.security.keystore: ./conf/keystore.jks
        nifi.security.keystoreType: jks
        nifi.security.keystorePasswd: "{{ _nftk_run_keystorepasswd }}"
        nifi.security.keyPasswd: "{{ _nftk_run_keypasswd }}"
        nifi.security.truststore: ./conf/truststore.jks
        nifi.security.truststoreType: jks
        nifi.security.truststorePasswd: "{{ _nftk_run_truststorepasswd }}"
        nifi.security.user.authorizer: "file-provider"
        nifi.security.user.login.identity.provider: ""
        nifi.cluster.protocol.is.secure: true
        nifi.cluster.node.address: ""
        nifi.cluster.node.protocol.port: 11443
      nifi_sync_dir_local: "/Users/Chilcano/1github-repo/binaries"

Die Datei vars.yml ist:

_nftk_domain: "intix.info"
_nftk_hostname: "nf[1-3]"
_nftk_dn_suffix: "OU=INTIX"
_nftk_client_cert_dn: "CN=chilcano, {{ _nftk_dn_suffix }}"
_nftk_run_clientpasswd: demo00a
_nftk_run_keypasswd: demo00b
_nftk_run_truststorepasswd: demo00c
_nftk_run_keystorepasswd: demo00d

Die Datei inventory ist:

[nifis]
nf1
nf2
nf3

nf1 ansible_host=192.168.77.5
nf2 ansible_host=192.168.77.6
nf3 ansible_host=192.168.77.7

[nifis:vars]
ansible_user=vagrant
ansible_ssh_private_key_file="/Users/Chilcano/.vagrant.d/insecure_private_key"

Aktualisiert

  • Die Rolle kopiert jetzt den Binär-/Installationsdatei vom lokalen Dateisystem. Wenn sie nicht existiert, wird versucht, sie von einer URL herunterzuladen. Schließlich wird die heruntergeladene Binärdatei auf das lokale Dateisystem kopiert, um sie wiederzuverwenden.
  • Die Datei inventory muss aktualisiert werden, indem ansible_ssh_private_key_file hinzugefügt wird, um das synchronize-Ansible-Modul (zum Synchronisieren größerer Dateien) anstelle des fetch-Ansible-Moduls zu verwenden.
  • Die Variable nifi_sync_dir_local wurde zu dieser Ansible-Rolle hinzugefügt. Es ist das lokale Verzeichnis, aus dem die Ansible-Rolle die Binär-/Installationsdatei kopiert, um sie auf dem Remote-Host zu verwenden.

Lizenz

MIT / BSD

Autorinformationen

Diese Rolle wurde 2017 von Roger Carhuatocto erstellt, dem Autor des HolisticSecurity.io Blogs.

Über das Projekt

An Ansible Role that installs and runs Apache NiFi.

Installieren
ansible-galaxy install chilcano.apache-nifi
GitHub Repository
Lizenz
Unknown
Downloads
385
Besitzer
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.