diff --git a/server/modules/autoimage.py b/server/modules/autoimage.py new file mode 100755 index 0000000..671ae0a --- /dev/null +++ b/server/modules/autoimage.py @@ -0,0 +1,90 @@ +#!/usr/bin/python3 + +import argparse +import os +import shutil +import subprocess + + +parser = argparse.ArgumentParser(description='iconograph autoimage') +parser.add_argument( + '--base-url', + dest='base_url', + action='store', + required=True) +parser.add_argument( + '--ca-cert', + dest='ca_cert', + action='store', + required=True) +parser.add_argument( + '--chroot-path', + dest='chroot_path', + action='store', + required=True) +parser.add_argument( + '--device', + dest='device', + action='store', + required=True) +parser.add_argument( + '--image-type', + dest='image_type', + action='store', + required=True) +parser.add_argument( + '--persistent-percent', + dest='persistent_percent', + action='store', + type=int, + default=0) +FLAGS = parser.parse_args() + + +def Exec(*args, **kwargs): + print('+', args) + subprocess.check_call(args, **kwargs) + + +def ExecChroot(*args, **kwargs): + Exec('chroot', FLAGS.chroot_path, *args, **kwargs) + + +def main(): + ExecChroot( + 'apt-get', + 'install', + '--assume-yes', + 'git', 'python3-openssl') + + ExecChroot( + 'git', + 'clone', + 'https://github.com/robot-tools/iconograph.git', + 'autoimage') + + os.mkdir(os.path.join(FLAGS.chroot_path, 'autoimage', 'config')) + shutil.copyfile( + FLAGS.ca_cert, + os.path.join(FLAGS.chroot_path, 'autoimage', 'config', 'ca.cert.pem')) + + init = os.path.join(FLAGS.chroot_path, 'etc', 'init', 'autoimage.conf') + with open(init, 'w') as fh: + fh.write(""" +description "AutoImage" + +start on filesystem + +script + /autoimage/server/image.py --device=%(device)s --persistent-percent=%(persistent_percent)d --ca-cert=/autoimage/config/ca.cert.pem --image-type=%(image_type)s --base-url=%(base_url)s +end script +""" % { + 'device': FLAGS.device, + 'persistent_percent': FLAGS.persistent_percent, + 'image_type': FLAGS.image_type, + 'base_url': FLAGS.base_url, + }) + + +if __name__ == '__main__': + main() diff --git a/server/modules/iconograph.py b/server/modules/iconograph.py index 0271ee4..428406d 100755 --- a/server/modules/iconograph.py +++ b/server/modules/iconograph.py @@ -6,7 +6,7 @@ import shutil import subprocess -parser = argparse.ArgumentParser(description='iconograph persistent') +parser = argparse.ArgumentParser(description='iconograph install module') parser.add_argument( '--base-url', dest='base_url',