Added utils/tasks.py
This commit is contained in:
parent
464b48000d
commit
568f38dd67
1 changed files with 31 additions and 0 deletions
31
utils/tasks.py
Normal file
31
utils/tasks.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
from dynamicweb.celery import app
|
||||
from celery.utils.log import get_task_logger
|
||||
from django.conf import settings
|
||||
from cdist.integration import configure_hosts_simple
|
||||
import cdist
|
||||
import tempfile
|
||||
import pathlib
|
||||
|
||||
logger = get_task_logger(__name__)
|
||||
|
||||
|
||||
@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES)
|
||||
def save_ssh_key(hosts, keys):
|
||||
"""
|
||||
Saves ssh key into the VMs of a user using cdist
|
||||
|
||||
:param hosts: A list of hosts to be configured
|
||||
:param keys: A list of keys to be added
|
||||
"""
|
||||
# Generate manifest to be used for configuring the hosts
|
||||
with tempfile.NamedTemporaryFile() as tmp_manifest:
|
||||
tmp_manifest.writelines(['__ssh_authorized_keys root \\',
|
||||
' --key "{keys}"'.format(
|
||||
keys='\n'.join(keys))])
|
||||
|
||||
f = pathlib.Path(tmp_manifest.name)
|
||||
configure_hosts_simple(hosts,
|
||||
tmp_manifest.name,
|
||||
verbose=cdist.argparse.VERBOSE_TRACE)
|
||||
|
||||
|
Loading…
Reference in a new issue