import qarnot
conn = qarnot.Connection(client_token = '<<<MY_SECRET_TOKEN>>>')
task = conn.create_task('ssh-example', 'docker-network-ssh')
task.constants['DOCKER_SSH'] = '<<<MY_SSH_PUBLIC_KEY>>>'
task.constants['DOCKER_CMD'] = "/bin/bash -c 'mkdir -p ~/.ssh /run/sshd ;" \
"echo \"${DOCKER_SSH}\" >> ~/.ssh/authorized_keys ;" \
"/usr/sbin/sshd -D'"
task.submit()
last_state = ''
ssh_tunneling_done = False
while not ssh_tunneling_done:
if task.state != last_state:
last_state = task.state
print("** {}".format(last_state))
if task.state == 'FullyExecuting':
forward_list = task.status.running_instances_info.per_running_instance_info[0].active_forward
if not ssh_tunneling_done and len(forward_list) != 0:
ssh_forward_port = forward_list[0].forwarder_port
ssh_forward_host = forward_list[0].forwarder_host
cmd = f"ssh -o StrictHostKeyChecking=no root@{ssh_forward_host} -p {ssh_forward_port}"
print(cmd)
ssh_tunneling_done = True
if task.state == 'Failure':
print("** Errors: %s" % task.errors[0])
ssh_tunneling_done = True