示例#1
0
  def __init__(self):
    super(JDKSetupLinux, self).__init__()
    self.JDK_DEFAULT_CONFIGS = [
      JDKRelease("jdk1.8", "Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8",
                 "http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u112-linux-x64.tar.gz", "jdk-8u112-linux-x64.tar.gz",
                 "http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip", "jce_policy-8.zip",
                 AmbariPath.get("/usr/jdk64/jdk1.8.0_112"),
                 "(jdk.*)/jre")
    ]

    self.jdks = self.JDK_DEFAULT_CONFIGS
    self.custom_jdk_number = len(self.jdks)

    self.JAVA_BIN = "java"

    self.CREATE_JDK_DIR_CMD = "/bin/mkdir -p {0}"
    self.CHMOD_JDK_DIR_CMD = "chmod a+x {0}"
    self.SET_JCE_PERMISSIONS = "chown {0} {1}/{2}/*"
    self.SET_JCE_JAR_MODE = "chmod 664 {0}/{1}/{2}"
    self.SET_JCE_FILE_MODE = "chmod 644 {0}/{1}/{2}"
    # use --no-same-owner when running as root to prevent uucp as the user (AMBARI-6478)
    self.UNTAR_JDK_ARCHIVE = "tar --no-same-owner -xvf {0}"
示例#2
0
SERVER_PING_ATTEMPTS_WINDOWS = 4

SERVER_SEARCH_PATTERN = "org.apache.ambari.server.controller.AmbariServer"

EXITCODE_NAME = "ambari-server.exitcode"

CHECK_DATABASE_SKIPPED_PROPERTY = "check_database_skipped"

AMBARI_SERVER_DIE_MSG = "Ambari Server java process died with exitcode {0}. Check {1} for more information."
AMBARI_SERVER_NOT_STARTED_MSG = "Ambari Server java process hasn't been started or can't be determined."

# linux open-file limit
ULIMIT_OPEN_FILES_KEY = 'ulimit.open.files'
ULIMIT_OPEN_FILES_DEFAULT = 10000

AMBARI_ENV_FILE = AmbariPath.get("/var/lib/ambari-server/ambari-env.sh")


@OsFamilyFuncImpl(OSConst.WINSRV_FAMILY)
def ensure_server_security_is_configured():
    pass


@OsFamilyFuncImpl(OsFamilyImpl.DEFAULT)
def ensure_server_security_is_configured():
    if not is_root():
        print "Unable to check firewall status when starting without root privileges."
        print "Please do not forget to disable or adjust firewall if needed"


