def deploy_to(instance_ip, username, instance_id): """ Use service.ansible to deploy to an instance. """ if not check_ansible(): return [] logger = create_instance_logger(deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) cache_bust(hostname) configure_ansible(logger) my_limit = {"hostname": hostname, "ip": instance_ip} deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR host_list = settings.ANSIBLE_HOST_FILE user_keys = [] user = User.objects.get(username=username) if user.userprofile.use_ssh_keys: user_keys = [k.pub_key for k in get_user_ssh_keys(username)] extra_vars = { "ATMOUSERNAME": username, "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE, "USERSSHKEYS": user_keys } pbs = subspace.playbook.get_playbooks(deploy_playbooks, host_list=host_list, limit=my_limit, extra_vars=extra_vars) [pb.run() for pb in pbs] log_playbook_summaries(logger, pbs, hostname) raise_playbook_errors(pbs, hostname) cache_bust(hostname) return pbs
def deploy_to(instance_ip, username, instance_id): """ Use service.ansible to deploy to an instance. """ if not check_ansible(): return [] logger = create_instance_logger( deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) cache_bust(hostname) configure_ansible(logger) my_limit = {"hostname": hostname, "ip": instance_ip} deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR host_list = settings.ANSIBLE_HOST_FILE extra_vars = {"ATMOUSERNAME": username, "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE} pbs = subspace.playbook.get_playbooks(deploy_playbooks, host_list=host_list, limit=my_limit, extra_vars=extra_vars) [pb.run() for pb in pbs] log_playbook_summaries(logger, pbs, hostname) raise_playbook_errors(pbs, hostname) cache_bust(hostname) return pbs
def deploy_to(instance_ip, username, instance_id, limit_playbooks=None): """ Use service.ansible to deploy to an instance. """ if not check_ansible(): return [] logger = create_instance_logger( deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) cache_bust(hostname) configure_ansible() my_limit = {"hostname": hostname, "ip": instance_ip} deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR host_file = settings.ANSIBLE_HOST_FILE user_keys = _get_user_keys(username) extra_vars = { "ATMOUSERNAME": username, "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE, "USERSSHKEYS": user_keys } pbs = execute_playbooks( deploy_playbooks, host_file, extra_vars, my_limit, logger=logger, limit_playbooks=limit_playbooks) log_playbook_summaries(logger, pbs, hostname) raise_playbook_errors(pbs, instance_ip, hostname) cache_bust(hostname) return pbs
def ansible_deployment( instance_ip, username, instance_id, playbooks_dir, limit_playbooks=[], limit_hosts={}, extra_vars={} ): """ Use service.ansible to deploy to an instance. """ if not check_ansible(): return [] logger = create_instance_logger(deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) configure_ansible() if not limit_hosts: limit_hosts = {"hostname": hostname, "ip": instance_ip} host_file = settings.ANSIBLE_HOST_FILE extra_vars.update({"ATMOUSERNAME": username}) pbs = execute_playbooks( playbooks_dir, host_file, extra_vars, limit_hosts, logger=logger, limit_playbooks=limit_playbooks ) raise_playbook_errors(pbs, instance_ip, hostname) return pbs
def deploy_to(instance_ip, username, instance_id): """ Use service.ansible to deploy to an instance. """ if not check_ansible(): return [] instance = Instance.objects.get(provider_alias=instance_id) provider = instance.source.provider logger = create_instance_logger( deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) cache_bust(hostname) configure_ansible(logger) my_limit = {"hostname": hostname, "ip": instance_ip} deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR host_list = settings.ANSIBLE_HOST_FILE user_keys = [] user = User.objects.get(username=username) if user.userprofile.use_ssh_keys: user_keys = [ k.pub_key for k in get_user_ssh_keys(username)] extra_vars = {"ATMOUSERNAME": username, "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE, "USERSSHKEYS": user_keys } pbs = subspace.playbook.get_playbooks(deploy_playbooks, host_list=host_list, limit=my_limit, extra_vars=extra_vars) [pb.run() for pb in pbs] log_playbook_summaries(logger, pbs, hostname) raise_playbook_errors(pbs, hostname) cache_bust(hostname) return pbs
def run_utility_playbooks(instance_ip, username, instance_id, limit_playbooks=[]): """ Use service.ansible to deploy utility_playbooks to an instance. 'limit_playbooks' is a list of strings that should match the filename of the ansible """ if not check_ansible(): return [] logger = create_instance_logger( deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) cache_bust(hostname) configure_ansible(logger) my_limit = {"hostname": hostname, "ip": instance_ip} playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR deploy_playbooks = playbooks_dir.replace('/playbooks', '/util_playbooks') host_list = settings.ANSIBLE_HOST_FILE user_keys = [] user = User.objects.get(username=username) if user.userprofile.use_ssh_keys: user_keys = [ k.pub_key for k in get_user_ssh_keys(username)] extra_vars = {"ATMOUSERNAME": username, "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE, "USERSSHKEYS": user_keys} pbs = subspace.playbook.get_playbooks(deploy_playbooks, host_list=host_list, limit=my_limit, extra_vars=extra_vars) pbs = [pb for pb in pbs if pb.filename.split('/')[-1] in limit_playbooks] [pb.run() for pb in pbs] log_playbook_summaries(logger, pbs, hostname) raise_playbook_errors(pbs, hostname, allow_failures=True) cache_bust(hostname) return pbs
def ansible_deployment(instance_ip, username, instance_id, playbooks_dir, limit_playbooks=[], limit_hosts={}, extra_vars={}): """ Use service.ansible to deploy to an instance. """ if not check_ansible(): return [] logger = create_instance_logger(deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_id, instance_ip) configure_ansible() if not limit_hosts: limit_hosts = {"hostname": hostname, "ip": instance_ip} host_file = settings.ANSIBLE_HOST_FILE identity = Identity.find_instance(instance_id) if identity: time_zone = identity.provider.timezone extra_vars.update({ "TIMEZONE": time_zone, }) extra_vars.update({ "ATMOUSERNAME": username, }) pbs = execute_playbooks(playbooks_dir, host_file, extra_vars, limit_hosts, logger=logger, limit_playbooks=limit_playbooks) raise_playbook_errors(pbs, instance_ip, hostname) return pbs
def run_utility_playbooks(instance_ip, username, instance_id, limit_playbooks=[]): """ Use service.ansible to deploy utility_playbooks to an instance. 'limit_playbooks' is a list of strings that should match the filename you wish to include (Ex: check_networking.yml) """ if not check_ansible(): return [] logger = create_instance_logger( deploy_logger, instance_ip, username, instance_id) hostname = build_host_name(instance_ip) cache_bust(hostname) configure_ansible() playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR # Essential args: util_playbooks = playbooks_dir.replace('/playbooks', '/util_playbooks') my_limit = {"hostname": hostname, "ip": instance_ip} host_file = settings.ANSIBLE_HOST_FILE user_keys = _get_user_keys(username) extra_vars = {"ATMOUSERNAME": username, "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE, "USERSSHKEYS": user_keys} pbs = execute_playbooks( util_playbooks, host_file, extra_vars, my_limit, logger=logger, limit_playbooks=limit_playbooks ) log_playbook_summaries(logger, pbs, hostname) raise_playbook_errors(pbs, instance_ip, hostname, allow_failures=True) cache_bust(hostname) return pbs