From c0c2c5fea70882620de2657bd72189eee700a7eb Mon Sep 17 00:00:00 2001 From: Kevin van Zonneveld Date: Wed, 28 Sep 2016 20:59:31 +0200 Subject: [PATCH] Playground state --- .gitignore | 2 + .infra/Frey-state-terraform.tfstate | 95 ++++++++++++++------- .infra/Frey-state-terraform.tfstate.backup | 95 ++++++++++++++------- .infra/Freyfile.hcl | 74 +++++++++++----- .infra/ssh/frey-tusd.pem.cast5 | Bin 1696 -> 1680 bytes .infra/ssh/frey-tusd.pub | 1 + 6 files changed, 179 insertions(+), 88 deletions(-) diff --git a/.gitignore b/.gitignore index 8f276a5..27dcc55 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ data/ .infra/ssh/frey-tusd.pem node_modules/ .DS_Store + +.infra/env.devinfra.sh diff --git a/.infra/Frey-state-terraform.tfstate b/.infra/Frey-state-terraform.tfstate index 48dc2b9..1df8207 100644 --- a/.infra/Frey-state-terraform.tfstate +++ b/.infra/Frey-state-terraform.tfstate @@ -1,8 +1,8 @@ { "version": 3, "terraform_version": "0.7.3", - "serial": 28, - "lineage": "deedcad1-a3e9-4e02-9135-c347bbbe0be0", + "serial": 5, + "lineage": "317b7812-b33a-495e-b08e-0021be934e90", "modules": [ { "path": [ @@ -12,56 +12,77 @@ "endpoint": { "sensitive": false, "type": "string", - "value": "http://master.tus.io:80/" + "value": "http://tus.transloadit.academy:80/" }, "public_address": { "sensitive": false, "type": "string", - "value": "ec2-54-166-147-2.compute-1.amazonaws.com" + "value": "ec2-52-201-254-175.compute-1.amazonaws.com" }, "public_addresses": { "sensitive": false, "type": "string", - "value": "ec2-54-166-147-2.compute-1.amazonaws.com" + "value": "ec2-52-201-254-175.compute-1.amazonaws.com" } }, "resources": { "aws_instance.tusd": { "type": "aws_instance", - "depends_on": [], + "depends_on": [ + "aws_key_pair.infra-tusd" + ], "primary": { - "id": "i-16ef798d", + "id": "i-05b661e26171f3070", "attributes": { - "ami": "ami-9bce7af0", + "ami": "ami-8fe79998", "availability_zone": "us-east-1d", "disable_api_termination": "false", "ebs_block_device.#": "0", "ebs_optimized": "false", "ephemeral_block_device.#": "0", "iam_instance_profile": "", - "id": "i-16ef798d", + "id": "i-05b661e26171f3070", "instance_state": "running", - "instance_type": "c3.large", + "instance_type": "t2.micro", "key_name": "infra-tusd", "monitoring": "false", - "network_interface_id": "", - "private_dns": "ip-10-99-128-27.ec2.internal", - "private_ip": "10.99.128.27", - "public_dns": "ec2-54-166-147-2.compute-1.amazonaws.com", - "public_ip": "54.166.147.2", + "network_interface_id": "eni-46d66d40", + "private_dns": "ip-172-31-14-111.ec2.internal", + "private_ip": "172.31.14.111", + "public_dns": "ec2-52-201-254-175.compute-1.amazonaws.com", + "public_ip": "52.201.254.175", "root_block_device.#": "1", "root_block_device.0.delete_on_termination": "true", "root_block_device.0.iops": "100", "root_block_device.0.volume_size": "8", "root_block_device.0.volume_type": "gp2", - "security_groups.#": "1", - "security_groups.1898427277": "fw-tusd-main", + "security_groups.#": "0", "source_dest_check": "true", - "subnet_id": "", + "subnet_id": "subnet-1adf3953", "tags.%": "1", - "tags.Name": "master.tus.io", + "tags.Name": "tus.transloadit.academy", "tenancy": "default", - "vpc_security_group_ids.#": "0" + "vpc_security_group_ids.#": "1", + "vpc_security_group_ids.977706528": "sg-efcac894" + }, + "meta": { + "schema_version": "1" + }, + "tainted": false + }, + "deposed": [], + "provider": "" + }, + "aws_key_pair.infra-tusd": { + "type": "aws_key_pair", + "depends_on": [], + "primary": { + "id": "infra-tusd", + "attributes": { + "fingerprint": "c8:2d:93:d0:0a:71:c1:e2:c7:43:37:a9:e4:78:03:4c", + "id": "infra-tusd", + "key_name": "infra-tusd", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDb0fMw6fF2ct31UvChO/r17kXAn6AdPS0TLl4QZauvnEd1jyCekxCwJ3ApafapiQo/Z29zy3Uz0KQxvHvMNaYq6JY4qEyfQIlEhBRjrMlQKvNnQcFlX5ETSy6r8qPhYi2ly0GWB17Er5t2UMt2yKQrcPCWGNy0zOIjymdTdWaQlcjO/76XJr64790Y0+BfLyxPkZ0z39EM/9crLdpUq4SMAyup/mKG5daQbh/MpYEoXe6oyHVK/z1aESBO7EAKnoGauHXgzNYGTxqFnzjU/srmKUY/vR2GAqFqZYweZyNiAuhQ5jfkciGSSR2UeMXZ/y3XI8ATQQJJOnrY2OQ9WKKh kvz@tusd.freyproject.io" }, "meta": { "schema_version": "1" @@ -77,18 +98,18 @@ "aws_instance.tusd" ], "primary": { - "id": "Z3IT8X6U91XY1P_master.tus.io_CNAME", + "id": "Z3V9RXR2M8085J_tus.transloadit.academy_CNAME", "attributes": { - "fqdn": "master.tus.io", + "fqdn": "tus.transloadit.academy", "health_check_id": "", - "id": "Z3IT8X6U91XY1P_master.tus.io_CNAME", - "name": "master.tus.io", + "id": "Z3V9RXR2M8085J_tus.transloadit.academy_CNAME", + "name": "tus.transloadit.academy", "records.#": "1", - "records.3871998453": "ec2-54-166-147-2.compute-1.amazonaws.com", + "records.3180824470": "ec2-52-201-254-175.compute-1.amazonaws.com", "set_identifier": "", "ttl": "300", "type": "CNAME", - "zone_id": "Z3IT8X6U91XY1P" + "zone_id": "Z3V9RXR2M8085J" }, "meta": { "schema_version": "2" @@ -98,15 +119,23 @@ "deposed": [], "provider": "" }, - "aws_security_group.fw-tusd-main": { + "aws_security_group.fw-tusd": { "type": "aws_security_group", "depends_on": [], "primary": { - "id": "sg-60cc290d", + "id": "sg-29386d53", "attributes": { "description": "Infra tusd", - "egress.#": "0", - "id": "sg-60cc290d", + "egress.#": "1", + "egress.482069346.cidr_blocks.#": "1", + "egress.482069346.cidr_blocks.0": "0.0.0.0/0", + "egress.482069346.from_port": "0", + "egress.482069346.prefix_list_ids.#": "0", + "egress.482069346.protocol": "-1", + "egress.482069346.security_groups.#": "0", + "egress.482069346.self": "false", + "egress.482069346.to_port": "0", + "id": "sg-29386d53", "ingress.#": "3", "ingress.2214680975.cidr_blocks.#": "1", "ingress.2214680975.cidr_blocks.0": "0.0.0.0/0", @@ -129,10 +158,10 @@ "ingress.516175195.security_groups.#": "0", "ingress.516175195.self": "false", "ingress.516175195.to_port": "8080", - "name": "fw-tusd-main", - "owner_id": "402421253186", + "name": "fw-tusd", + "owner_id": "618066538640", "tags.%": "0", - "vpc_id": "" + "vpc_id": "vpc-cea030a9" }, "meta": {}, "tainted": false diff --git a/.infra/Frey-state-terraform.tfstate.backup b/.infra/Frey-state-terraform.tfstate.backup index 48dc2b9..1df8207 100644 --- a/.infra/Frey-state-terraform.tfstate.backup +++ b/.infra/Frey-state-terraform.tfstate.backup @@ -1,8 +1,8 @@ { "version": 3, "terraform_version": "0.7.3", - "serial": 28, - "lineage": "deedcad1-a3e9-4e02-9135-c347bbbe0be0", + "serial": 5, + "lineage": "317b7812-b33a-495e-b08e-0021be934e90", "modules": [ { "path": [ @@ -12,56 +12,77 @@ "endpoint": { "sensitive": false, "type": "string", - "value": "http://master.tus.io:80/" + "value": "http://tus.transloadit.academy:80/" }, "public_address": { "sensitive": false, "type": "string", - "value": "ec2-54-166-147-2.compute-1.amazonaws.com" + "value": "ec2-52-201-254-175.compute-1.amazonaws.com" }, "public_addresses": { "sensitive": false, "type": "string", - "value": "ec2-54-166-147-2.compute-1.amazonaws.com" + "value": "ec2-52-201-254-175.compute-1.amazonaws.com" } }, "resources": { "aws_instance.tusd": { "type": "aws_instance", - "depends_on": [], + "depends_on": [ + "aws_key_pair.infra-tusd" + ], "primary": { - "id": "i-16ef798d", + "id": "i-05b661e26171f3070", "attributes": { - "ami": "ami-9bce7af0", + "ami": "ami-8fe79998", "availability_zone": "us-east-1d", "disable_api_termination": "false", "ebs_block_device.#": "0", "ebs_optimized": "false", "ephemeral_block_device.#": "0", "iam_instance_profile": "", - "id": "i-16ef798d", + "id": "i-05b661e26171f3070", "instance_state": "running", - "instance_type": "c3.large", + "instance_type": "t2.micro", "key_name": "infra-tusd", "monitoring": "false", - "network_interface_id": "", - "private_dns": "ip-10-99-128-27.ec2.internal", - "private_ip": "10.99.128.27", - "public_dns": "ec2-54-166-147-2.compute-1.amazonaws.com", - "public_ip": "54.166.147.2", + "network_interface_id": "eni-46d66d40", + "private_dns": "ip-172-31-14-111.ec2.internal", + "private_ip": "172.31.14.111", + "public_dns": "ec2-52-201-254-175.compute-1.amazonaws.com", + "public_ip": "52.201.254.175", "root_block_device.#": "1", "root_block_device.0.delete_on_termination": "true", "root_block_device.0.iops": "100", "root_block_device.0.volume_size": "8", "root_block_device.0.volume_type": "gp2", - "security_groups.#": "1", - "security_groups.1898427277": "fw-tusd-main", + "security_groups.#": "0", "source_dest_check": "true", - "subnet_id": "", + "subnet_id": "subnet-1adf3953", "tags.%": "1", - "tags.Name": "master.tus.io", + "tags.Name": "tus.transloadit.academy", "tenancy": "default", - "vpc_security_group_ids.#": "0" + "vpc_security_group_ids.#": "1", + "vpc_security_group_ids.977706528": "sg-efcac894" + }, + "meta": { + "schema_version": "1" + }, + "tainted": false + }, + "deposed": [], + "provider": "" + }, + "aws_key_pair.infra-tusd": { + "type": "aws_key_pair", + "depends_on": [], + "primary": { + "id": "infra-tusd", + "attributes": { + "fingerprint": "c8:2d:93:d0:0a:71:c1:e2:c7:43:37:a9:e4:78:03:4c", + "id": "infra-tusd", + "key_name": "infra-tusd", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDb0fMw6fF2ct31UvChO/r17kXAn6AdPS0TLl4QZauvnEd1jyCekxCwJ3ApafapiQo/Z29zy3Uz0KQxvHvMNaYq6JY4qEyfQIlEhBRjrMlQKvNnQcFlX5ETSy6r8qPhYi2ly0GWB17Er5t2UMt2yKQrcPCWGNy0zOIjymdTdWaQlcjO/76XJr64790Y0+BfLyxPkZ0z39EM/9crLdpUq4SMAyup/mKG5daQbh/MpYEoXe6oyHVK/z1aESBO7EAKnoGauHXgzNYGTxqFnzjU/srmKUY/vR2GAqFqZYweZyNiAuhQ5jfkciGSSR2UeMXZ/y3XI8ATQQJJOnrY2OQ9WKKh kvz@tusd.freyproject.io" }, "meta": { "schema_version": "1" @@ -77,18 +98,18 @@ "aws_instance.tusd" ], "primary": { - "id": "Z3IT8X6U91XY1P_master.tus.io_CNAME", + "id": "Z3V9RXR2M8085J_tus.transloadit.academy_CNAME", "attributes": { - "fqdn": "master.tus.io", + "fqdn": "tus.transloadit.academy", "health_check_id": "", - "id": "Z3IT8X6U91XY1P_master.tus.io_CNAME", - "name": "master.tus.io", + "id": "Z3V9RXR2M8085J_tus.transloadit.academy_CNAME", + "name": "tus.transloadit.academy", "records.#": "1", - "records.3871998453": "ec2-54-166-147-2.compute-1.amazonaws.com", + "records.3180824470": "ec2-52-201-254-175.compute-1.amazonaws.com", "set_identifier": "", "ttl": "300", "type": "CNAME", - "zone_id": "Z3IT8X6U91XY1P" + "zone_id": "Z3V9RXR2M8085J" }, "meta": { "schema_version": "2" @@ -98,15 +119,23 @@ "deposed": [], "provider": "" }, - "aws_security_group.fw-tusd-main": { + "aws_security_group.fw-tusd": { "type": "aws_security_group", "depends_on": [], "primary": { - "id": "sg-60cc290d", + "id": "sg-29386d53", "attributes": { "description": "Infra tusd", - "egress.#": "0", - "id": "sg-60cc290d", + "egress.#": "1", + "egress.482069346.cidr_blocks.#": "1", + "egress.482069346.cidr_blocks.0": "0.0.0.0/0", + "egress.482069346.from_port": "0", + "egress.482069346.prefix_list_ids.#": "0", + "egress.482069346.protocol": "-1", + "egress.482069346.security_groups.#": "0", + "egress.482069346.self": "false", + "egress.482069346.to_port": "0", + "id": "sg-29386d53", "ingress.#": "3", "ingress.2214680975.cidr_blocks.#": "1", "ingress.2214680975.cidr_blocks.0": "0.0.0.0/0", @@ -129,10 +158,10 @@ "ingress.516175195.security_groups.#": "0", "ingress.516175195.self": "false", "ingress.516175195.to_port": "8080", - "name": "fw-tusd-main", - "owner_id": "402421253186", + "name": "fw-tusd", + "owner_id": "618066538640", "tags.%": "0", - "vpc_id": "" + "vpc_id": "vpc-cea030a9" }, "meta": {}, "tainted": false diff --git a/.infra/Freyfile.hcl b/.infra/Freyfile.hcl index f86a85f..ca9166d 100644 --- a/.infra/Freyfile.hcl +++ b/.infra/Freyfile.hcl @@ -24,7 +24,7 @@ infra variable { amis { type = "map" default { - "us-east-1" = "ami-9bce7af0" + "us-east-1" = "ami-8fe79998" } } region { @@ -33,32 +33,34 @@ infra variable { } infra output { - public_address { - value = "${aws_instance.tusd.0.public_dns}" - } - public_addresses { - value = "${join("\n", aws_instance.tusd.*.public_dns)}" - } - endpoint { - value = "http://${aws_route53_record.www.name}:80/" - } + public_address { value = "${aws_instance.tusd.0.public_dns}" } + public_addresses { value = "${join("\n", aws_instance.tusd.*.public_dns)}" } + endpoint { value = "http://${aws_route53_record.www.name}:80/" } } -infra resource aws_instance tusd { - ami = "${lookup(var.amis, var.region)}" - instance_type = "c3.large" - key_name = "infra-tusd" - security_groups = ["fw-tusd-main"] +infra resource aws_key_pair "infra-tusd" { + key_name = "infra-tusd" + public_key = "${file("{{{config.global.ssh.publickey_file}}}")}" +} + +infra resource aws_instance "tusd" { + ami = "${lookup(var.amis, var.region)}" + instance_type = "t2.micro" + key_name = "${aws_key_pair.infra-tusd.key_name}" + // vpc_security_group_ids = ["aws_security_group.fw-tusd.id"] + subnet_id = "subnet-1adf3953" + connection { key_file = "{{{config.global.ssh.privatekey_file}}}" user = "{{{config.global.ssh.user}}}" } + tags { - "Name" = "${var.FREY_DOMAIN}" + Name = "${var.FREY_DOMAIN}" } } -infra resource "aws_route53_record" www { +infra resource aws_route53_record "www" { name = "${var.FREY_DOMAIN}" records = ["${aws_instance.tusd.public_dns}"] ttl = "300" @@ -66,57 +68,76 @@ infra resource "aws_route53_record" www { zone_id = "${var.FREY_AWS_ZONE_ID}" } -infra resource aws_security_group "fw-tusd-main" { +infra resource aws_security_group "fw-tusd" { description = "Infra tusd" - name = "fw-tusd-main" + name = "fw-tusd" + vpc_id = "vpc-cea030a9" + ingress { cidr_blocks = ["0.0.0.0/0"] - from_port = 8080 protocol = "tcp" + from_port = 8080 to_port = 8080 } + ingress { cidr_blocks = ["0.0.0.0/0"] - from_port = 80 protocol = "tcp" + from_port = 80 to_port = 80 } + ingress { cidr_blocks = ["0.0.0.0/0"] - from_port = 22 protocol = "tcp" + from_port = 22 to_port = 22 } + + // This is for outbound internet access + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = [ "0.0.0.0/0" ] + } } install { playbooks { hosts = "tusd" name = "Install tusd" + roles { role = "{{{init.paths.roles_dir}}}/apt/v1.0.0" apt_packages = ["apg", "build-essential", "curl", "git-core", "htop", "iotop", "libpcre3", "logtail", "mlocate", "mtr", "psmisc", "telnet", "vim", "wget"] } + roles { role = "{{{init.paths.roles_dir}}}/unattended-upgrades/v1.2.0" } + tasks { lineinfile = "dest=/home/{{{config.global.ssh.user}}}/.bashrc line=\"alias wtf='sudo tail -f /var/log/*{log,err} /var/log/{dmesg,messages,*{,/*}{log,err}}'\" owner={{{config.global.ssh.user}}} group={{{config.global.ssh.user}}} mode=0644 backup=yes" name = "Common | Add convenience shortcut wtf" } + tasks { lineinfile = "dest=/home/{{{config.global.ssh.user}}}/.bashrc line=\"cd {{{config.global.approot}}}/current || true\" owner={{{config.global.ssh.user}}} group={{{config.global.ssh.user}}} mode=0644 backup=yes" name = "Common | Install login" } + tasks { name = "Common | Set motd" copy = "content='Welcome to {{lookup('env', 'FREY_DOMAIN')}}' dest=/etc/motd owner=root group=root mode=0644 backup=yes" } + tasks { name = "Common | Set timezone variables" copy = "content='Etc/UTC' dest=/etc/timezone owner=root group=root mode=0644 backup=yes" notify = ["Common | Update timezone"] } + handlers { name = "Common | Update timezone" command = "dpkg-reconfigure --frontend noninteractive tzdata" @@ -128,6 +149,7 @@ setup { playbooks { hosts = "tusd" name = "Setup tusd" + roles { role = "{{{init.paths.roles_dir}}}/upstart/v1.0.0" upstart_command = "./tusd -port=8080 -dir=/mnt/tusd-data -store-size=10737418240" @@ -139,6 +161,7 @@ setup { upstart_runtime_root = "{{{config.global.approot}}}/current/tusd_linux_amd64" upstart_user = "www-data" } + roles { role = "{{{init.paths.roles_dir}}}/rsyslog/v3.0.1" rsyslog_rsyslog_d_files "49-tusd" { @@ -149,14 +172,17 @@ setup { } } } + roles { role = "{{{init.paths.roles_dir}}}/fqdn/v1.0.0" fqdn = "{{lookup('env', 'FREY_DOMAIN')}}" } + tasks { file = "path=/mnt/tusd-data state=directory owner=www-data group=ubuntu mode=ug+rwX,o= recurse=yes" name = "tusd | Create tusd data dir" } + tasks { name = "tusd | Create purger crontab (clean up >24h (1400minutes) files)" cron { @@ -172,6 +198,7 @@ deploy { playbooks { hosts = "tusd" name = "Deploy tusd" + roles { role = "{{{init.paths.roles_dir}}}/deploy/v1.4.0" ansistrano_get_url = "https://github.com/tus/tusd/releases/download/0.5.2/tusd_linux_amd64.tar.gz" @@ -179,6 +206,7 @@ deploy { ansistrano_deploy_via = "download_unarchive" ansistrano_group = "ubuntu" } + tasks { name = "tusd | Set file attributes" file = "path={{{config.global.approot}}}/current/tusd_linux_amd64/tusd mode=0755 owner=www-data group=www-data" @@ -190,10 +218,12 @@ restart { playbooks { hosts = "tusd" name = "Restart tusd" + tasks { shell = "iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080" name = "tusd | Redirect HTTP traffic to tusd" } + tasks { action = "service name=tusd state=restarted" name = "tusd | Restart" diff --git a/.infra/ssh/frey-tusd.pem.cast5 b/.infra/ssh/frey-tusd.pem.cast5 index 215171ffe7f8352fe577c2ad0ff7d012dd7a14ca..8331f122a019b0f5f2577340a14204889a22bc02 100644 GIT binary patch delta 1675 zcmV;626XwL4Ui3x8GlQ4ki$_nykkq7vp0}rlvbU7@!H27`LGT%M-Do94njJI`O5u^ z#^Ab6Eam`fGTYG5Sgt9|X*^L1gN(*8c|hJd~r5PB>n){h8iiRE({4#{b|0)<6WhQd=! zupx=Z7?EYVq_=#eq4@P(!q6L3zw^OBM`^xIm7wZ%L*mbb^LGX)`RPBIF!Bfd(b{~TNwq1zM_f1GdziYW`<27h=t9{DrgJ#B;4?$ME@E?c5f z7NAW8kq``BQBRRg)5aityUr>_%{?pbyv4pWp zqh(33znVpmR$4}#TmIr@#dB3PY_S>D2slX?FoNbuI=m=A(92wPtx%f_tqQ)?8$rg! z`_mWjb$>*kb6|9r2tHt6z?b7qlDYbL@_w^er{u#p*bwR>mWiL^6~F{9ZGiJ&SEbE+ zL3m_TT9m`g!?EfK|9j7R^4j^I24nzEvVSnniQ1m0umZ#hfh@GS7R|nrkZ6@9_ zZ);M3dt>A`osF?nS>d&mE>{ax)N=e4!t;I3%4p)8dLr%aJ&^o#l}l{hF~ zXn&5S=)N)`Quz(^b)<<47~GmaRmDKe@~t;B`kypbCB1forED68i3kq%)tJAQ-W6Xf zQ4BJz43hNLHy&n7fd9`>DL!WDDAnNUFN{A)tw~v8Yo+ta9#Tku>zrbE)yqop%u$RL z9tg}ou)t=Vw-pMh5^|^o$jB&F2;{F^AAi#PXMa1u z=v=b^JW{A9w|?X_>0NB;VP7MaHn_6;zDYkCvH|b%Y+9X3B^)v$_<{(4OHj`WU55X% z{ZEQM(cxNLg0*YPHREi)siAWtVElnnj9fiV9D>E2$qH2wO4%?O^m_k7&0i*mKUany zIlNtdHkR-%6AmsI!|J!J5v_EJlYfh)1lFKFd<64=atwxmA7FPFN>B_eXiaW};UKxo z>5z24EEOlgl1ty&&YV5H5{72tn%{R-H)P4UWFxRj=WWAbO*WTwv4)C3fz{?$WB0DB zYB7GucbxxP^4dnPQGE*Psp+140ll+DN!0}Q;2k#a_b$Jme&f)3c;BDZJby`p$d$zO znxx-LgZZoRqTJ|Ncqz%T@M!@!WcUU~o+e`yjrpvuE@hq+KZRu$~FN?;%@P`;|d9foL@b^*B%oLVK|E);0Cud@TR!kxyv_Z%p2r|{HMWw*AFIKU#rQDw$iZ#VGodEdOif)2kao_`dTL3Brjds05W zW*vLKI?|{frIhCaI-4|GF)XLHQJ2f*Oz#`Y_w1)#GwJ(g#|rI5n(d1>`i~C8$ei@w zkGJZ=Gab4CX1!00X_kG($d+}M-a;bNG2moqLFg^UWgW4U&np8PCaf{^4Orj4%V)e4 VxpxP8aT9#4eJRfihXistZnVzUQS<-+ delta 1691 zcmV;M24wk=4WJE>8GrI}kM(K)v9BYv&ySK}$+%BRLY6S6{SKKf*hTF0TJhyi85xm1 z);xpM#^|$;1i&UYTJc=5YctplxYj|mc($0{%i+$#!pCt%D17wn(Iv5kxpCVsMYTnN z{0(<9PK0FCf9kq&Vtd3XT3=jSFVG>;U=)HBGdB*W8s??MtD^TRvW$lkeBGZVgtI5EjoRzt zeIIB2V=L$*(#l?|_P6qlFxzxur1iK?JQtUnv_vti{3BJEU&J#iEOU!E$eicY-owR@FSETKR6_$XQpvVO4@PEm+1n{B91>e#&y-#dL+C$)w zyulGA5pT$@!ojiaqT*OMP?W2czLX?ZftTW6^8ZpNs-|Dt=lKoEa0#|6OWwUWl93-l zi)yzgL~<&U2&_{t`gz3M5i6}xKsMwW6?wLEp{U}ztQR}+@Fr)h2^}g%5ATa%@K1AZ zo^KH@Gk>v}8Xz_LG@9FOoRP(QRlk)TYKqDuTj4>a+rL8BH@wj7Pc5S~Ul0{4Y(PhftisDWj>~88lwp*0bK&d+K=_ zdYWgALcgc9GcY4}>wgD5Kt9lzRgiiHD>-*;O~3l=vT*Ek)VyzZgv%z`$%UUphZH{Bj5 zWit{Piayj6evG(MrW1!rUOj)Uv9^eRKN2^2OW4Ou*6U`bTO4?D3$edX{{+gH&%MRU zx_<-=>H5?Hr*H!2(eIhL!^2=1$GFUeEueW_0j2B{J#!i^s<_Ssew?coc~_=cGi<9L z6$q34l>(b#J&O3uu~!@v9MHl1)g#NqSGJOdS_chJw6&@P%rDPS!6GJ?1A(UlRzW($ zpo(*>HP!K}QGa`f{gg?G&J+X;dgxerPy7^1Ky-SX0IlHG0CmAmwiPHs+MJAzVFJid1gpu&M`)Sye zz30Rv0mGWeE-)9{G?_`H#;3<$8Ts2`w?smE_twDmXGg`ULkjTZF2PS3dw-3eqT&&@ z%K5OG12Ql8?5ol<<&6}Tr7b0&@pvQCHkpO>)*85zE`l8a3J;m0B|()asK)YWJW$aN zU~`Ba>#=T<5?o4Kx9;8q-K@8@312mMP zH{M#)7Y?CY@!wxP{0duCf0vd~0!Ec~=fyTEDP`9HYKXrP!WCiuM1QqUmUXUM*igf$ zI!MoHAj$KRb!9=ltjieRnOb2q!K5E|zN${ckIlfIKwFF!`a=Hc;hKZR0YgH1DSJVY|jBdizL?#}d_K-Igl|!6PXRy>MavtE<$;&${ lAiS`mH={F>iYP^LwiIxP^o=ffuV+H0O%*5(^3VR`SNl<;RyhCw diff --git a/.infra/ssh/frey-tusd.pub b/.infra/ssh/frey-tusd.pub index e69de29..1d1b744 100644 --- a/.infra/ssh/frey-tusd.pub +++ b/.infra/ssh/frey-tusd.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDb0fMw6fF2ct31UvChO/r17kXAn6AdPS0TLl4QZauvnEd1jyCekxCwJ3ApafapiQo/Z29zy3Uz0KQxvHvMNaYq6JY4qEyfQIlEhBRjrMlQKvNnQcFlX5ETSy6r8qPhYi2ly0GWB17Er5t2UMt2yKQrcPCWGNy0zOIjymdTdWaQlcjO/76XJr64790Y0+BfLyxPkZ0z39EM/9crLdpUq4SMAyup/mKG5daQbh/MpYEoXe6oyHVK/z1aESBO7EAKnoGauHXgzNYGTxqFnzjU/srmKUY/vR2GAqFqZYweZyNiAuhQ5jfkciGSSR2UeMXZ/y3XI8ATQQJJOnrY2OQ9WKKh kvz@tusd.freyproject.io