def test_install_server(self): self.WHOAMI_FIFO = fifo(['ubuntu', 'monitor', 'customer']) self.RUNARGS_FIFO = fifo([ ('whoami', False, {}), ('wget https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-sdists/txAWS-0.2.1.post5.tar.gz', False, {}), ('tar -xzvf txAWS-0.2.1.post5.tar.gz', False, {}), ('whoami', False, {}), ('whoami', False, {}), ('rm -rf /home/customer/LAFS_source', False, {}), ('darcs get --lazy https://tahoe-lafs.org/source/tahoe/ticket999-S3-backend LAFS_source', False, {}), ('python ./setup.py build', False, {}), ('mkdir -p introducer storageserver', False, {}), ('LAFS_source/bin/tahoe create-introducer introducer || echo Assuming that introducer already exists.', False, {}), ('LAFS_source/bin/tahoe create-node storageserver || echo Assuming that storage server already exists.', False, {}) ]) self.SUDOARGS_FIFO = fifo([ ('apt-get update', False, {}), ('apt-get dist-upgrade -y', False, {}), ('apt-get install -y python-dev', False, {}), ('apt-get install -y python-setuptools', False, {}), ('apt-get install -y exim4-base', False, {}), ('apt-get install -y darcs', False, {}), ('apt-get install -y python-foolscap', False, {}), ('python ./setup.py install', False, {}), ('adduser --disabled-password --gecos "" customer || echo Assuming that customer already exists.', False, {}), ('mkdir -p /home/customer/.ssh/', False, {}), ('chown customer:customer /home/customer/.ssh', False, {}), ('chmod u+w /home/customer/.ssh/authorized_keys || echo Assuming there is no existing authorized_keys file.', False, {}), ('cp /home/ubuntu/.ssh/authorized_keys /home/customer/.ssh/authorized_keys', False, {}), ('chown customer:customer /home/customer/.ssh/authorized_keys', False, {}), ('chmod 400 /home/customer/.ssh/authorized_keys', False, {}), ('chmod 700 /home/customer/.ssh/', False, {}), ('adduser --disabled-password --gecos "" monitor || echo Assuming that monitor already exists.', False, {}), ('mkdir -p /home/monitor/.ssh/', False, {}), ('chown monitor:monitor /home/monitor/.ssh', False, {}), ('chmod u+w /home/monitor/.ssh/authorized_keys || echo Assuming there is no existing authorized_keys file.', False, {}), ('chown monitor:monitor /home/monitor/.ssh/authorized_keys', False, {}), ('chmod 400 /home/monitor/.ssh/authorized_keys', False, {}), ('chmod 700 /home/monitor/.ssh/', False, {}) ]) self.WRITEARGS_FIFO = fifo([ ('THIS IS A MOCK PUBLIC KEY', '/home/monitor/.ssh/authorized_keys', True, None) ]) MHOSTNAME = '0.0.0.0' ADMINPRIVKEYPATH = 'mockEC2adminkeys.pem' MONITORPUBKEY = 'THIS IS A MOCK PUBLIC KEY' MONITORPRIVKEYPATH = 'mockEC2monitorkeys.pem' STDOUT = StringIO() STDERR = StringIO() server.install_server(MHOSTNAME, ADMINPRIVKEYPATH, MONITORPUBKEY, MONITORPRIVKEYPATH, STDOUT, STDERR) self._check_all_done()
def _got_sshfp(ignored): retries = LISTEN_RETRIES while True: try: install_server(publichost, admin_privkey_path, monitor_pubkey, monitor_privkey_path, stdout, stderr) break except NotListeningError: retries -= 1 if retries <= 0: print >>stdout, "Timed out waiting for EC2 instance to listen for ssh connections." raise TimeoutError() print >>stdout, "Waiting another %d seconds..." % (LISTEN_POLL_TIME) time.sleep(LISTEN_POLL_TIME) continue furl = bounce_server(publichost, admin_privkey_path, privatehost, useraccesskeyid, usersecretkey, usertoken, producttoken, bucketname, oldsecrets, stdout, stderr, secretsfile) # XXX We'll have to ammend this: initialize_statmover_source(publichost, monitor_privkey_path, admin_privkey_path, sinkname_suffix, [instance.instance_id, 'SSEC2s']) # XXX We probably need to rethink this: append_record(FilePath(serverinfopath), instance.launch_time, instance.instance_id, publichost) print >>stderr, "Signup done." d4 = defer.succeed(None) if not oldsecrets: d4.addCallback(lambda ign: send_signup_confirmation(publichost, customer_name, customer_email, furl, customer_keyinfo, stdout, stderr) ) return d4
def test_install_server(self): self.WHOAMI_FIFO = fifo(['ubuntu', 'monitor', 'customer']) self.RUNARGS_FIFO = fifo([ ('whoami', False, {}), ('wget https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-sdists/txAWS-0.2.1.post4.tar.gz', False, {}), ('tar -xzvf txAWS-0.2.1.post4.tar.gz', False, {}), ('whoami', False, {}), ('whoami', False, {}), ('rm -rf /home/customer/LAFS_source', False, {}), ('darcs get --lazy https://tahoe-lafs.org/source/tahoe/ticket999-S3-backend LAFS_source', False, {}), ('python ./setup.py build', False, {}), ('mkdir -p introducer storageserver', False, {}), ('LAFS_source/bin/tahoe create-introducer introducer || echo Assuming that introducer already exists.', False, {}), ('LAFS_source/bin/tahoe create-node storageserver || echo Assuming that storage server already exists.', False, {}) ]) self.SUDOARGS_FIFO = fifo([ ('apt-get update', False, {}), ('apt-get dist-upgrade -y', False, {}), ('apt-get install -y python-dev', False, {}), ('apt-get install -y python-setuptools', False, {}), ('apt-get install -y exim4-base', False, {}), ('apt-get install -y darcs', False, {}), ('easy_install foolscap', False, {}), ('python ./setup.py install', False, {}), ('adduser --disabled-password --gecos "" customer || echo Assuming that customer already exists.', False, {}), ('mkdir -p /home/customer/.ssh/', False, {}), ('chown customer:customer /home/customer/.ssh', False, {}), ('chmod u+w /home/customer/.ssh/authorized_keys || echo Assuming there is no existing authorized_keys file.', False, {}), ('cp /home/ubuntu/.ssh/authorized_keys /home/customer/.ssh/authorized_keys', False, {}), ('chown customer:customer /home/customer/.ssh/authorized_keys', False, {}), ('chmod 400 /home/customer/.ssh/authorized_keys', False, {}), ('chmod 700 /home/customer/.ssh/', False, {}), ('adduser --disabled-password --gecos "" monitor || echo Assuming that monitor already exists.', False, {}), ('mkdir -p /home/monitor/.ssh/', False, {}), ('chown monitor:monitor /home/monitor/.ssh', False, {}), ('chmod u+w /home/monitor/.ssh/authorized_keys || echo Assuming there is no existing authorized_keys file.', False, {}), ('chown monitor:monitor /home/monitor/.ssh/authorized_keys', False, {}), ('chmod 400 /home/monitor/.ssh/authorized_keys', False, {}), ('chmod 700 /home/monitor/.ssh/', False, {}) ]) self.WRITEARGS_FIFO = fifo([('THIS IS A MOCK PUBLIC KEY', '/home/monitor/.ssh/authorized_keys', True, None)]) MHOSTNAME = '0.0.0.0' ADMINPRIVKEYPATH = 'mockEC2adminkeys.pem' MONITORPUBKEY = 'THIS IS A MOCK PUBLIC KEY' MONITORPRIVKEYPATH = 'mockEC2monitorkeys.pem' STDOUT = StringIO() STDERR = StringIO() server.install_server(MHOSTNAME, ADMINPRIVKEYPATH, MONITORPUBKEY, MONITORPRIVKEYPATH, STDOUT, STDERR) self._check_all_done()
def _got_sshfp(ignored): retries = LISTEN_RETRIES while True: try: install_server(publichost, admin_privkey_path, monitor_pubkey, monitor_privkey_path, stdout, stderr) break except NotListeningError: retries -= 1 if retries <= 0: print >>stdout, "Timed out waiting for EC2 instance to listen for ssh connections." raise TimeoutError() print >>stdout, "Waiting another %d seconds..." % (LISTEN_POLL_TIME) time.sleep(LISTEN_POLL_TIME) continue furl = bounce_server(publichost, admin_privkey_path, privatehost, useraccesskeyid, usersecretkey, usertoken, producttoken, bucketname, oldsecrets, stdout, stderr, secretsfile) # Disabled for now. #initialize_statmover_source(publichost, monitor_privkey_path, admin_privkey_path, # sinkname_suffix, [instance.instance_id, 'SSEC2s']) # XXX We probably need to rethink this: append_record(FilePath(serverinfopath), instance.launch_time, instance.instance_id, publichost) print >>stderr, "Signup done." d4 = defer.succeed(None) if not oldsecrets: d4.addCallback(lambda ign: send_signup_confirmation(publichost, customer_name, customer_email, furl, customer_keyinfo, stdout, stderr) ) return d4
if len(sys.argv) < 9: print "Usage: python setup_server.py PUBLIC_IP PRIVATE_IP USER_ACCESS_KEY_ID USER_SECRET_KEY USER_TOKEN LONG_PRODUCT_TOKEN BUCKET_NAME SECRETS_PATH [--no-install]" print "Happy set-upping!" sys.exit(1) publicip = sys.argv[1] privateip = sys.argv[2] useraccesskeyid = sys.argv[3] usersecretkey = sys.argv[4] usertoken = sys.argv[5] producttoken = sys.argv[6] bucketname = sys.argv[7] secretspath = sys.argv[8] ec2_privkey_path = '../secret_config/EC2adminkeys2.pem' monitor_pubkey = FilePath('../secret_config/EC2monitorkeys2.pub').getContent().strip() monitor_privkey_path = '../secret_config/EC2monitorkeys2.pem' try: secretsfile = open(secretspath, 'a') if "--no-install" not in sys.argv: install_server(publicip, ec2_privkey_path, monitor_pubkey, monitor_privkey_path, sys.stdout, sys.stderr) bounce_server(publicip, ec2_privkey_path, privateip, useraccesskeyid, usersecretkey, usertoken, producttoken, bucketname, None, sys.stdout, sys.stderr, secretsfile) finally: secretsfile.close()
def test_install_server(self): self.WHOAMI_FIFO = fifo(['ubuntu', 'ubuntu', 'monitor', 'customer']) self.RUNARGS_FIFO = fifo([ ('whoami', False, {}), ('whoami', False, {}), ('wget https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-sdists/txAWS-0.2.1.post5.tar.gz', False, {}), ('tar -xzvf txAWS-0.2.1.post5.tar.gz', False, {}), ('whoami', False, {}), ('whoami', False, {}), ('rm -rf /home/customer/LAFS_source', False, {}), ('git clone https://github.com/tahoe-lafs/tahoe-lafs.git LAFS_source', False, {}), ('git checkout 2237-cloud-backend-s4', False, {}), ('python ./setup.py build', False, {}), ('mkdir -p introducer storageserver', False, {}), ('LAFS_source/bin/tahoe create-introducer introducer || echo Assuming that introducer already exists.', False, {}), ('LAFS_source/bin/tahoe create-node storageserver || echo Assuming that storage server already exists.', False, {}) ]) self.SUDOARGS_FIFO = fifo([ ('apt-get update', False, {}), ('apt-get -y install python-dev', False, {}), ('apt-get -y install python-pip', False, {}), ('apt-get -y install git-core', False, {}), ('apt-get -y install libffi6', False, {}), ('apt-get -y install openssl', False, {}), ('apt-get -y install libssl1.0.0', False, {}), ('apt-get -y install python-nevow', False, {}), ('apt-get -y install python-crypto', False, {}), ('apt-get -y install python-dateutil', False, {}), ('apt-get -y install python-foolscap', False, {}), ('apt-get -y install python-six', False, {}), ('apt-get -y install python-pycparser', False, {}), ('apt-get -y install python-unidecode', False, {}), ('apt-get -y install python-zfec', False, {}), ('apt-get -y install python-simplejson', False, {}), ('apt-get -y remove --purge whoopsie', False, {}), ('python ./setup.py install', False, {}), ('adduser --disabled-password --gecos "" customer || echo Assuming that customer already exists.', False, {}), ('mkdir -p /home/customer/.ssh/', False, {}), ('chown customer:customer /home/customer/.ssh', False, {}), ('chmod -f u+w /home/customer/.ssh/authorized_keys || echo Assuming there is no existing authorized_keys file.', False, {}), ('cp /home/ubuntu/.ssh/authorized_keys /home/customer/.ssh/authorized_keys', False, {}), ('chown customer:customer /home/customer/.ssh/authorized_keys', False, {}), ('chmod -f 400 /home/customer/.ssh/authorized_keys', False, {}), ('chmod -f 700 /home/customer/.ssh/', False, {}), ('adduser --disabled-password --gecos "" monitor || echo Assuming that monitor already exists.', False, {}), ('mkdir -p /home/monitor/.ssh/', False, {}), ('chown monitor:monitor /home/monitor/.ssh', False, {}), ('chmod -f u+w /home/monitor/.ssh/authorized_keys || echo Assuming there is no existing authorized_keys file.', False, {}), ('chown monitor:monitor /home/monitor/.ssh/authorized_keys', False, {}), ('chmod -f 400 /home/monitor/.ssh/authorized_keys', False, {}), ('chmod -f 700 /home/monitor/.ssh/', False, {}) ]) self.WRITEARGS_FIFO = fifo([('THIS IS A MOCK PUBLIC KEY', '/home/monitor/.ssh/authorized_keys', True, None)]) MHOSTNAME = '0.0.0.0' ADMINPRIVKEYPATH = 'mockEC2adminkeys.pem' MONITORPUBKEY = 'THIS IS A MOCK PUBLIC KEY' MONITORPRIVKEYPATH = 'mockEC2monitorkeys.pem' STDOUT = StringIO() STDERR = StringIO() server.install_server(MHOSTNAME, ADMINPRIVKEYPATH, MONITORPUBKEY, MONITORPRIVKEYPATH, STDOUT, STDERR) self._check_all_done()
print "Usage: python setup_server.py PUBLIC_IP PRIVATE_IP USER_ACCESS_KEY_ID USER_SECRET_KEY USER_TOKEN LONG_PRODUCT_TOKEN BUCKET_NAME SECRETS_PATH [--no-install]" print "Happy set-upping!" sys.exit(1) publicip = sys.argv[1] privateip = sys.argv[2] useraccesskeyid = sys.argv[3] usersecretkey = sys.argv[4] usertoken = sys.argv[5] producttoken = sys.argv[6] bucketname = sys.argv[7] secretspath = sys.argv[8] ec2_privkey_path = '../secret_config/EC2adminkeys2.pem' monitor_pubkey = FilePath( '../secret_config/EC2monitorkeys2.pub').getContent().strip() monitor_privkey_path = '../secret_config/EC2monitorkeys2.pem' try: secretsfile = open(secretspath, 'a') if "--no-install" not in sys.argv: install_server(publicip, ec2_privkey_path, monitor_pubkey, monitor_privkey_path, sys.stdout, sys.stderr) bounce_server(publicip, ec2_privkey_path, privateip, useraccesskeyid, usersecretkey, usertoken, producttoken, bucketname, None, sys.stdout, sys.stderr, secretsfile) finally: secretsfile.close()