Repository: ambari Updated Branches: refs/heads/branch-2.5 6b1d05ae8 -> a8aa8ab17
AMBARI-19360 : Ranger policies not syncing for storm, kafka and knox (Vishal Suvagia via mugdha) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a8aa8ab1 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a8aa8ab1 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a8aa8ab1 Branch: refs/heads/branch-2.5 Commit: a8aa8ab174185f5ecd0859db187f57891bf84a8f Parents: 6b1d05a Author: Vishal Suvagia <vishalsuva...@yahoo.com> Authored: Fri Jan 13 11:13:46 2017 +0530 Committer: Mugdha Varadkar <mug...@apache.org> Committed: Fri Jan 13 12:41:10 2017 +0530 ---------------------------------------------------------------------- .../libraries/functions/constants.py | 1 + .../functions/setup_ranger_plugin_xml.py | 12 +++++++ .../KAFKA/0.8.1/package/scripts/params.py | 1 + .../0.8.1/package/scripts/setup_ranger_kafka.py | 6 ++++ .../0.5.0.2.2/package/scripts/params_linux.py | 1 + .../package/scripts/setup_ranger_knox.py | 9 +++++ .../STORM/0.9.1/package/scripts/params_linux.py | 1 + .../0.9.1/package/scripts/setup_ranger_storm.py | 35 +++++++++++++++++++- .../HDP/2.0.6/properties/stack_features.json | 5 +++ 9 files changed, 70 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-common/src/main/python/resource_management/libraries/functions/constants.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/constants.py b/ambari-common/src/main/python/resource_management/libraries/functions/constants.py index f4837fb..6fba224 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/constants.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/constants.py @@ -108,3 +108,4 @@ class StackFeature: RANGER_TAGSYNC_SSL_XML_SUPPORT="ranger_tagsync_ssl_xml_support" RANGER_SOLR_CONFIG_SUPPORT='ranger_solr_config_support' HIVE_INTERACTIVE_ATLAS_HOOK_REQUIRED="hive_interactive_atlas_hook_required" + CORE_SITE_FOR_RANGER_PLUGINS_SUPPORT='core_site_for_ranger_plugins' http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py b/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py index ba6061a..6561928 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py @@ -33,6 +33,7 @@ from resource_management.core.source import DownloadSource, InlineTemplate from resource_management.libraries.functions.ranger_functions_v2 import RangeradminV2 from resource_management.core.utils import PasswordString from resource_management.libraries.script.script import Script +from resource_management.libraries.functions.format import format def setup_ranger_plugin(component_select_name, service_name, previous_jdbc_jar, component_downloaded_custom_connector, component_driver_curl_source, @@ -215,3 +216,14 @@ def setup_ranger_plugin_keystore(service_name, audit_db_is_enabled, stack_versio group = component_group, mode = 0640 ) + + +def setup_core_site_for_required_plugins(component_user, component_group, create_core_site_path, config): + XmlConfig('core-site.xml', + conf_dir=create_core_site_path, + configurations=config['configurations']['core-site'], + configuration_attributes=config['configuration_attributes']['core-site'], + owner=component_user, + group=component_group, + mode=0644 + ) http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py index 41970f8..82849c8 100644 --- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/params.py @@ -58,6 +58,7 @@ version_for_stack_feature_checks = get_stack_feature_version(config) stack_supports_ranger_kerberos = check_stack_feature(StackFeature.RANGER_KERBEROS_SUPPORT, version_for_stack_feature_checks) stack_supports_ranger_audit_db = check_stack_feature(StackFeature.RANGER_AUDIT_DB_SUPPORT, version_for_stack_feature_checks) +stack_supports_core_site_for_ranger_plugin = check_stack_feature(StackFeature.CORE_SITE_FOR_RANGER_PLUGINS_SUPPORT, version_for_stack_feature_checks) # When downgrading the 'version' and 'current_version' are both pointing to the downgrade-target version # downgrade_from_version provides the source-version the downgrade is happening from http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/setup_ranger_kafka.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/setup_ranger_kafka.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/setup_ranger_kafka.py index 3a9f51e..528dec2 100644 --- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/setup_ranger_kafka.py +++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1/package/scripts/setup_ranger_kafka.py @@ -17,6 +17,7 @@ limitations under the License. from resource_management.core.logger import Logger from resource_management.core.resources import File, Execute from resource_management.libraries.functions.format import format +from resource_management.libraries.functions.setup_ranger_plugin_xml import setup_core_site_for_required_plugins def setup_ranger_kafka(): import params @@ -80,5 +81,10 @@ def setup_ranger_kafka(): group = params.user_group, mode = 0755 ) + if params.stack_supports_core_site_for_ranger_plugin and params.enable_ranger_kafka and params.has_namenode and params.security_enabled: + Logger.info("Stack supports core-site.xml creation for Ranger plugin, creating create core-site.xml from namenode configuraitions") + setup_core_site_for_required_plugins(component_user=params.kafka_user,component_group=params.user_group,create_core_site_path = params.conf_dir, config = params.config) + else: + Logger.info("Stack does not support core-site.xml creation for Ranger plugin, skipping core-site.xml configurations") else: Logger.info('Ranger admin not installed') http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py index 4a23bca..d245178 100644 --- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py +++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py @@ -60,6 +60,7 @@ version_for_stack_feature_checks = get_stack_feature_version(config) stack_supports_ranger_kerberos = check_stack_feature(StackFeature.RANGER_KERBEROS_SUPPORT, version_for_stack_feature_checks) stack_supports_ranger_audit_db = check_stack_feature(StackFeature.RANGER_AUDIT_DB_SUPPORT, version_for_stack_feature_checks) +stack_supports_core_site_for_ranger_plugin = check_stack_feature(StackFeature.CORE_SITE_FOR_RANGER_PLUGINS_SUPPORT, version_for_stack_feature_checks) # This is the version whose state is CURRENT. During an RU, this is the source version. # DO NOT format it since we need the build number too. http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/setup_ranger_knox.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/setup_ranger_knox.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/setup_ranger_knox.py index d4eb6b9..7601dfa 100644 --- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/setup_ranger_knox.py +++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/setup_ranger_knox.py @@ -18,6 +18,9 @@ limitations under the License. """ from resource_management.core.logger import Logger +from resource_management.libraries.functions.setup_ranger_plugin_xml import setup_core_site_for_required_plugins + + def setup_ranger_knox(upgrade_type=None): import params @@ -95,5 +98,11 @@ def setup_ranger_knox(upgrade_type=None): credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, stack_version_override = stack_version, skip_if_rangeradmin_down= not params.retryAble) + if params.stack_supports_core_site_for_ranger_plugin and params.enable_ranger_knox and params.has_namenode and params.security_enabled: + Logger.info("Stack supports core-site.xml creation for Ranger plugin, creating core-site.xml from namenode configuraitions") + setup_core_site_for_required_plugins(component_user=params.knox_user, component_group=params.knox_group,create_core_site_path = params.knox_conf_dir, config = params.config) + else: + Logger.info("Stack does not support core-site.xml creation for Ranger plugin, skipping core-site.xml configurations") + else: Logger.info('Ranger admin not installed') http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py index 67d5769..c167d7c 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/params_linux.py @@ -66,6 +66,7 @@ stack_version_formatted = status_params.stack_version_formatted stack_supports_ru = stack_version_formatted and check_stack_feature(StackFeature.ROLLING_UPGRADE, stack_version_formatted) stack_supports_storm_kerberos = stack_version_formatted and check_stack_feature(StackFeature.STORM_KERBEROS, stack_version_formatted) stack_supports_storm_ams = stack_version_formatted and check_stack_feature(StackFeature.STORM_AMS, stack_version_formatted) +stack_supports_core_site_for_ranger_plugin = check_stack_feature(StackFeature.CORE_SITE_FOR_RANGER_PLUGINS_SUPPORT, stack_version_formatted) # get the correct version to use for checking stack features version_for_stack_feature_checks = get_stack_feature_version(config) http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/setup_ranger_storm.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/setup_ranger_storm.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/setup_ranger_storm.py index caafd55..e81d62a 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/setup_ranger_storm.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/package/scripts/setup_ranger_storm.py @@ -18,6 +18,10 @@ limitations under the License. """ from resource_management.core.logger import Logger +from resource_management.libraries.functions.setup_ranger_plugin_xml import setup_core_site_for_required_plugins +from resource_management.libraries.resources.xml_config import XmlConfig +from resource_management.libraries.functions.format import format +from resource_management.core.resources import File, Directory def setup_ranger_storm(upgrade_type=None): """ @@ -93,8 +97,37 @@ def setup_ranger_storm(upgrade_type=None): plugin_security_properties=params.config['configurations']['ranger-storm-security'], plugin_security_attributes=params.config['configuration_attributes']['ranger-storm-security'], plugin_policymgr_ssl_properties=params.config['configurations']['ranger-storm-policymgr-ssl'], plugin_policymgr_ssl_attributes=params.config['configuration_attributes']['ranger-storm-policymgr-ssl'], component_list=['storm-client', 'storm-nimbus'], audit_db_is_enabled=params.xa_audit_db_is_enabled, - credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, + credential_file=params.credential_file, xa_audit_db_password=params.xa_audit_db_password, ssl_truststore_password=params.ssl_truststore_password, ssl_keystore_password=params.ssl_keystore_password, stack_version_override = stack_version, skip_if_rangeradmin_down= not params.retryAble) + + + site_files_create_path = format('{storm_component_home_dir}/extlib-daemon/ranger-storm-plugin-impl/conf') + Directory(site_files_create_path, + owner = params.storm_user, + group = params.user_group, + mode=0775, + create_parents = True, + cd_access = 'a' + ) + + if params.stack_supports_core_site_for_ranger_plugin and params.enable_ranger_storm and params.has_namenode and params.security_enabled: + Logger.info("Stack supports core-site.xml creation for Ranger plugin, creating create core-site.xml from namenode configuraitions") + setup_core_site_for_required_plugins(component_user=params.storm_user,component_group=params.user_group,create_core_site_path = site_files_create_path, config = params.config) + if len(params.namenode_hosts) > 1: + Logger.info('Ranger Storm plugin is enabled along with security and NameNode is HA , creating hdfs-site.xml') + XmlConfig("hdfs-site.xml", + conf_dir=site_files_create_path, + configurations=params.config['configurations']['hdfs-site'], + configuration_attributes=params.config['configuration_attributes']['hdfs-site'], + owner=params.storm_user, + group=params.user_group, + mode=0644 + ) + else: + Logger.info('Ranger Storm plugin is not enabled or security is disabled, removing hdfs-site.xml') + File(format('{site_files_create_path}/hdfs-site.xml'), action="delete") + else: + Logger.info("Stack does not support core-site.xml creation for Ranger plugin, skipping core-site.xml configurations") else: Logger.info('Ranger admin not installed') http://git-wip-us.apache.org/repos/asf/ambari/blob/a8aa8ab1/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json index c3044af..a753f89 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json +++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json @@ -343,6 +343,11 @@ "name": "hive_interactive_atlas_hook_required", "description": "Registering Atlas Hook for Hive Interactive.", "min_version": "2.6.0.0" + }, + { + "name": "core_site_for_ranger_plugins", + "description": "Adding core-site.xml in when Ranger plugin is enabled for Storm, Kafka, and Knox.", + "min_version": "2.6.0.0" } ] }