def get_ulimit_open_files(properties):
示例#3
0
class PGConfig(LinuxDBMSConfig):
  # PostgreSQL settings
  SETUP_DB_CMD = [AMBARI_SUDO_BINARY, 'su', 'postgres', '-', 
                  '--command=psql -f {0} -v username=\'"{1}"\' -v password="******" -v dbname="{3}"']
  UPGRADE_STACK_CMD = [AMBARI_SUDO_BINARY, 'su', 'postgres',
                       '--command=psql -f {0} -v stack_name="\'{1}\'"  -v stack_version="\'{2}\'" -v dbname="{3}"']

  CHANGE_OWNER_COMMAND = [AMBARI_SUDO_BINARY, 'su', 'postgres', '-',
                          '--command=' + AmbariPath.get("/var/lib/ambari-server/resources/scripts/change_owner.sh") + ' -d {0} -s {1} -o {2}']

  PG_ERROR_BLOCKED = "is being accessed by other users"
  PG_STATUS_RUNNING = None
  SERVICE_CMD = "/usr/bin/env service"
  PG_SERVICE_NAME = "postgresql"
  PG_HBA_DIR = None

  PG_ST_CMD = "%s %s status" % (SERVICE_CMD, PG_SERVICE_NAME)
  if os.path.isfile("/usr/bin/postgresql-setup"):
      PG_INITDB_CMD = "/usr/bin/postgresql-setup initdb"
  else:
      PG_INITDB_CMD = "%s %s initdb" % (SERVICE_CMD, PG_SERVICE_NAME)

  PG_START_CMD = "%s %s start" % (SERVICE_CMD, PG_SERVICE_NAME)
  PG_RESTART_CMD = "%s %s restart" % (SERVICE_CMD, PG_SERVICE_NAME)
  PG_HBA_RELOAD_CMD = AMBARI_SUDO_BINARY + " su postgres -l -c '%s %s reload'" % (SERVICE_CMD, PG_SERVICE_NAME)

  PG_HBA_CONF_FILE = None
  PG_HBA_CONF_FILE_BACKUP = None
  POSTGRESQL_CONF_FILE = None

  POSTGRES_EMBEDDED_INIT_FILE = AmbariPath.get("/var/lib/ambari-server/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql")
  POSTGRES_EMBEDDED_DROP_FILE = AmbariPath.get("/var/lib/ambari-server/resources/Ambari-DDL-Postgres-EMBEDDED-DROP.sql")

  POSTGRES_INIT_FILE = AmbariPath.get("/var/lib/ambari-server/resources/Ambari-DDL-Postgres-CREATE.sql")
  POSTGRES_DROP_FILE = AmbariPath.get("/var/lib/ambari-server/resources/Ambari-DDL-Postgres-DROP.sql")

  def __init__(self, options, properties, storage_type):
    super(PGConfig, self).__init__(options, properties, storage_type)

    #Init the database configuration data here, if any
    self.dbms = "postgres"
    self.dbms_full_name = "PostgreSQL"
    self.driver_class_name = "org.postgresql.Driver"
    self.driver_file_name = "postgresql-jdbc.jar"

    self.database_storage_name = "Database"

    # PostgreSQL seems to require additional schema coordinates
    self.postgres_schema = DBMSConfig._init_member_with_prop_default(options, "postgres_schema",
                                                                     properties, JDBC_POSTGRES_SCHEMA_PROPERTY, self.database_name)
    self.database_port = DBMSConfig._init_member_with_prop_default(options, "database_port",
                                                                   properties, JDBC_PORT_PROPERTY, "5432")

    self.database_url_pattern = "jdbc:postgresql://{0}:{1}/{2}"
    self.database_url_pattern_alt = "jdbc:postgresql://{0}:{1}/{2}"

    self.JDBC_DRIVER_INSTALL_MSG = 'Before starting Ambari Server, ' \
                                   'you must copy the {0} JDBC driver JAR file to {1}.'.format(
        self.dbms_full_name, configDefaults.JAVA_SHARE_PATH)

    self._is_user_changed = False

    if self.persistence_type == STORAGE_TYPE_LOCAL:
      PGConfig.PG_STATUS_RUNNING = get_postgre_running_status()
      PGConfig.PG_HBA_DIR = get_postgre_hba_dir(OS_FAMILY)

      PGConfig.PG_HBA_CONF_FILE = os.path.join(PGConfig.PG_HBA_DIR, "pg_hba.conf")
      PGConfig.PG_HBA_CONF_FILE_BACKUP = os.path.join(PGConfig.PG_HBA_DIR, "pg_hba_bak.conf.old")
      PGConfig.POSTGRESQL_CONF_FILE = os.path.join(PGConfig.PG_HBA_DIR, "postgresql.conf")

      postgres_init_file_default = PGConfig.POSTGRES_EMBEDDED_INIT_FILE
      postgres_drop_file_default = PGConfig.POSTGRES_EMBEDDED_DROP_FILE
    else:
      postgres_init_file_default = PGConfig.POSTGRES_INIT_FILE
      postgres_drop_file_default = PGConfig.POSTGRES_DROP_FILE
    self.init_script_file = DBMSConfig._init_member_with_default(options, "init_script_file",
                                                                 postgres_init_file_default)
    self.drop_tables_script_file = DBMSConfig._init_member_with_default(options, "drop_script_file",
                                                                        postgres_drop_file_default)
    self.client_tool_usage_pattern = 'su -postgres --command=psql -f {0} -v username=\'"{1}"\' -v password="******"'

  #
  # Public methods
  #
  def ensure_dbms_is_running(self, options, properties, scmStatus=None):
    if self._is_local_database():
      if is_root():
        (pg_status, retcode, out, err) = PGConfig._check_postgre_up()
        if not retcode == 0:
          err = 'Unable to start PostgreSQL server. Status {0}. {1}. Exiting'.format(pg_status, err)
          raise FatalException(retcode, err)
      else:
        print "Unable to check PostgreSQL server status when starting " \
              "without root privileges."
        print "Please do not forget to start PostgreSQL server."

  #
  # Private implementation
  #
  # Supporting remote server for all the DB types. Supporting local server only for PostgreSQL.
  def _setup_local_server(self, properties):
    # check if jdbc user is changed
    self._is_user_changed = PGConfig._is_jdbc_user_changed(self.database_username)
    print 'Default properties detected. Using built-in database.'
    self._store_local_properties(properties)

  def _create_postgres_lock_directory(self):
    postgres_user_uid = None
    try:
      postgres_user_uid = pwd.getpwnam("postgres").pw_uid
    except KeyError:
      print "WARNING: Unable to create /var/run/postgresql directory, because user [postgres] doesn't exist. Potentially," \
            " postgresql service start can be failed."
      return

    try:
      if not os.path.isdir("/var/run/postgresql"):
        os.mkdir("/var/run/postgresql")
    except Exception as e:
      print "WARNING: Unable to create /var/run/postgresql directory. Potentially," \
            " postgresql service start can be failed."
      print "Unexpected error: " + str(e)
      return

    if postgres_user_uid:
      os.chown("/var/run/postgresql", postgres_user_uid, -1)

  def _setup_local_database(self):
    print 'Checking PostgreSQL...'
    (pg_status, retcode, out, err) = PGConfig._check_postgre_up()
    if not retcode == 0:
      err = 'Unable to start PostgreSQL server. Exiting'
      raise FatalException(retcode, err)
    print 'Configuring local database...'
    retcode, out, err = self._setup_db()
    if not retcode == 0:
      err = 'Running database init script failed. Exiting.'
      raise FatalException(retcode, err)
    if self._is_user_changed:
      #remove backup for pg_hba in order to reconfigure postgres
      remove_file(PGConfig.PG_HBA_CONF_FILE_BACKUP)
    print 'Configuring PostgreSQL...'
    retcode, out, err = self._configure_postgres()
    if not retcode == 0:
      err = 'Unable to configure PostgreSQL server. Exiting'
      raise FatalException(retcode, err)

  def _reset_local_database(self):
    #force reset if silent option provided
    if get_silent():
      default = "yes"
    else:
      default = "no"

    # Run automatic reset only for embedded DB
    okToRun = get_YN_input("Confirm server reset [yes/no]({0})? ".format(default), get_silent())
    if not okToRun:
      err = "Ambari Server 'reset' cancelled"
      raise FatalException(1, err)

    print "Resetting the Server database..."

    dbname = self.database_name
    filename = self.drop_tables_script_file
    username = self.database_username
    password = self.database_password
    command = PGConfig.SETUP_DB_CMD[:]
    command[-1] = command[-1].format(filename, username, password, dbname)
    drop_retcode, drop_outdata, drop_errdata = run_os_command(command)
    if not drop_retcode == 0:
      raise FatalException(1, drop_errdata)
    if drop_errdata and PGConfig.PG_ERROR_BLOCKED in drop_errdata:
      raise FatalException(1, "Database is in use. Please, make sure all connections to the database are closed")
    if drop_errdata and get_verbose():
      print_warning_msg(drop_errdata)
    print_info_msg("About to run database setup")
    retcode, outdata, errdata = self._setup_db()
    if errdata and get_verbose():
      print_warning_msg(errdata)
    if (errdata and 'ERROR' in errdata.upper()) or (drop_errdata and 'ERROR' in drop_errdata.upper()):
      err = "Non critical error in DDL"
      if not get_verbose():
        err += ", use --verbose for more information"
      raise NonFatalException(err)

  def _reset_remote_database(self):
    super(PGConfig, self)._reset_remote_database()

    raise NonFatalException("Please set DB password to PGPASSWORD env variable before running DDL`s!")

  def _is_jdbc_driver_installed(self, properties):
    return 0

  def _configure_database_name(self):
    self.database_name = LinuxDBMSConfig._get_validated_db_name(self.database_storage_name, self.database_name)
    self.postgres_schema = PGConfig._get_validated_db_schema(self.postgres_schema)
    return True

  def _get_remote_script_line(self, scriptFile):
    os.environ["PGPASSWORD"] = self.database_password
    return "psql -h {0} -p {1} -d {2} -U {3} -f {4} -v username='******'".format(
      self.database_host,
      self.database_port,
      self.database_name,
      self.database_username,
      scriptFile
    )

  @staticmethod
  def _get_validated_db_schema(postgres_schema):
    return get_validated_string_input(
        "Postgres schema (" + postgres_schema + "): ",
        postgres_schema,
        "^[a-zA-Z0-9_\-]*$",
        "Invalid schema name.",
        False, allowEmpty=True
    )

  # Check if jdbc user is changed
  @staticmethod
  def _is_jdbc_user_changed(database_username):
    properties = get_ambari_properties()
    if properties == -1:
      print_error_msg("Error getting ambari properties")
      return None

    previos_user = get_value_from_properties(properties, JDBC_USER_NAME_PROPERTY, "")

    if previos_user and database_username:
      if previos_user != database_username:
        return True
      else:
        return False

    return None

  # Store local database connection properties
  def _store_local_properties(self, properties):
    properties.removeOldProp(JDBC_DATABASE_PROPERTY)
    properties.removeOldProp(JDBC_DATABASE_NAME_PROPERTY)
    properties.removeOldProp(JDBC_POSTGRES_SCHEMA_PROPERTY)
    properties.removeOldProp(JDBC_HOSTNAME_PROPERTY)
    properties.removeOldProp(JDBC_RCA_DRIVER_PROPERTY)
    properties.removeOldProp(JDBC_RCA_URL_PROPERTY)
    properties.removeOldProp(JDBC_PORT_PROPERTY)
    properties.removeOldProp(JDBC_DRIVER_PROPERTY)
    properties.removeOldProp(JDBC_URL_PROPERTY)

    # Store the properties
    properties.process_pair(PERSISTENCE_TYPE_PROPERTY, self.persistence_type)
    properties.process_pair(JDBC_DATABASE_PROPERTY, self.dbms)
    properties.process_pair(JDBC_DATABASE_NAME_PROPERTY, self.database_name)
    properties.process_pair(JDBC_POSTGRES_SCHEMA_PROPERTY, self.postgres_schema)
    properties.process_pair(JDBC_USER_NAME_PROPERTY, self.database_username)

    # connection pooling (internal JPA by default)
    properties.process_pair(JDBC_CONNECTION_POOL_TYPE, "internal")

    self._store_password_property(properties, JDBC_PASSWORD_PROPERTY)


  @staticmethod
  def _get_postgre_status():
    retcode, out, err = run_os_command(PGConfig.PG_ST_CMD)
    # on RHEL and SUSE PG_ST_COMD returns RC 0 for running and 3 for stoppped
    if retcode == 0:
      pg_status = PGConfig.PG_STATUS_RUNNING
    else:
      if retcode == 3:
        pg_status = "stopped"
      else:
        pg_status = None
    return pg_status, retcode, out, err

  @staticmethod
  def _check_postgre_up():
    pg_status, retcode, out, err = PGConfig._get_postgre_status()
    if pg_status == PGConfig.PG_STATUS_RUNNING:
      print_info_msg("PostgreSQL is running")
      return pg_status, 0, out, err
    else:
      # run initdb only on non ubuntu systems as ubuntu does not have initdb cmd.
      if not OSCheck.is_ubuntu_family():
        print "Running initdb: This may take up to a minute."
        retcode, out, err = run_os_command(PGConfig.PG_INITDB_CMD)
        if retcode == 0:
          print out
      print "About to start PostgreSQL"
      try:
        process = subprocess.Popen(PGConfig.PG_START_CMD.split(' '),
                                   stdout=subprocess.PIPE,
                                   stdin=subprocess.PIPE,
                                   stderr=subprocess.PIPE
        )
        if OSCheck.is_suse_family():
          time.sleep(20)
          result = process.poll()
          print_info_msg("Result of postgres start cmd: " + str(result))
          if result is None:
            process.kill()
            pg_status, retcode, out, err = PGConfig._get_postgre_status()
          else:
            retcode = result
        else:
          out, err = process.communicate()
          retcode = process.returncode
          pg_status, retcode, out, err = PGConfig._get_postgre_status()
        if pg_status == PGConfig.PG_STATUS_RUNNING:
          print_info_msg("Postgres process is running. Returning...")
          return pg_status, 0, out, err
      except (Exception), e:
        pg_status, retcode, out, err = PGConfig._get_postgre_status()
        if pg_status == PGConfig.PG_STATUS_RUNNING:
          return pg_status, 0, out, err
        else:
          print_error_msg("Postgres start failed. " + str(e))
      return pg_status, retcode, out, err
