diff --git a/plugins/modules/ipadnsconfig.py b/plugins/modules/ipadnsconfig.py
index 4c9cf2d71a4652737adcf678bfc486d8b97dc465..0d4aa8764fc2c9c1b6a97acf21fb24b2a8e2ef20 100644
--- a/plugins/modules/ipadnsconfig.py
+++ b/plugins/modules/ipadnsconfig.py
@@ -97,11 +97,10 @@ RETURN = """
 """
 
 from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils._text import to_text
 from ansible.module_utils.ansible_freeipa_module import temp_kinit, \
-    temp_kdestroy, valid_creds, api_connect, api_command, \
+    temp_kdestroy, valid_creds, api_connect, \
     api_command_no_name, compare_args_ipa, module_params_get, \
-    gen_add_del_lists, is_ipv4_addr, is_ipv6_addr, ipalib_errors
+    is_ipv4_addr, is_ipv6_addr
 
 
 def find_dnsconfig(module):
diff --git a/plugins/modules/ipagroup.py b/plugins/modules/ipagroup.py
index 477c505185d0cfbe0b307110b2feaf1f04ee1775..10a611441894971643f42ef36ea271bb171656b7 100644
--- a/plugins/modules/ipagroup.py
+++ b/plugins/modules/ipagroup.py
@@ -221,7 +221,10 @@ def main():
     # Get parameters
 
     # general
-    ipaadmin_principal = module_params_get(ansible_module, "ipaadmin_principal")
+    ipaadmin_principal = module_params_get(
+        ansible_module,
+        "ipaadmin_principal",
+    )
     ipaadmin_password = module_params_get(ansible_module, "ipaadmin_password")
     names = module_params_get(ansible_module, "name")
 
diff --git a/plugins/modules/ipahost.py b/plugins/modules/ipahost.py
index 9b22f5bf69f0423df9084bc069c41d4bbf47f73d..42bd7e1faf6fbb1f6f246ae72a4c623839e88ee9 100644
--- a/plugins/modules/ipahost.py
+++ b/plugins/modules/ipahost.py
@@ -875,9 +875,11 @@ def main():
                 res_find_dnsrecord = find_dnsrecord(ansible_module, name)
             except ipalib_errors.NotFound as e:
                 msg = str(e)
-                if ip_address is None and \
-                   ("DNS is not configured" in msg or \
-                    "DNS zone not found" in msg):
+                dns_not_configured = "DNS is not configured" in msg
+                dns_zone_not_found = "DNS zone not found" in msg
+                if ip_address is None and (
+                    dns_not_configured or dns_zone_not_found
+                ):
                     # IP address(es) not given and no DNS support in IPA
                     # -> Ignore failure
                     # IP address(es) not given and DNS zone is not found
