コード例 #1
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def push_tools():
  """ Push customed tools to cassandra_bin. """
  sudo("chown -R ubuntu:ubuntu %(root)s" % env)
  run("mkdir -p %(tmp_dir)s" % env)
  assert exists(env.cassandra_bin), "Cannot find cassandra bin folder!"
  deployments._rsync(env.bstore_scripts, env.tmp_dir)
  sudo("chmod 755 %(tmp_dir)s/scripts/*" % env)
  run("mv %(tmp_dir)s/scripts/* %(cassandra_bin)s" % env)
コード例 #2
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def _push_cassandra_config(token, seed):
  """ Initialize and push cassandra config for node """

  with settings(warn_only=True):
    run("pkill -9 -f CassandraDaemon")
  deployments._rsync("conf/cassandra-env.sh", "/mnt/cassandra_latest/conf/cassandra-env.sh")
  f = _generate_cassandra_yaml(token, seed)
  print "yaml file:", f
  put(f, "/mnt/cassandra_latest/conf/cassandra.yaml")
  deployments._rsync("conf/log4j-server.properties", "/mnt/cassandra_latest/conf/log4j-server.properties")
コード例 #3
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def push_topology_file(src_topology=env.src_topology):
  """
      Push topology file to nodes.

      $ fab -H ip1,ip2,ip3,ip4,ip5 push_topology_file

      It can be combined with print_hosts command, for example

      $ fab -P print_hosts:datacenter=bstore_staging push_topology_file
  """
  sudo("chown -R ubuntu:ubuntu %(root)s" % env)
  run("mkdir -p %(tmp_dir)s" % env)
  run("cp %(conf_dir)s/cassandra-topology.properties %(tmp_dir)s" % env)
  deployments._rsync(src_topology, "%(conf_dir)s/cassandra-topology.properties" % env)
コード例 #4
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def _deploy_cassandra_build(bin, cassandra_local_tar, cassandra_version, datacenter, realm='*', region="us-east-1", seeds='', verbose=False, project = "bloomstore", roleval = "backend"):
  """ Deploy the customed built cassandra binary to a temp folder. """
  sudo("chown -R ubuntu:ubuntu %(root)s" % env)
  tmp_folder = env.tmp_dir
  run("mkdir -p %(tmp_folder)s" % locals())
  print green("Downloading the build %(bin)s..." % locals())
  run("s3cmd get --force %(bin)s %(tmp_folder)s/%(cassandra_local_tar)s" % locals(), quiet=True)
  run("tar xvzf %(tmp_folder)s/%(cassandra_local_tar)s -C %(tmp_folder)s; rm %(tmp_folder)s/%(cassandra_local_tar)s" % locals(), quiet=True)
  deployments._rsync("conf/cassandra-env.sh", "%(tmp_folder)s/%(cassandra_version)s/conf/cassandra-env.sh" % locals())
  # if the client does not specify the seeds, it will try to figure it out from datacenter and realm
  if not seeds:
    seeds = ','.join(deployments._get_relevant_hosts(datacenter=datacenter, realm=realm, region=region, private_ip=True))
  print green("Seeds: " + seeds)
  installed_dir = "%(tmp_folder)s/%(cassandra_version)s" % locals()
  _setup_cassandra(datacenter, seeds, project, roleval, installed_dir)
  return installed_dir
コード例 #5
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def _push_cassandra_config(seed, project, roleval, installed_dir=env.cassandra_installed_dir):
  """ Initialize and push cassandra config for node """

  deployments._rsync("conf/cassandra-env.sh", "%s/conf/cassandra-env.sh" % installed_dir)
  f = _generate_cassandra_yaml(seed, project, roleval)
  print "yaml file:", f
  put(f, "%s/conf/cassandra.yaml" % installed_dir)
  deployments._rsync("conf/log4j-server.properties", "%s/conf/log4j-server.properties" % installed_dir)
  deployments._rsync(env.src_topology, "%s/conf/cassandra-topology.properties" % installed_dir)
