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 user_deploy(instance_ip, username, instance_id): """ Use service.ansible to deploy to an instance. """ playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR playbooks_dir = os.path.join(playbooks_dir, 'user_deploy') user_keys = [k.pub_key for k in get_user_ssh_keys(username)] extra_vars = { "USERSSHKEYS": user_keys } return ansible_deployment( instance_ip, username, instance_id, playbooks_dir, extra_vars=extra_vars)
def user_deploy(instance_ip, username, instance_id): """ Use service.ansible to deploy to an instance. #NOTE: This method will _NOT_ work if you do not run instance deployment *FIRST*! # In order to add user-ssh keys to root, you will need root access to the VM that is *not* configured in this playbook. """ playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR playbooks_dir = os.path.join(playbooks_dir, 'user_deploy') user_keys = [k.pub_key for k in get_user_ssh_keys(username)] extra_vars = {"USERSSHKEYS": user_keys} return ansible_deployment(instance_ip, username, instance_id, playbooks_dir, extra_vars=extra_vars)
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 _get_user_keys(username): 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)] return user_keys