chilcano.apache-nifi

Ansibleロール: apache-nifi

Apache NiFiをインストール、設定、実行するためのAnsibleロールです。このロールは以下の機能を提供します:

  • Apache NiFiをインストールします。
  • Apache NiFiを3つのモードで設定します:
    • http: NiFiの標準設定で、認証なし、HTTPで実行されます。
    • https: クライアント証明書に基づいた認証でSSL/TLS上でNiFiを設定・実行します。
    • tls_toolkit: Apache NiFiによって生成されたキー・ペア、デジタル証明書、Javaキーストアおよび設定ファイルを使用して、NiFiを安全に設定・実行します。
  • Apache NiFiをsystemdサービスとして実行します。

必要条件

  • Javaが必要です。

ロール変数

デフォルト変数はdefaults/main.ymlにあります。

依存関係

このAnsibleロールには依存関係はありませんが、Apache NiFiはJavaが必要です。 Javaをインストールするために、(geerlingguy.java)[https://github.com/geerlingguy/ansible-role-java]ロールを使用しますが、Debianに`Oracle Java 8`をインストールするためにいくつかの変更を加えています。これらの変更は私のフォークから入手可能です。(chilcano.java / branch oracle-java-debian)[https://github.com/chilcano/ansible-role-java/tree/oracle-java-debian]。そのブランチをクローンしてください。

UbuntuまたはCentOSでApache NiFiを使用する場合、上記の変更は不要です。以下のようにgeerlingguy.javaをダウンロードするか、手動でJava 7または8をインストールしてください:

$ sudo ansible-galaxy install geerlingguy.java

例のプレイブック

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

vars.ymlファイルは以下の通りです:

_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

inventoryファイルは以下の通りです:

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

更新点

  • このロールは、バイナリ/インストーラーがローカルファイルシステムに存在しない場合、URLからダウンロードを試みます。ダウンロードされたバイナリはローカルファイルシステムにコピーされ、再利用されます。
  • inventoryファイルは、synchronize Ansibleモジュール(より大きなファイルを同期するため)を使用するためにansible_ssh_private_key_fileを追加して更新する必要があります。
  • 変数nifi_sync_dir_localがこのAnsibleロールに追加されました。これは、Ansibleロールがリモートにコピーするためのバイナリ/インストーラーを取るローカルディレクトリです。

ライセンス

MIT / BSD

作者情報

このロールは2017年にRoger Carhuatoctoによって作成され、HolisticSecurity.io Blogの著者です。

プロジェクトについて

An Ansible Role that installs and runs Apache NiFi.

インストール
ansible-galaxy install chilcano.apache-nifi
ライセンス
Unknown
ダウンロード
385
所有者
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.