chilcano.apache-nifi

Rôle Ansible : apache-nifi

Un rôle Ansible qui installe, configure et exécute Apache NiFi. Ce rôle propose les fonctionnalités suivantes :

  • Installe Apache NiFi.
  • Configure Apache NiFi dans 3 modes :
    • http : configuration standard de NiFi, sans authentification et fonctionnant sur HTTP.
    • https : configure et exécute NiFi via SSL/TLS avec authentification basée sur un certificat client.
    • tls_toolkit : utilise la paire de clés, les certificats numériques, le Java Key Store et les fichiers de configuration générés par Apache NiFi pour configurer et exécuter NiFi de manière sécurisée.
  • Exécute Apache NiFi en tant que service systemd.

Exigences

  • Java.

Variables de Rôle

Les variables par défaut se trouvent dans defaults/main.yml.

Dépendances

Ce rôle Ansible n'a pas de dépendances, bien qu'Apache NiFi nécessite Java. Pour installer Java, j'utiliserai le rôle (geerlingguy.java)[https://github.com/geerlingguy/ansible-role-java], mais avec quelques modifications pour installer Oracle Java 8 sous Debian. Vous pouvez trouver ces modifications dans mon fork à (chilcano.java / branche oracle-java-debian)[https://github.com/chilcano/ansible-role-java/tree/oracle-java-debian]. Clonez simplement cette branche.

Mais si vous utilisez Apache NiFi sur Ubuntu ou CentOS, vous n'aurez pas besoin des modifications ci-dessus. Il suffit de télécharger geerlingguy.java comme ci-dessous, ou d'installer manuellement Java 7 ou 8 sur votre machine :

$ sudo ansible-galaxy install geerlingguy.java

Exemple de 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"

Le fichier vars.yml est :

_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

Le fichier inventory est :

[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"

Mise à jour

  • Désormais, le rôle copie le binaire/l'installateur à partir du système de fichiers local. S'il n'existe pas, il essaie de le télécharger à partir de l'URL. Enfin, le binaire téléchargé sera copié dans le système de fichiers local pour être réutilisé.
  • Le fichier inventory doit être mis à jour en ajoutant ansible_ssh_private_key_file afin d'utiliser le module Ansible synchronize (pour synchroniser des fichiers plus volumineux) au lieu du module Ansible fetch.
  • La variable nifi_sync_dir_local a été ajoutée à ce rôle Ansible. C'est le répertoire local d'où le rôle Ansible prendra le binaire/l'installateur à copier sur le remote.

Licence

MIT / BSD

Informations sur l'Auteur

Ce rôle a été créé en 2017 par Roger Carhuatocto, auteur du blog HolisticSecurity.io.

À propos du projet

An Ansible Role that installs and runs Apache NiFi.

Installer
ansible-galaxy install chilcano.apache-nifi
Licence
Unknown
Téléchargements
385
Propriétaire
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.