[global] appname = "tusd" approot = "/srv/tusd" [global.ssh] key_dir = "./ssh" [global.ansiblecfg.privilege_escalation] become = true [global.ansiblecfg.defaults] host_key_checking = false [infra.provider.aws] access_key = "${var.FREY_AWS_ACCESS_KEY}" region = "us-east-1" secret_key = "${var.FREY_AWS_SECRET_KEY}" [infra.variable.ami.default] us-east-1 = "ami-9bce7af0" [infra.variable.region] default = "us-east-1" [infra.output.public_address] value = "${aws_instance.tusd.0.public_dns}" [infra.output.public_addresses] value = "${join(\"\n\", aws_instance.tusd.*.public_dns)}" [infra.output.endpoint] value = "http://${aws_route53_record.www.name}:80/" [infra.resource.aws_instance.tusd] ami = "${lookup(var.ami, var.region)}" instance_type = "c3.large" key_name = "infra-tusd" security_groups = ["fw-tusd-main"] [infra.resource.aws_instance.tusd.connection] key_file = "{{{config.global.ssh.privatekey_file}}}" user = "{{{config.global.ssh.user}}}" [infra.resource.aws_instance.tusd.tags] Name = "${var.FREY_DOMAIN}" [infra.resource.aws_route53_record.www] name = "${var.FREY_DOMAIN}" records = ["${aws_instance.tusd.public_dns}"] ttl = "300" type = "CNAME" zone_id = "${var.FREY_AWS_ZONE_ID}" [infra.resource.aws_security_group.fw-tusd-main] description = "Infra tusd" name = "fw-tusd-main" [[infra.resource.aws_security_group.fw-tusd-main.ingress]] cidr_blocks = [ "0.0.0.0/0" ] from_port = 8080 protocol = "tcp" to_port = 8080 [[infra.resource.aws_security_group.fw-tusd-main.ingress]] cidr_blocks = [ "0.0.0.0/0" ] from_port = 80 protocol = "tcp" to_port = 80 [[infra.resource.aws_security_group.fw-tusd-main.ingress]] cidr_blocks = [ "0.0.0.0/0" ] from_port = 22 protocol = "tcp" to_port = 22 [[install.playbooks]] hosts = "tusd" name = "Install tusd" [[install.playbooks.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", ] [[install.playbooks.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" [[install.playbooks.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" [[install.playbooks.tasks]] name = "Common | Set motd" copy = "content='Welcome to {{lookup('env', 'FREY_DOMAIN')}}' dest=/etc/motd owner=root group=root mode=0644 backup=yes" [[install.playbooks.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" ] [[install.playbooks.handlers]] name = "Common | Update timezone" command = "dpkg-reconfigure --frontend noninteractive tzdata" [[setup.playbooks]] hosts = "tusd" name = "Setup tusd" [[setup.playbooks.roles]] role = "{{{init.paths.roles_dir}}}/upstart/v1.0.0" upstart_command = "./tusd -port=8080 -dir=/mnt/tusd-data -store-size=10737418240" upstart_description = "tusd server" upstart_name = "{{{config.global.appname}}}" upstart_pidfile_path = "{{{config.global.approot}}}/shared/{{{config.global.appname}}}.pid" upstart_respawn = true upstart_respawn_limit = true upstart_runtime_root = "{{{config.global.approot}}}/current/tusd_linux_amd64/" upstart_user = "www-data" [[setup.playbooks.roles]] role = "{{{init.paths.roles_dir}}}/rsyslog/v3.0.1" [setup.playbooks.roles.rsyslog_rsyslog_d_files.49-tusd] # Send {{{config.global.appname}}} messages to a dedicated logfile directives = [ "&~" ] [[setup.playbooks.roles.rsyslog_rsyslog_d_files.49-tusd.rules]] rule = ":programname, startswith, \"{{{config.global.appname}}}\"" logpath = "{{{config.global.approot}}}/shared/logs/{{{config.global.appname}}}.log" [[setup.playbooks.roles]] role = "{{{init.paths.roles_dir}}}/fqdn/v1.0.0" fqdn = "{{lookup('env', 'FREY_DOMAIN')}}" [[setup.playbooks.tasks]] file = "path=/mnt/tusd-data state=directory owner=www-data group=www-data mode=0755 recurse=yes" name = "tusd | Create tusd data dir" [[deploy.playbooks]] hosts = "tusd" name = "Deploy tusd" [[deploy.playbooks.roles]] # @todo On travis, we could directly use the generated # /home/travis/gopath/src/github.com/tus/tusd/snapshot/tusd_linux_amd64.tar.gz role = "{{{init.paths.roles_dir}}}/deploy/v1.4.0" ansistrano_get_url = "https://github.com/tus/tusd/releases/download/0.1.2/tusd_linux_amd64.tar.gz" ansistrano_deploy_to = "{{{config.global.approot}}}" ansistrano_deploy_via = "download_unarchive" ansistrano_group = "ubuntu" [[deploy.playbooks.tasks]] copy = "src=../env.sh dest={{{config.global.approot}}}/current/tusd_linux_amd64/env.sh mode=0600 owner=root group=root" name = "tusd | Upload environment" [[deploy.playbooks.tasks]] name = "tusd | Set file attributes" file = "path={{{config.global.approot}}}/current/tusd_linux_amd64/tusd mode=0755 owner=www-data group=www-data" [[restart.playbooks]] hosts = "tusd" name = "Restart tusd" [[restart.playbooks.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" [[restart.playbooks.tasks]] action = "service name=tusd state=restarted" name = "tusd | Restart"