示例#4
0
def init_parser_options(parser):
  parser.add_option('-f', '--init-script-file', default=None,
                    help="File with setup script")
  parser.add_option('-r', '--drop-script-file', default=None,
                    help="File with drop script")
  parser.add_option('-u', '--upgrade-script-file', default=AmbariPath.get("/var/lib/"
                                                           "ambari-server/resources/upgrade/ddl/"
                                                           "Ambari-DDL-Postgres-UPGRADE-1.3.0.sql"),
                    help="File with upgrade script")
  parser.add_option('-t', '--upgrade-stack-script-file', default=AmbariPath.get("/var/lib/"
                                                                 "ambari-server/resources/upgrade/dml/"
                                                                 "Ambari-DML-Postgres-UPGRADE_STACK.sql"),
                    help="File with stack upgrade script")
  parser.add_option('-j', '--java-home', default=None,
                    help="Use specified java_home.  Must be valid on all hosts")
  parser.add_option("-v", "--verbose",
                    action="store_true", dest="verbose", default=False,
                    help="Print verbose status messages")
  parser.add_option("-s", "--silent",
                    action="store_true", dest="silent", default=False,
                    help="Silently accepts default prompt values")
  parser.add_option('-g', '--debug', action="store_true", dest='debug', default=False,
                    help="Start ambari-server in debug mode")
  parser.add_option('-y', '--suspend-start', action="store_true", dest='suspend_start', default=False,
                    help="Freeze ambari-server Java process at startup in debug mode")
  parser.add_option('--all', action="store_true", default=False, help="LDAP sync all option.  Synchronize all LDAP users and groups.",
                    dest="ldap_sync_all")
  parser.add_option('--existing', action="store_true", default=False,
                    help="LDAP sync existing option.  Synchronize existing Ambari users and groups only.", dest="ldap_sync_existing")
  parser.add_option('--users', default=None, help="LDAP sync users option. Specifies the path to a CSV file of user names to be synchronized.",
                    dest="ldap_sync_users")
  parser.add_option('--groups', default=None, help="LDAP sync groups option.  Specifies the path to a CSV file of group names to be synchronized.",
                    dest="ldap_sync_groups")
  parser.add_option('--database', default=None, help="Database to use embedded|oracle|mysql|mssql|postgres|sqlanywhere", dest="dbms")
  parser.add_option('--databasehost', default=None, help="Hostname of database server", dest="database_host")
  parser.add_option('--databaseport', default=None, help="Database port", dest="database_port")
  parser.add_option('--databasename', default=None, help="Database/Service name or ServiceID",
                    dest="database_name")
  parser.add_option('--postgresschema', default=None, help="Postgres database schema name",
                    dest="postgres_schema")
  parser.add_option('--databaseusername', default=None, help="Database user login", dest="database_username")
  parser.add_option('--databasepassword', default=None, help="Database user password", dest="database_password")
  parser.add_option('--sidorsname', default="sname", help="Oracle database identifier type, Service ID/Service "
                                                          "Name sid|sname", dest="sid_or_sname")
  parser.add_option('--sqla-server-name', default=None, help="SQL Anywhere server name", dest="sqla_server_name")
  parser.add_option('--jdbc-driver', default=None, help="Specifies the path to the JDBC driver JAR file or archive " \
                                                        "with all required files(jdbc jar, libraries and etc), for the " \
                                                        "database type specified with the --jdbc-db option. " \
                                                        "Used only with --jdbc-db option. Archive is supported only for" \
                                                        " sqlanywhere database." ,
                    dest="jdbc_driver")
  parser.add_option('--jdbc-db', default=None, help="Specifies the database type [postgres|mysql|mssql|oracle|hsqldb|sqlanywhere] for the " \
                                                    "JDBC driver specified with the --jdbc-driver option. Used only with --jdbc-driver option.",
                    dest="jdbc_db")
  parser.add_option('--cluster-name', default=None, help="Cluster name", dest="cluster_name")
  parser.add_option('--version-display-name', default=None, help="Display name of desired repo version", dest="desired_repo_version")
  parser.add_option('--skip-properties-validation', action="store_true", default=False, help="Skip properties file validation", dest="skip_properties_validation")
  parser.add_option('--skip-database-check', action="store_true", default=False, help="Skip database consistency check", dest="skip_database_check")
  parser.add_option('--force-version', action="store_true", default=False, help="Force version to current", dest="force_repo_version")
  parser.add_option('--version', dest="stack_versions", default=None, action="append", type="string",
                    help="Specify stack version that needs to be enabled. All other stacks versions will be disabled")
  parser.add_option('--stack', dest="stack_name", default=None, type="string",
                    help="Specify stack name for the stack versions that needs to be enabled")
  parser.add_option("-d", "--from-date", dest="cleanup_from_date", default=None, type="string", help="Specify date for the cleanup process in 'yyyy-MM-dd' format")
  parser.add_option('--mpack', default=None,
                    help="Specified the path for management pack to be installed/upgraded",
                    dest="mpack_path")
  parser.add_option('--purge', action="store_true", default=False,
                    help="Purge existing resources specified in purge-list",
                    dest="purge")
  purge_resources = ",".join([STACK_DEFINITIONS_RESOURCE_NAME, SERVICE_DEFINITIONS_RESOURCE_NAME, MPACKS_RESOURCE_NAME])
  default_purge_resources = ",".join([STACK_DEFINITIONS_RESOURCE_NAME, MPACKS_RESOURCE_NAME])
  parser.add_option('--purge-list', default=default_purge_resources,
                    help="Comma separated list of resources to purge ({0}). By default ({1}) will be purged.".format(purge_resources, default_purge_resources),
                    dest="purge_list")
  parser.add_option('--force', action="store_true", default=False, help="Force install management pack", dest="force")

  parser.add_option('--ldap-url', default=None, help="Primary url for LDAP", dest="ldap_url")
  parser.add_option('--ldap-secondary-url', default=None, help="Secondary url for LDAP", dest="ldap_secondary_url")
  parser.add_option('--ldap-ssl', default=None, help="Use SSL [true/false] for LDAP", dest="ldap_ssl")
  parser.add_option('--ldap-user-class', default=None, help="User Attribute Object Class for LDAP", dest="ldap_user_class")
  parser.add_option('--ldap-user-attr', default=None, help="User Attribute Name for LDAP", dest="ldap_user_attr")
  parser.add_option('--ldap-group-class', default=None, help="Group Attribute Object Class for LDAP", dest="ldap_group_class")
  parser.add_option('--ldap-group-attr', default=None, help="Group Attribute Name for LDAP", dest="ldap_group_attr")
  parser.add_option('--ldap-member-attr', default=None, help="Group Membership Attribute Name for LDAP", dest="ldap_member_attr")
  parser.add_option('--ldap-dn', default=None, help="Distinguished name attribute for LDAP", dest="ldap_dn")
  parser.add_option('--ldap-base-dn', default=None, help="Base DN for LDAP", dest="ldap_base_dn")
  parser.add_option('--ldap-manager-dn', default=None, help="Manager DN for LDAP", dest="ldap_manager_dn")
  parser.add_option('--ldap-manager-password', default=None, help="Manager Password For LDAP", dest="ldap_manager_password")
  parser.add_option('--ldap-save-settings', action="store_true", default=None, help="Save without review for LDAP", dest="ldap_save_settings")
  parser.add_option('--ldap-referral', default=None, help="Referral method [follow/ignore] for LDAP", dest="ldap_referral")
  parser.add_option('--ldap-bind-anonym', default=None, help="Bind anonymously [true/false] for LDAP", dest="ldap_bind_anonym")
  parser.add_option('--ldap-sync-admin-name', default=None, help="Username for LDAP sync", dest="ldap_sync_admin_name")
  parser.add_option('--ldap-sync-admin-password', default=None, help="Password for LDAP sync", dest="ldap_sync_admin_password")

  parser.add_option('--truststore-type', default=None, help="Type of TrustStore (jks|jceks|pkcs12)", dest="trust_store_type")
  parser.add_option('--truststore-path', default=None, help="Path of TrustStore", dest="trust_store_path")
  parser.add_option('--truststore-password', default=None, help="Password for TrustStore", dest="trust_store_password")
  parser.add_option('--truststore-reconfigure', action="store_true", default=None, help="Force to reconfigure TrustStore if exits", dest="trust_store_reconfigure")

  parser.add_option('--security-option', default=None,
                    help="Setup security option (setup-https|encrypt-password|setup-kerberos-jaas|setup-truststore|import-certificate)",
                    dest="security_option")
  parser.add_option('--api-ssl', default=None, help="Enable SSL for Ambari API [true/false]", dest="api_ssl")
  parser.add_option('--api-ssl-port', default=None, help="Client API SSL port", dest="api_ssl_port")
  parser.add_option('--import-cert-path', default=None, help="Path to Certificate (import)", dest="import_cert_path")
  parser.add_option('--import-cert-alias', default=None, help="Alias for the imported certificate", dest="import_cert_alias")
  parser.add_option('--import-key-path', default=None, help="Path to Private Key (import)", dest="import_key_path")
  parser.add_option('--pem-password', default=None, help="Password for Private Key", dest="pem_password")
  parser.add_option('--master-key', default=None, help="Master key for encrypting passwords", dest="master_key")
  parser.add_option('--master-key-persist', default=None, help="Persist master key [true/false]", dest="master_key_persist")
  parser.add_option('--jaas-principal', default=None, help="Kerberos principal for ambari server", dest="jaas_principal")
  parser.add_option('--jaas-keytab', default=None, help="Keytab path for Kerberos principal", dest="jaas_keytab")