コード例 #6
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def _deploy_monitor():
  """
  Deploy monitoring
  """
  deployments._deploy_munin()

  deployments._rsync("../../scripts/ops-tools/monitoring/nrpe-ub.cfg", "/tmp")
  deployments._rsync("../../scripts/ops-tools/monitoring/server-configs/nagios-plugins/lib/", "/tmp/nagios_plugins")
  deployments._rsync("../../scripts/ops-tools/monitoring/server-configs/nagios-plugins/config/", "/tmp/nagios_config")

  deployments._install_nagios()
コード例 #7
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def setup_ganglia(datacenter, installed_dir=env.cassandra_installed_dir):
  """
  Install ganglia monitoring for Cassandra
  staging backend:  port 8662
  staging frontend: port 8663
  prod backend:     port 8664
  prod frontend:    port 8665
  """
  try:
    ganglia_port = datacenter_ganglia_ports[datacenter]
  except KeyError as err:
    print red("Cannot find matching ganglia port: {}".format(err))
    return

  print yellow("Installing ganglia monitoring using port " + ganglia_port + "...")

  lib_dir = os.path.join(installed_dir, "lib")
  conf_dir = os.path.join(installed_dir, "conf")

  sudo("apt-get update")
  with settings(warn_only=True):
    sudo("apt-get install -y --force-yes ganglia-monitor")
  deployments._rsync("$BR_TOP/tools/3rd_party_libs/cassandra/jmxetric-1.0.4.jar", "%s/" % lib_dir)
  deployments._rsync("$BR_TOP/tools/3rd_party_libs/cassandra/gmetric4j-1.0.3.jar", "%s/" % lib_dir)
  deployments._rsync("$BR_TOP/tools/3rd_party_libs/cassandra/oncrpc-1.0.7.jar", "%s/" % lib_dir)
  deployments._rsync("conf/cassandra-env.sh", "%s/cassandra-env.sh" % env.tmp_dir)
  deployments._rsync("conf/jmxetric.xml", "%s/jmxetric.xml" % env.tmp_dir)
  deployments._rsync("conf/ganglia/gmond.conf", "%s/gmond.conf" % env.tmp_dir)
  deployments._rsync("conf/ganglia/conf.d/modpython.conf", "%s/modpython.conf" % env.tmp_dir)
  deployments._rsync("conf/ganglia/conf.d/simple_diskstats.conf", "%s/simple_diskstats.conf" % env.tmp_dir)
  deployments._rsync("conf/ganglia/python_modules/simple_diskstats.py", "%s/simple_diskstats.py" % env.tmp_dir)
  sudo("mv %s/cassandra-env.sh %s/cassandra-env.sh" % (env.tmp_dir, conf_dir))
  sudo("mv %s/jmxetric.xml %s/jmxetric.xml" % (env.tmp_dir, conf_dir))
  sudo("mv %s/gmond.conf /etc/ganglia/gmond.conf" % env.tmp_dir)
  sudo("mkdir -p /etc/ganglia/conf.d 1>/dev/null")
  sudo("mv %s/modpython.conf /etc/ganglia/conf.d/modpython.conf" % env.tmp_dir)
  sudo("mv %s/simple_diskstats.conf /etc/ganglia/conf.d/simple_diskstats.conf" % env.tmp_dir)
  sudo("mkdir -p /usr/lib/ganglia/python_modules 1>/dev/null")
  sudo("mv %s/simple_diskstats.py /usr/lib/ganglia/python_modules/simple_diskstats.py" % env.tmp_dir)
  sudo("sed -i -e s/'<SEND_PORT>'/" + ganglia_port + "/g %s/cassandra-env.sh" % conf_dir)
  sudo("sed -i -e s/'<SEND_PORT>'/" + ganglia_port + "/g %s/jmxetric.xml" % conf_dir)
  sudo("sed -i -e s/'<SEND_PORT>'/" + ganglia_port + "/g /etc/ganglia/gmond.conf")
  sudo("sed -i -e s/'<HOST_LOCATION>'/" + env.host + "/g /etc/ganglia/gmond.conf")

  sudo("sudo /etc/init.d/ganglia-monitor restart")
コード例 #8
0
ファイル: fabfile.py プロジェクト: fei-chen/AmberAlert
def _push_restart_script():
  """ Push the restart script to the cassandra node at /mnt location """
  deployments._rsync("./restart.sh", "/mnt/cassandra_latest/bin/")
  deployments._rsync("./stop.sh", "/mnt/cassandra_latest/bin/")