diff --git a/plugins/modules/ipauser.py b/plugins/modules/ipauser.py
index 73f16eff3edaf0d35770d414c5f2a6c42235a5d5..1867ea7be45313826e1caaf5e49df5f5527149cb 100644
--- a/plugins/modules/ipauser.py
+++ b/plugins/modules/ipauser.py
@@ -655,9 +655,9 @@ def check_parameters(module, state, action,
 
 def extend_emails(email, default_email_domain):
     if email is not None:
-        return [ "%s@%s" % (_email, default_email_domain)
-                 if "@" not in _email else _email
-                 for _email in email]
+        return ["%s@%s" % (_email, default_email_domain)
+                if "@" not in _email else _email
+                for _email in email]
     return email
 
 
diff --git a/roles/ipaclient/files/py3test.py b/roles/ipaclient/files/py3test.py
index d370b6870ab5a1be8e25ea7fd0abe4243f4fcd3d..6bf70ab588b48d69a82b624dd1053eb130e963e3 100644
--- a/roles/ipaclient/files/py3test.py
+++ b/roles/ipaclient/files/py3test.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python3
 
 # Test ipaclient python3 binding
-from ipaclient.install.client import SECURE_PATH
+from ipaclient.install.client import SECURE_PATH  # noqa: F401
 
 # Check ipapython version to be >= 4.6
 from ipapython.version import NUM_VERSION, VERSION
diff --git a/roles/ipaclient/library/ipaclient_api.py b/roles/ipaclient/library/ipaclient_api.py
index 5ce722a907718196d611f028af2641081e1200d2..865438f3e3e9425039bf33acd5409551a5bb666e 100644
--- a/roles/ipaclient/library/ipaclient_api.py
+++ b/roles/ipaclient/library/ipaclient_api.py
@@ -100,7 +100,6 @@ def main():
 
     realm = module.params.get('realm')
     hostname = module.params.get('hostname')
-    servers = module.params.get('servers')
     debug = module.params.get('debug')
 
     host_principal = 'host/%s@%s' % (hostname, realm)
diff --git a/roles/ipaclient/library/ipaclient_get_facts.py b/roles/ipaclient/library/ipaclient_get_facts.py
index 1492199bf6a1e20a51c44d5434b1caf10ec8d219..003715efd3926c88437f99106daed5654150b976 100644
--- a/roles/ipaclient/library/ipaclient_get_facts.py
+++ b/roles/ipaclient/library/ipaclient_get_facts.py
@@ -13,7 +13,7 @@ from ansible.module_utils.basic import AnsibleModule
 
 # pylint: disable=unused-import
 try:
-    from ipalib import api
+    from ipalib import api  # noqa: F401
 except ImportError:
     HAS_IPALIB = False
 else:
@@ -27,7 +27,7 @@ else:
         from ipapython import sysrestore
 
 try:
-    import ipaserver
+    import ipaserver  # noqa: F401
 except ImportError:
     HAS_IPASERVER = False
 else:
@@ -41,7 +41,7 @@ VAR_LIB_PKI_TOMCAT = "/var/lib/pki/pki-tomcat"
 def is_ntpd_configured():
     # ntpd is configured when sysrestore.state contains the line
     # [ntpd]
-    ntpd_conf_section = re.compile('^\s*\[ntpd\]\s*$')
+    ntpd_conf_section = re.compile(r'^\s*\[ntpd\]\s*$')
 
     try:
         with open(SERVER_SYSRESTORE_STATE) as f:
@@ -56,7 +56,7 @@ def is_ntpd_configured():
 def is_dns_configured():
     # dns is configured when /etc/named.conf contains the line
     # dyndb "ipa" "/usr/lib64/bind/ldap.so" {
-    bind_conf_section = re.compile('^\s*dyndb\s+"ipa"\s+"[^"]+"\s+{$')
+    bind_conf_section = re.compile(r'^\s*dyndb\s+"ipa"\s+"[^"]+"\s+{$')
 
     try:
         with open(NAMED_CONF) as f:
diff --git a/roles/ipaclient/library/ipaclient_get_otp.py b/roles/ipaclient/library/ipaclient_get_otp.py
index 7ec67dda2d4bd91d6e5d931cbb359ff3a4411830..f0c35c7d4592e88af71eb2e01225bf65d6e0e111 100644
--- a/roles/ipaclient/library/ipaclient_get_otp.py
+++ b/roles/ipaclient/library/ipaclient_get_otp.py
@@ -288,7 +288,6 @@ def main():
         supports_check_mode=True,
     )
 
-    principal = module.params.get('principal', 'admin')
     ccache = module.params.get('ccache')
     fqdn = unicode(module.params.get('fqdn'))
     state = module.params.get('state')
diff --git a/roles/ipareplica/files/py3test.py b/roles/ipareplica/files/py3test.py
index 8c60ded45310e55f903a564a5f8ba541fc136b7e..ffb009cd498fc5d17f346d4a7db9eb4327663fb7 100644
--- a/roles/ipareplica/files/py3test.py
+++ b/roles/ipareplica/files/py3test.py
@@ -2,9 +2,13 @@
 
 # Test ipaerver python3 binding
 try:
-    from ipaserver.install.server.replicainstall import install_check
+    from ipaserver.install.server.replicainstall import (  # noqa: F401
+        install_check,
+    )
 except ImportError:
-    from ipaserver.install.server.replicainstall import promote_check
+    from ipaserver.install.server.replicainstall import (  # noqa: F401
+        promote_check,
+    )
 
 # Check ipapython version to be >= 4.6
 from ipapython.version import NUM_VERSION, VERSION
diff --git a/roles/ipaserver/files/py3test.py b/roles/ipaserver/files/py3test.py
index 8f5c2d8516ea0f5bbe361c6b514e35b2833bfa63..701e342409ec1f13d17b5dcc5b4a83eb8d9695ac 100644
--- a/roles/ipaserver/files/py3test.py
+++ b/roles/ipaserver/files/py3test.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python3
 
 # Test ipaerver python3 binding
-from ipaserver.install.server.install import install_check
+from ipaserver.install.server.install import install_check   # noqa: F401
 
 # Check ipapython version to be >= 4.6
 from ipapython.version import NUM_VERSION, VERSION
diff --git a/setup.cfg b/setup.cfg
index b254a8e4bb5effd6b55ba7402715523a232cb46c..d73375ef107aa6ed6bd103690afd315d16f34138 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -20,3 +20,9 @@ data_files =
     /usr/share/ansible/roles/ipaclient = roles/ipaclient/*
     /usr/share/ansible/roles/ipaserver = roles/ipaserver/*
     /usr/share/ansible/roles/ipareplica = roles/ipareplica/*
+
+[flake8]
+extend-ignore = E203
+per-file-ignores =
+    plugins/*:E402
+    roles/*:E402