cavemandaveman.nifi
Ansible Role: NiFi
This Ansible Role installs NiFi on Linux. It upgrades NiFi easily by default.
Requirements
You need at least Java 8.
Role Variables
Check defaults/main.yml
for all variables and how to set them. For more details, see the NiFi System Administrator’s Guide.
Here's where to download or locate binaries, install NiFi, create a home directory linked to the current release, and a main config directory for files that don’t need changing during upgrades. You can add more key/value pairs and these directories will be created, which is handy for custom files like NARs or drivers.
nifi_config_dirs:
binaries: /tmp
install: /opt/nifi/releases
home: /opt/nifi/releases/current
external_config: /opt/nifi/config_resources
By default, this directory structure will be created:
|--opt/
|--nifi/
|--releases/
|--current -> nifi-1.14.0/
|--nifi-1.14.0/
|--nifi-1.13.2/
|--config_resources/
|--archive/
|--authorizations.xml
|--content_repository/
|--custom_nars/
|--database_repository/
|--flow.xml.gz
|--flowfile_repository/
|--provenance_repository/
|--state/
|--users.xml
You can also add key/value pairs from config files to these lists. The names of the lists match the filenames. You can find current config options here.
nifi_properties:
bootstrap:
nifi_env:
logback:
login_identity_providers:
state_management:
authorizers:
zookeeper:
Dependencies
None.
Example Playbooks
These assume you have hash_behaviour=merge
configured. If not, include the default dict key/values from defaults/main.yml
.
Basic single node NiFi instance:
- hosts: nifi_servers
become: yes
roles:
- cavemandaveman.nifi
Basic 3 node NiFi cluster using embedded Zookeeper:
- hosts: nifi_servers
become: yes
roles:
- cavemandaveman.nifi
vars:
nifi_properties:
nifi.web.http.host: ""
nifi.web.http.port: ""
nifi.web.https.host: "{{ ansible_fqdn }}"
nifi.web.https.port: 8443
nifi.cluster.is.node: true
nifi.cluster.node.address: "{{ ansible_fqdn }}"
nifi.cluster.node.protocol.port: 11443
nifi.cluster.flow.election.max.candidates: 3
nifi.cluster.load.balance.host: "{{ ansible_fqdn }}"
nifi.cluster.load.balance.port: 6342
nifi.state.management.embedded.zookeeper.start: true
nifi.zookeeper.connect.string: nifi_server1:2181,nifi_server2:2181,nifi_server3:2181
login_identity_providers:
/loginIdentityProviders/provider/identifier: single-user-provider
/loginIdentityProviders/provider/class: org.apache.nifi.authentication.single.user.SingleUserLoginIdentityProvider
authorizers_user_group_providers: 0
authorizers:
/authorizers/authorizer/identifier: single-user-authorizer
/authorizers/authorizer/class: org.apache.nifi.authorization.single.user.SingleUserAuthorizer
state_management:
/stateManagement/cluster-provider/property[@name="Connect String"]: "{{ nifi_properties['nifi.zookeeper.connect.string'] }}"
zookeeper_myid: "{{ ansible_default_ipv4.address.split('.')[-1] }}"
zookeeper:
server.10: nifi_server1:2888:3888
server.11: nifi_server2:2888:3888
server.12: nifi_server3:2888:3888
Secure single node NiFi instance with LDAP:
- hosts: nifi_servers
become: yes
roles:
- cavemandaveman.nifi
vars:
nifi_properties:
nifi.web.http.host: ""
nifi.web.http.port: ""
nifi.web.https.host: "{{ ansible_fqdn }}"
nifi.web.https.port: 8443
nifi.security.keystore: /path/to/keystore.jks
nifi.security.keystoreType: JKS
nifi.security.keystorePasswd: keystorePassword
nifi.security.keyPasswd: keyPassword
nifi.security.truststore: /path/to/truststore.jks
nifi.security.truststoreType: JKS
nifi.security.truststorePasswd: truststorePassword
login_identity_providers:
/loginIdentityProviders/provider/identifier: ldap-provider
/loginIdentityProviders/provider/class: org.apache.nifi.ldap.LdapProvider
/loginIdentityProviders/provider/property[@name="Authentication Strategy"]: SIMPLE
/loginIdentityProviders/provider/property[@name="Manager DN"]: cn=nifi,ou=people,dc=example,dc=com
/loginIdentityProviders/provider/property[@name="Manager Password"]: password
/loginIdentityProviders/provider/property[@name="Url"]: ldap://hostname:port
/loginIdentityProviders/provider/property[@name="User Search Base"]: OU=people,DC=example,dc=com
/loginIdentityProviders/provider/property[@name="User Search Filter"]: sAMAccountName={0}
authorizers_user_group_providers: 1
authorizers:
/authorizers/userGroupProvider[1]/identifier: file-user-group-provider
/authorizers/userGroupProvider[1]/class: org.apache.nifi.authorization.FileUserGroupProvider
/authorizers/userGroupProvider[1]/property[@name="Users File"]: "{{ nifi_config_dirs.external_config }}/users.xml"
/authorizers/accessPolicyProvider/identifier: file-access-policy-provider
/authorizers/accessPolicyProvider/class: org.apache.nifi.authorization.FileAccessPolicyProvider
/authorizers/accessPolicyProvider/property[@name="User Group Provider"]: file-user-group-provider
/authorizers/accessPolicyProvider/property[@name="Authorizations File"]: "{{ nifi_config_dirs.external_config }}/authorizations.xml"
Secure 3 node NiFi cluster with LDAP using embedded Zookeeper:
- hosts: nifi_servers
become: yes
roles:
- cavemandaveman.nifi
vars:
nifi_properties:
nifi.web.http.host: ""
nifi.web.http.port: ""
nifi.web.https.host: "{{ ansible_fqdn }}"
nifi.web.https.port: 8443
nifi.security.keystore: /path/to/keystore.jks
nifi.security.keystoreType: JKS
nifi.security.keystorePasswd: keystorePassword
nifi.security.keyPasswd: keyPassword
nifi.security.truststore: /path/to/truststore.jks
nifi.security.truststoreType: JKS
nifi.security.truststorePasswd: truststorePassword
nifi.cluster.is.node: true
nifi.state.management.embedded.zookeeper.start: true
nifi.zookeeper.connect.string: nifi_server1:2181,nifi_server2:2181,nifi_server3:2181
login_identity_providers:
/loginIdentityProviders/provider/identifier: ldap-provider
/loginIdentityProviders/provider/class: org.apache.nifi.ldap.LdapProvider
authorizers_user_group_providers: 1
authorizers:
/authorizers/userGroupProvider[1]/identifier: file-user-group-provider
/authorizers/accessPolicyProvider/identifier: file-access-policy-provider
zookeeper_myid: "{{ ansible_default_ipv4.address.split('.')[-1] }}"
zookeeper:
server.10: nifi_server1:2888:3888
server.11: nifi_server2:2888:3888
server.12: nifi_server3:2888:3888
License
GPLv3
Author Information
This role was created in 2018 by cavemandaveman.
An Ansible Role that installs NiFi on Linux. By default, it installs NiFi in a way that makes upgrading painless.
ansible-galaxy install cavemandaveman.nifi