in lib/muchos/existing.py [0:0]
def sync(self):
config = self.config
print(
"Syncing ansible directory on {0} cluster proxy node".format(
config.cluster_name
)
)
host_vars = config.ansible_host_vars()
play_vars = config.ansible_play_vars()
for k, v in host_vars.items():
host_vars[k] = self.config.resolve_value(k, default=v)
for k, v in play_vars.items():
play_vars[k] = self.config.resolve_value(k, default=v)
with open(
path.join(config.deploy_path, "ansible/site.yml"), "w"
) as site_file:
print("- import_playbook: common.yml", file=site_file)
print("- import_playbook: zookeeper.yml", file=site_file)
print("- import_playbook: hadoop.yml", file=site_file)
if config.has_service("spark"):
print("- import_playbook: spark.yml", file=site_file)
if config.has_service("metrics"):
print("- import_playbook: metrics.yml", file=site_file)
print("- import_playbook: accumulo.yml", file=site_file)
if config.has_service("fluo"):
print("- import_playbook: fluo.yml", file=site_file)
if config.has_service("fluo_yarn"):
print("- import_playbook: fluo_yarn.yml", file=site_file)
if config.has_service("mesosmaster"):
print("- import_playbook: mesos.yml", file=site_file)
if config.has_service("swarmmanager"):
print("- import_playbook: docker.yml", file=site_file)
if config.has_service("elkserver"):
print("- import_playbook: elk.yml", file=site_file)
ansible_conf = path.join(config.deploy_path, "ansible/conf")
with open(path.join(ansible_conf, "hosts"), "w") as hosts_file:
print(
"[proxy]\n{0}".format(config.proxy_hostname()), file=hosts_file
)
print("\n[accumulomaster]", file=hosts_file)
for accu_host in config.get_service_hostnames("accumulomaster"):
print(accu_host, file=hosts_file)
print("\n[namenode]", file=hosts_file)
for nn_host in config.get_service_hostnames("namenode"):
print(nn_host, file=hosts_file)
print("\n[journalnode]", file=hosts_file)
for jn_host in config.get_service_hostnames("journalnode"):
print(jn_host, file=hosts_file)
print("\n[zkfc]", file=hosts_file)
for zkfc_host in config.get_service_hostnames("zkfc"):
print(zkfc_host, file=hosts_file)
print("\n[resourcemanager]", file=hosts_file)
for rm_host in config.get_service_hostnames("resourcemanager"):
print(rm_host, file=hosts_file)
if config.has_service("spark"):
print(
"\n[spark]\n{0}".format(
config.get_service_hostnames("spark")[0]
),
file=hosts_file,
)
if config.has_service("mesosmaster"):
print(
"\n[mesosmaster]\n{0}".format(
config.get_service_hostnames("mesosmaster")[0]
),
file=hosts_file,
)
if config.has_service("metrics"):
print(
"\n[metrics]\n{0}".format(
config.get_service_hostnames("metrics")[0]
),
file=hosts_file,
)
if config.has_service("swarmmanager"):
print(
"\n[swarmmanager]\n{0}".format(
config.get_service_hostnames("swarmmanager")[0]
),
file=hosts_file,
)
if config.has_service("elkserver"):
print(
"\n[elkserver]\n{0}".format(
config.get_service_hostnames("elkserver")[0]
),
file=hosts_file,
)
print("\n[zookeepers]", file=hosts_file)
for (index, zk_host) in enumerate(
config.get_service_hostnames("zookeeper"), start=1
):
print("{0} id={1}".format(zk_host, index), file=hosts_file)
if config.has_service("fluo"):
print("\n[fluo]", file=hosts_file)
for host in config.get_service_hostnames("fluo"):
print(host, file=hosts_file)
if config.has_service("fluo_yarn"):
print("\n[fluo_yarn]", file=hosts_file)
for host in config.get_service_hostnames("fluo_yarn"):
print(host, file=hosts_file)
print("\n[workers]", file=hosts_file)
for worker_host in config.get_service_hostnames("worker"):
print(worker_host, file=hosts_file)
print(
"\n[accumulo:children]\naccumulomaster\nworkers",
file=hosts_file,
)
print(
"\n[hadoop:children]\nnamenode\nresourcemanager"
"\nworkers\nzkfc\njournalnode",
file=hosts_file,
)
print("\n[nodes]", file=hosts_file)
for (private_ip, hostname) in config.get_private_ip_hostnames():
print(
"{0} ansible_ssh_host={1} node_type={2}".format(
hostname, private_ip, config.node_type(hostname)
),
file=hosts_file,
)
# Call the method for Azure cluster type to write additional
# specialized configs into the Ansible hosts file.
if config.cluster_type == "azure":
self.add_specialized_configs(hosts_file)
print("\n[all:vars]", file=hosts_file)
for (name, value) in sorted(host_vars.items()):
print("{0} = {1}".format(name, value), file=hosts_file)
with open(
path.join(config.deploy_path, "ansible/group_vars/all"), "w"
) as play_vars_file:
for (name, value) in sorted(play_vars.items()):
print("{0}: {1}".format(name, value), file=play_vars_file)
# copy keys file to ansible/conf (if it exists)
conf_keys = path.join(config.deploy_path, "conf/keys")
ansible_keys = path.join(ansible_conf, "keys")
if path.isfile(conf_keys):
shutil.copyfile(conf_keys, ansible_keys)
else:
open(ansible_keys, "w").close()
cmd = "rsync -az --delete -e \"ssh -o 'StrictHostKeyChecking no'\""
subprocess.call(
"{cmd} {src} {usr}@{ldr}:{tdir}".format(
cmd=cmd,
src=path.join(config.deploy_path, "ansible"),
usr=config.get("general", "cluster_user"),
ldr=config.get_proxy_ip(),
tdir=config.user_home(),
),
shell=True,
)
self.exec_on_proxy_verified(
"{0}/ansible/scripts/install_ansible.sh".format(
config.user_home()
),
opts="-t",
)