示例#5
0
    def __init__(self, options):
        super(AmbariUserChecksLinux, self).__init__()

        self.NR_USER_CHANGE_PROMPT = "Ambari-server daemon is configured to run under user '{0}'. Change this setting [y/n] ({1})? "
        self.NR_USER_CUSTOMIZE_PROMPT = "Customize user account for ambari-server daemon [y/n] ({0})? "
        self.NR_DEFAULT_USER = getpass.getuser()

        self.NR_USERADD_CMD = 'useradd -M --comment "{1}" ' \
                              '--shell %s ' % locate_file('nologin', '/sbin') + '-d ' + AmbariPath.get('/var/lib/ambari-server/keys/') + ' {0}'
示例#6
0
limitations under the License.
'''

import sys
import zipfile
import os
from ambari_server.ambariPath import AmbariPath

# Default values are hardcoded here
BACKUP_PROCESS = 'backup'
RESTORE_PROCESS = 'restore'
SUPPORTED_PROCESSES = [BACKUP_PROCESS, RESTORE_PROCESS]

# The list of files where the ambari server state is kept on the filesystem
AMBARI_FILESYSTEM_STATE = [
    AmbariPath.get("/etc/ambari-server/conf"),
    AmbariPath.get("/var/lib/ambari-server/resources"),
    AmbariPath.get("/var/run/ambari-server/bootstrap/"),
    AmbariPath.get("/var/run/ambari-server/stack-recommendations")
]

# What to use when no path/archive is specified
DEFAULT_ARCHIVE = AmbariPath.get(
    "/var/lib/ambari-server/Ambari_State_Backup.zip")


# Responsible for managing the Backup/Restore process
class BackupRestore:
    def __init__(self, state_file_list, zipname, zip_folder_path):
        """
    Zip file creator
示例#7
0
def init_parser_options(parser):
    parser.add_option('-f',
                      '--init-script-file',
                      default=AmbariPath.get(
                          '/var/lib/ambari-server/'
                          'resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql'),
                      help="File with setup script")
    parser.add_option('-r',
                      '--drop-script-file',
                      default=AmbariPath.get(
                          "/var/lib/"
                          "ambari-server/resources/"
                          "Ambari-DDL-Postgres-EMBEDDED-DROP.sql"),
                      help="File with drop script")
    parser.add_option('-u',
                      '--upgrade-script-file',
                      default=AmbariPath.get(
                          "/var/lib/"
                          "ambari-server/resources/upgrade/ddl/"
                          "Ambari-DDL-Postgres-UPGRADE-1.3.0.sql"),
                      help="File with upgrade script")
    parser.add_option('-t',
                      '--upgrade-stack-script-file',
                      default=AmbariPath.get(
                          "/var/lib/"
                          "ambari-server/resources/upgrade/dml/"
                          "Ambari-DML-Postgres-UPGRADE_STACK.sql"),
                      help="File with stack upgrade script")
    parser.add_option(
        '-j',
        '--java-home',
        default=None,
        help="Use specified java_home.  Must be valid on all hosts")
    parser.add_option("-v",
                      "--verbose",
                      action="store_true",
                      dest="verbose",
                      default=False,
                      help="Print verbose status messages")
    parser.add_option("-s",
                      "--silent",
                      action="store_true",
                      dest="silent",
                      default=False,
                      help="Silently accepts default prompt values")
    parser.add_option('-g',
                      '--debug',
                      action="store_true",
                      dest='debug',
                      default=False,
                      help="Start ambari-server in debug mode")
    parser.add_option(
        '-y',
        '--suspend-start',
        action="store_true",
        dest='suspend_start',
        default=False,
        help="Freeze ambari-server Java process at startup in debug mode")
    parser.add_option(
        '--all',
        action="store_true",
        default=False,
        help="LDAP sync all option.  Synchronize all LDAP users and groups.",
        dest="ldap_sync_all")
    parser.add_option(
        '--existing',
        action="store_true",
        default=False,
        help=
        "LDAP sync existing option.  Synchronize existing Ambari users and groups only.",
        dest="ldap_sync_existing")
    parser.add_option(
        '--users',
        default=None,
        help=
        "LDAP sync users option. Specifies the path to a CSV file of user names to be synchronized.",
        dest="ldap_sync_users")
    parser.add_option(
        '--groups',
        default=None,
        help=
        "LDAP sync groups option.  Specifies the path to a CSV file of group names to be synchronized.",
        dest="ldap_sync_groups")
    parser.add_option(
        '--database',
        default=None,
        help="Database to use embedded|oracle|mysql|mssql|postgres|sqlanywhere",
        dest="dbms")
    parser.add_option('--databasehost',
                      default=None,
                      help="Hostname of database server",
                      dest="database_host")
    parser.add_option('--databaseport',
                      default=None,
                      help="Database port",
                      dest="database_port")
    parser.add_option('--databasename',
                      default=None,
                      help="Database/Service name or ServiceID",
                      dest="database_name")
    parser.add_option('--postgresschema',
                      default=None,
                      help="Postgres database schema name",
                      dest="postgres_schema")
    parser.add_option('--databaseusername',
                      default=None,
                      help="Database user login",
                      dest="database_username")
    parser.add_option('--databasepassword',
                      default=None,
                      help="Database user password",
                      dest="database_password")
    parser.add_option(
        '--sidorsname',
        default="sname",
        help="Oracle database identifier type, Service ID/Service "
        "Name sid|sname",
        dest="sid_or_sname")
    parser.add_option('--sqla-server-name',
                      default=None,
                      help="SQL Anywhere server name",
                      dest="sqla_server_name")
    parser.add_option('--jdbc-driver', default=None, help="Specifies the path to the JDBC driver JAR file or archive " \
                                                          "with all required files(jdbc jar, libraries and etc), for the " \
                                                          "database type specified with the --jdbc-db option. " \
                                                          "Used only with --jdbc-db option. Archive is supported only for" \
                                                          " sqlanywhere database." ,
                      dest="jdbc_driver")
    parser.add_option('--jdbc-db', default=None, help="Specifies the database type [postgres|mysql|mssql|oracle|hsqldb|sqlanywhere] for the " \
                                                      "JDBC driver specified with the --jdbc-driver option. Used only with --jdbc-driver option.",
                      dest="jdbc_db")
    parser.add_option('--cluster-name',
                      default=None,
                      help="Cluster name",
                      dest="cluster_name")
    parser.add_option('--version-display-name',
                      default=None,
                      help="Display name of desired repo version",
                      dest="desired_repo_version")
    parser.add_option('--skip-properties-validation',
                      action="store_true",
                      default=False,
                      help="Skip properties file validation",
                      dest="skip_properties_validation")
    parser.add_option('--skip-database-validation',
                      action="store_true",
                      default=False,
                      help="Skip database consistency validation",
                      dest="skip_database_validation")
    parser.add_option('--force-version',
                      action="store_true",
                      default=False,
                      help="Force version to current",
                      dest="force_repo_version")
    parser.add_option(
        '--version',
        dest="stack_versions",
        default=None,
        action="append",
        type="string",
        help=
        "Specify stack version that needs to be enabled. All other stacks versions will be disabled"
    )
    parser.add_option(
        '--stack',
        dest="stack_name",
        default=None,
        type="string",
        help=
        "Specify stack name for the stack versions that needs to be enabled")