chore: update templates to use rich parameters (#6397)
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
@@ -11,16 +11,28 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
variable "ecs-cluster" {
|
||||
description = "Input the ECS cluster ARN to host the workspace"
|
||||
default = ""
|
||||
}
|
||||
variable "cpu" {
|
||||
default = "1024"
|
||||
provider "coder" {
|
||||
feature_use_managed_variables = true
|
||||
}
|
||||
|
||||
variable "memory" {
|
||||
default = "2048"
|
||||
variable "ecs-cluster" {
|
||||
description = "Input the ECS cluster ARN to host the workspace"
|
||||
}
|
||||
|
||||
data "coder_parameter" "cpu" {
|
||||
name = "cpu"
|
||||
description = "The number of CPU units to reserve for the container"
|
||||
type = "number"
|
||||
default = "1024"
|
||||
mutable = true
|
||||
}
|
||||
|
||||
data "coder_parameter" "memory" {
|
||||
name = "memory"
|
||||
description = "The amount of memory (in MiB) to allow the container to use"
|
||||
type = "number"
|
||||
default = "2048"
|
||||
mutable = true
|
||||
}
|
||||
|
||||
# configure AWS provider with creds present on Coder server host
|
||||
@@ -34,14 +46,14 @@ resource "aws_ecs_task_definition" "workspace" {
|
||||
family = "coder"
|
||||
|
||||
requires_compatibilities = ["EC2"]
|
||||
cpu = var.cpu
|
||||
memory = var.memory
|
||||
cpu = data.coder_parameter.cpu.value
|
||||
memory = data.coder_parameter.memory.value
|
||||
container_definitions = jsonencode([
|
||||
{
|
||||
name = "coder-workspace-${data.coder_workspace.me.id}"
|
||||
image = "codercom/enterprise-base:ubuntu"
|
||||
cpu = 1024
|
||||
memory = 2048
|
||||
cpu = tonumber(data.coder_parameter.cpu.value)
|
||||
memory = tonumber(data.coder_parameter.memory.value)
|
||||
essential = true
|
||||
user = "coder"
|
||||
command = ["sh", "-c", coder_agent.coder.init_script]
|
||||
@@ -92,11 +104,10 @@ resource "aws_ecs_service" "workspace" {
|
||||
data "coder_workspace" "me" {}
|
||||
|
||||
resource "coder_agent" "coder" {
|
||||
arch = "amd64"
|
||||
auth = "token"
|
||||
os = "linux"
|
||||
dir = "/home/coder"
|
||||
|
||||
arch = "amd64"
|
||||
auth = "token"
|
||||
os = "linux"
|
||||
dir = "/home/coder"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
@@ -11,53 +11,133 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
# Last updated 2022-05-31
|
||||
# Last updated 2023-03-14
|
||||
# aws ec2 describe-regions | jq -r '[.Regions[].RegionName] | sort'
|
||||
variable "region" {
|
||||
description = "What region should your workspace live in?"
|
||||
data "coder_parameter" "region" {
|
||||
name = "Region"
|
||||
description = "The region to deploy the workspace in."
|
||||
default = "us-east-1"
|
||||
validation {
|
||||
condition = contains([
|
||||
"ap-northeast-1",
|
||||
"ap-northeast-2",
|
||||
"ap-northeast-3",
|
||||
"ap-south-1",
|
||||
"ap-southeast-1",
|
||||
"ap-southeast-2",
|
||||
"ca-central-1",
|
||||
"eu-central-1",
|
||||
"eu-north-1",
|
||||
"eu-west-1",
|
||||
"eu-west-2",
|
||||
"eu-west-3",
|
||||
"sa-east-1",
|
||||
"us-east-1",
|
||||
"us-east-2",
|
||||
"us-west-1",
|
||||
"us-west-2"
|
||||
], var.region)
|
||||
error_message = "Invalid region!"
|
||||
mutable = false
|
||||
option {
|
||||
name = "Asia Pacific (Tokyo)"
|
||||
value = "ap-northeast-1"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Seoul)"
|
||||
value = "ap-northeast-2"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Osaka-Local)"
|
||||
value = "ap-northeast-3"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Mumbai)"
|
||||
value = "ap-south-1"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Singapore)"
|
||||
value = "ap-southeast-1"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Sydney)"
|
||||
value = "ap-southeast-2"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Canada (Central)"
|
||||
value = "ca-central-1"
|
||||
icon = "/emojis/1f1e8-1f1e6.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Frankfurt)"
|
||||
value = "eu-central-1"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Stockholm)"
|
||||
value = "eu-north-1"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Ireland)"
|
||||
value = "eu-west-1"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (London)"
|
||||
value = "eu-west-2"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Paris)"
|
||||
value = "eu-west-3"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "South America (São Paulo)"
|
||||
value = "sa-east-1"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "US East (N. Virginia)"
|
||||
value = "us-east-1"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US East (Ohio)"
|
||||
value = "us-east-2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US West (N. California)"
|
||||
value = "us-west-1"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US West (Oregon)"
|
||||
value = "us-west-2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
}
|
||||
|
||||
variable "instance_type" {
|
||||
data "coder_parameter" "instance_type" {
|
||||
name = "Instance Type"
|
||||
description = "What instance type should your workspace use?"
|
||||
default = "t3.micro"
|
||||
validation {
|
||||
condition = contains([
|
||||
"t3.micro",
|
||||
"t3.small",
|
||||
"t3.medium",
|
||||
"t3.large",
|
||||
"t3.xlarge",
|
||||
"t3.2xlarge",
|
||||
], var.instance_type)
|
||||
error_message = "Invalid instance type!"
|
||||
mutable = false
|
||||
option {
|
||||
name = "2 vCPU, 1 GiB RAM"
|
||||
value = "t3.micro"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 2 GiB RAM"
|
||||
value = "t3.small"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 4 GiB RAM"
|
||||
value = "t3.medium"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 8 GiB RAM"
|
||||
value = "t3.large"
|
||||
}
|
||||
option {
|
||||
name = "4 vCPU, 16 GiB RAM"
|
||||
value = "t3.xlarge"
|
||||
}
|
||||
option {
|
||||
name = "8 vCPU, 32 GiB RAM"
|
||||
value = "t3.2xlarge"
|
||||
}
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
region = var.region
|
||||
region = data.coder_parameter.region.value
|
||||
}
|
||||
|
||||
data "coder_workspace" "me" {
|
||||
@@ -77,10 +157,9 @@ data "aws_ami" "ubuntu" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = "amd64"
|
||||
auth = "aws-instance-identity"
|
||||
os = "linux"
|
||||
|
||||
arch = "amd64"
|
||||
auth = "aws-instance-identity"
|
||||
os = "linux"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
@@ -174,8 +253,8 @@ EOT
|
||||
|
||||
resource "aws_instance" "dev" {
|
||||
ami = data.aws_ami.ubuntu.id
|
||||
availability_zone = "${var.region}a"
|
||||
instance_type = var.instance_type
|
||||
availability_zone = "${data.coder_parameter.region.value}a"
|
||||
instance_type = data.coder_parameter.instance_type.value
|
||||
|
||||
user_data = data.coder_workspace.me.transition == "start" ? local.user_data_start : local.user_data_end
|
||||
tags = {
|
||||
@@ -189,7 +268,7 @@ resource "coder_metadata" "workspace_info" {
|
||||
resource_id = aws_instance.dev.id
|
||||
item {
|
||||
key = "region"
|
||||
value = var.region
|
||||
value = data.coder_parameter.region.value
|
||||
}
|
||||
item {
|
||||
key = "instance type"
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
@@ -11,53 +11,133 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
# Last updated 2022-05-31
|
||||
# Last updated 2023-03-14
|
||||
# aws ec2 describe-regions | jq -r '[.Regions[].RegionName] | sort'
|
||||
variable "region" {
|
||||
description = "What region should your workspace live in?"
|
||||
data "coder_parameter" "region" {
|
||||
name = "Region"
|
||||
description = "The region to deploy the workspace in."
|
||||
default = "us-east-1"
|
||||
validation {
|
||||
condition = contains([
|
||||
"ap-northeast-1",
|
||||
"ap-northeast-2",
|
||||
"ap-northeast-3",
|
||||
"ap-south-1",
|
||||
"ap-southeast-1",
|
||||
"ap-southeast-2",
|
||||
"ca-central-1",
|
||||
"eu-central-1",
|
||||
"eu-north-1",
|
||||
"eu-west-1",
|
||||
"eu-west-2",
|
||||
"eu-west-3",
|
||||
"sa-east-1",
|
||||
"us-east-1",
|
||||
"us-east-2",
|
||||
"us-west-1",
|
||||
"us-west-2"
|
||||
], var.region)
|
||||
error_message = "Invalid region!"
|
||||
mutable = false
|
||||
option {
|
||||
name = "Asia Pacific (Tokyo)"
|
||||
value = "ap-northeast-1"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Seoul)"
|
||||
value = "ap-northeast-2"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Osaka-Local)"
|
||||
value = "ap-northeast-3"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Mumbai)"
|
||||
value = "ap-south-1"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Singapore)"
|
||||
value = "ap-southeast-1"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Asia Pacific (Sydney)"
|
||||
value = "ap-southeast-2"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Canada (Central)"
|
||||
value = "ca-central-1"
|
||||
icon = "/emojis/1f1e8-1f1e6.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Frankfurt)"
|
||||
value = "eu-central-1"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Stockholm)"
|
||||
value = "eu-north-1"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Ireland)"
|
||||
value = "eu-west-1"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (London)"
|
||||
value = "eu-west-2"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "EU (Paris)"
|
||||
value = "eu-west-3"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "South America (São Paulo)"
|
||||
value = "sa-east-1"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "US East (N. Virginia)"
|
||||
value = "us-east-1"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US East (Ohio)"
|
||||
value = "us-east-2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US West (N. California)"
|
||||
value = "us-west-1"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US West (Oregon)"
|
||||
value = "us-west-2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
}
|
||||
|
||||
variable "instance_type" {
|
||||
data "coder_parameter" "instance_type" {
|
||||
name = "Instance Type"
|
||||
description = "What instance type should your workspace use?"
|
||||
default = "t3.micro"
|
||||
validation {
|
||||
condition = contains([
|
||||
"t3.micro",
|
||||
"t3.small",
|
||||
"t3.medium",
|
||||
"t3.large",
|
||||
"t3.xlarge",
|
||||
"t3.2xlarge",
|
||||
], var.instance_type)
|
||||
error_message = "Invalid instance type!"
|
||||
mutable = false
|
||||
option {
|
||||
name = "2 vCPU, 1 GiB RAM"
|
||||
value = "t3.micro"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 2 GiB RAM"
|
||||
value = "t3.small"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 4 GiB RAM"
|
||||
value = "t3.medium"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 8 GiB RAM"
|
||||
value = "t3.large"
|
||||
}
|
||||
option {
|
||||
name = "4 vCPU, 16 GiB RAM"
|
||||
value = "t3.xlarge"
|
||||
}
|
||||
option {
|
||||
name = "8 vCPU, 32 GiB RAM"
|
||||
value = "t3.2xlarge"
|
||||
}
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
region = var.region
|
||||
region = data.coder_parameter.region.value
|
||||
}
|
||||
|
||||
data "coder_workspace" "me" {
|
||||
@@ -74,10 +154,9 @@ data "aws_ami" "windows" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = "amd64"
|
||||
auth = "aws-instance-identity"
|
||||
os = "windows"
|
||||
|
||||
arch = "amd64"
|
||||
auth = "aws-instance-identity"
|
||||
os = "windows"
|
||||
login_before_ready = false
|
||||
}
|
||||
|
||||
@@ -104,9 +183,8 @@ EOT
|
||||
|
||||
resource "aws_instance" "dev" {
|
||||
ami = data.aws_ami.windows.id
|
||||
availability_zone = "${var.region}a"
|
||||
instance_type = var.instance_type
|
||||
count = 1
|
||||
availability_zone = "${data.coder_parameter.region.value}a"
|
||||
instance_type = data.coder_parameter.instance_type.value
|
||||
|
||||
user_data = data.coder_workspace.me.transition == "start" ? local.user_data_start : local.user_data_end
|
||||
tags = {
|
||||
@@ -114,14 +192,13 @@ resource "aws_instance" "dev" {
|
||||
# Required if you are using our example policy, see template README
|
||||
Coder_Provisioned = "true"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
resource "coder_metadata" "workspace_info" {
|
||||
resource_id = aws_instance.dev.id
|
||||
item {
|
||||
key = "region"
|
||||
value = var.region
|
||||
value = data.coder_parameter.region.value
|
||||
}
|
||||
item {
|
||||
key = "instance type"
|
||||
|
||||
@@ -2,73 +2,215 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
azurerm = {
|
||||
source = "hashicorp/azurerm"
|
||||
version = "=3.0.0"
|
||||
version = "~>3.47.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
variable "location" {
|
||||
data "coder_parameter" "location" {
|
||||
name = "Location"
|
||||
description = "What location should your workspace live in?"
|
||||
default = "eastus"
|
||||
validation {
|
||||
condition = contains([
|
||||
"eastus",
|
||||
"southcentralus",
|
||||
"westus2",
|
||||
"australiaeast",
|
||||
"southeastasia",
|
||||
"northeurope",
|
||||
"westeurope",
|
||||
"centralindia",
|
||||
"eastasia",
|
||||
"japaneast",
|
||||
"brazilsouth",
|
||||
"asia",
|
||||
"asiapacific",
|
||||
"australia",
|
||||
"brazil",
|
||||
"india",
|
||||
"japan",
|
||||
"southafrica",
|
||||
"switzerland",
|
||||
"uae",
|
||||
], var.location)
|
||||
error_message = "Invalid location!"
|
||||
icon = "/emojis/1f310.png"
|
||||
mutable = false
|
||||
option {
|
||||
name = "US (Virginia)"
|
||||
value = "eastus"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US (Virginia) 2"
|
||||
value = "eastus2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US (Texas)"
|
||||
value = "southcentralus"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US (Washington)"
|
||||
value = "westus2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US (Arizona)"
|
||||
value = "westus3"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "US (Iowa)"
|
||||
value = "centralus"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "Canada (Toronto)"
|
||||
value = "canadacentral"
|
||||
icon = "/emojis/1f1e8-1f1e6.png"
|
||||
}
|
||||
option {
|
||||
name = "Brazil (Sao Paulo)"
|
||||
value = "brazilsouth"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "East Asia (Hong Kong)"
|
||||
value = "eastasia"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Southeast Asia (Singapore)"
|
||||
value = "southeastasia"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Australia (New South Wales)"
|
||||
value = "australiaeast"
|
||||
icon = "/emojis/1f1e6-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "China (Hebei)"
|
||||
value = "chinanorth3"
|
||||
icon = "/emojis/1f1e8-1f1f3.png"
|
||||
}
|
||||
option {
|
||||
name = "India (Pune)"
|
||||
value = "centralindia"
|
||||
icon = "/emojis/1f1ee-1f1f3.png"
|
||||
}
|
||||
option {
|
||||
name = "Japan (Tokyo)"
|
||||
value = "japaneast"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
option {
|
||||
name = "Korea (Seoul)"
|
||||
value = "koreacentral"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Europe (Ireland)"
|
||||
value = "northeurope"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "Europe (Netherlands)"
|
||||
value = "westeurope"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "France (Paris)"
|
||||
value = "francecentral"
|
||||
icon = "/emojis/1f1eb-1f1f7.png"
|
||||
}
|
||||
option {
|
||||
name = "Germany (Frankfurt)"
|
||||
value = "germanywestcentral"
|
||||
icon = "/emojis/1f1e9-1f1ea.png"
|
||||
}
|
||||
option {
|
||||
name = "Norway (Oslo)"
|
||||
value = "norwayeast"
|
||||
icon = "/emojis/1f1f3-1f1f4.png"
|
||||
}
|
||||
option {
|
||||
name = "Sweden (Gävle)"
|
||||
value = "swedencentral"
|
||||
icon = "/emojis/1f1f8-1f1ea.png"
|
||||
}
|
||||
option {
|
||||
name = "Switzerland (Zurich)"
|
||||
value = "switzerlandnorth"
|
||||
icon = "/emojis/1f1e8-1f1ed.png"
|
||||
}
|
||||
option {
|
||||
name = "Qatar (Doha)"
|
||||
value = "qatarcentral"
|
||||
icon = "/emojis/1f1f6-1f1e6.png"
|
||||
}
|
||||
option {
|
||||
name = "UAE (Dubai)"
|
||||
value = "uaenorth"
|
||||
icon = "/emojis/1f1e6-1f1ea.png"
|
||||
}
|
||||
option {
|
||||
name = "South Africa (Johannesburg)"
|
||||
value = "southafricanorth"
|
||||
icon = "/emojis/1f1ff-1f1e6.png"
|
||||
}
|
||||
option {
|
||||
name = "UK (London)"
|
||||
value = "uksouth"
|
||||
icon = "/emojis/1f1ec-1f1e7.png"
|
||||
}
|
||||
}
|
||||
|
||||
variable "instance_type" {
|
||||
data "coder_parameter" "instance_type" {
|
||||
name = "Instance Type"
|
||||
description = "What instance type should your workspace use?"
|
||||
default = "Standard_B4ms"
|
||||
validation {
|
||||
condition = contains([
|
||||
"Standard_B1ms",
|
||||
"Standard_B2ms",
|
||||
"Standard_B4ms",
|
||||
"Standard_B8ms",
|
||||
"Standard_B12ms",
|
||||
"Standard_B16ms",
|
||||
"Standard_D2as_v5",
|
||||
"Standard_D4as_v5",
|
||||
"Standard_D8as_v5",
|
||||
"Standard_D16as_v5",
|
||||
"Standard_D32as_v5",
|
||||
], var.instance_type)
|
||||
error_message = "Invalid instance type!"
|
||||
icon = "/icon/azure.png"
|
||||
mutable = false
|
||||
option {
|
||||
name = "Standard_B1ms (1 vCPU, 2 GiB RAM)"
|
||||
value = "Standard_B1ms"
|
||||
}
|
||||
option {
|
||||
name = "Standard_B2ms (2 vCPU, 8 GiB RAM)"
|
||||
value = "Standard_B2ms"
|
||||
}
|
||||
option {
|
||||
name = "Standard_B4ms (4 vCPU, 16 GiB RAM)"
|
||||
value = "Standard_B4ms"
|
||||
}
|
||||
option {
|
||||
name = "Standard_B8ms (8 vCPU, 32 GiB RAM)"
|
||||
value = "Standard_B8ms"
|
||||
}
|
||||
option {
|
||||
name = "Standard_B12ms (12 vCPU, 48 GiB RAM)"
|
||||
value = "Standard_B12ms"
|
||||
}
|
||||
option {
|
||||
name = "Standard_B16ms (16 vCPU, 64 GiB RAM)"
|
||||
value = "Standard_B16ms"
|
||||
}
|
||||
option {
|
||||
name = "Standard_D2as_v5 (2 vCPU, 8 GiB RAM)"
|
||||
value = "Standard_D2as_v5"
|
||||
}
|
||||
option {
|
||||
name = "Standard_D4as_v5 (4 vCPU, 16 GiB RAM)"
|
||||
value = "Standard_D4as_v5"
|
||||
}
|
||||
option {
|
||||
name = "Standard_D8as_v5 (8 vCPU, 32 GiB RAM)"
|
||||
value = "Standard_D8as_v5"
|
||||
}
|
||||
option {
|
||||
name = "Standard_D16as_v5 (16 vCPU, 64 GiB RAM)"
|
||||
value = "Standard_D16as_v5"
|
||||
}
|
||||
option {
|
||||
name = "Standard_D32as_v5 (32 vCPU, 128 GiB RAM)"
|
||||
value = "Standard_D32as_v5"
|
||||
}
|
||||
}
|
||||
|
||||
variable "home_size" {
|
||||
type = number
|
||||
data "coder_parameter" "home_size" {
|
||||
name = "Home Volume Size"
|
||||
description = "How large would you like your home volume to be (in GB)?"
|
||||
default = 20
|
||||
type = "number"
|
||||
icon = "/icon/azure.png"
|
||||
mutable = false
|
||||
validation {
|
||||
condition = var.home_size >= 1
|
||||
error_message = "Value must be greater than or equal to 1."
|
||||
min = 1
|
||||
max = 1024
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,10 +222,9 @@ data "coder_workspace" "me" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = "amd64"
|
||||
os = "linux"
|
||||
auth = "azure-instance-identity"
|
||||
|
||||
arch = "amd64"
|
||||
os = "linux"
|
||||
auth = "azure-instance-identity"
|
||||
login_before_ready = false
|
||||
}
|
||||
|
||||
@@ -99,7 +240,7 @@ locals {
|
||||
|
||||
resource "azurerm_resource_group" "main" {
|
||||
name = "${local.prefix}-resources"
|
||||
location = var.location
|
||||
location = data.coder_parameter.location.value
|
||||
|
||||
tags = {
|
||||
Coder_Provisioned = "true"
|
||||
@@ -160,7 +301,7 @@ resource "azurerm_managed_disk" "home" {
|
||||
name = "home"
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
storage_account_type = "StandardSSD_LRS"
|
||||
disk_size_gb = var.home_size
|
||||
disk_size_gb = data.coder_parameter.home_size.value
|
||||
}
|
||||
|
||||
// azurerm requires an SSH key (or password) for an admin user or it won't start a VM. However,
|
||||
@@ -175,7 +316,7 @@ resource "azurerm_linux_virtual_machine" "main" {
|
||||
name = "vm"
|
||||
resource_group_name = azurerm_resource_group.main.name
|
||||
location = azurerm_resource_group.main.location
|
||||
size = var.instance_type
|
||||
size = data.coder_parameter.instance_type.value
|
||||
// cloud-init overwrites this, so the value here doesn't matter
|
||||
admin_username = "adminuser"
|
||||
admin_ssh_key {
|
||||
@@ -227,6 +368,6 @@ resource "coder_metadata" "home_info" {
|
||||
|
||||
item {
|
||||
key = "size"
|
||||
value = "${var.home_size} GiB"
|
||||
value = "${data.coder_parameter.home_size.value} GiB"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
digitalocean = {
|
||||
source = "digitalocean/digitalocean"
|
||||
@@ -11,6 +11,10 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
provider "coder" {
|
||||
feature_use_managed_variables = true
|
||||
}
|
||||
|
||||
variable "step1_do_project_id" {
|
||||
type = string
|
||||
description = <<-EOF
|
||||
@@ -21,9 +25,11 @@ variable "step1_do_project_id" {
|
||||
sensitive = true
|
||||
|
||||
validation {
|
||||
# make sure length of alphanumeric string is 36
|
||||
condition = length(var.step1_do_project_id) == 36
|
||||
error_message = "Invalid Digital Ocean Project ID."
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
variable "step2_do_admin_ssh_key" {
|
||||
@@ -45,43 +51,179 @@ variable "step2_do_admin_ssh_key" {
|
||||
}
|
||||
}
|
||||
|
||||
variable "droplet_image" {
|
||||
type = string
|
||||
description = "Which Droplet image would you like to use for your workspace?"
|
||||
default = "ubuntu-22-04-x64"
|
||||
validation {
|
||||
condition = contains(["ubuntu-22-04-x64", "ubuntu-20-04-x64", "fedora-36-x64", "fedora-35-x64", "debian-11-x64", "debian-10-x64", "centos-stream-9-x64", "centos-stream-8-x64", "rockylinux-8-x64", "rockylinux-8-4-x64"], var.droplet_image)
|
||||
error_message = "Value must be ubuntu-22-04-x64, ubuntu-20-04-x64, fedora-36-x64, fedora-35-x64, debian-11-x64, debian-10-x64, centos-stream-9-x64, centos-stream-8-x64, rockylinux-8-x64 or rockylinux-8-4-x64."
|
||||
data "coder_parameter" "droplet_image" {
|
||||
name = "Which Droplet image would you like to use for your workspace?"
|
||||
default = "ubuntu-22-04-x64"
|
||||
type = "string"
|
||||
mutable = false
|
||||
option {
|
||||
name = "Ubuntu 22.04"
|
||||
value = "ubuntu-22-04-x64"
|
||||
icon = "/icon/ubuntu.svg"
|
||||
}
|
||||
option {
|
||||
name = "Ubuntu 20.04"
|
||||
value = "ubuntu-20-04-x64"
|
||||
icon = "/icon/ubuntu.svg"
|
||||
}
|
||||
option {
|
||||
name = "Fedora 36"
|
||||
value = "fedora-36-x64"
|
||||
icon = "/icon/fedora.svg"
|
||||
}
|
||||
option {
|
||||
name = "Fedora 35"
|
||||
value = "fedora-35-x64"
|
||||
icon = "/icon/fedora.svg"
|
||||
}
|
||||
option {
|
||||
name = "Debian 11"
|
||||
value = "debian-11-x64"
|
||||
icon = "/icon/debian.svg"
|
||||
}
|
||||
option {
|
||||
name = "Debian 10"
|
||||
value = "debian-10-x64"
|
||||
icon = "/icon/debian.svg"
|
||||
}
|
||||
option {
|
||||
name = "CentOS Stream 9"
|
||||
value = "centos-stream-9-x64"
|
||||
icon = "/icon/centos.svg"
|
||||
}
|
||||
option {
|
||||
name = "CentOS Stream 8"
|
||||
value = "centos-stream-8-x64"
|
||||
icon = "/icon/centos.svg"
|
||||
}
|
||||
option {
|
||||
name = "Rocky Linux 8"
|
||||
value = "rockylinux-8-x64"
|
||||
icon = "/icon/rockylinux.svg"
|
||||
}
|
||||
option {
|
||||
name = "Rocky Linux 8.4"
|
||||
value = "rockylinux-8-4-x64"
|
||||
icon = "/icon/rockylinux.svg"
|
||||
}
|
||||
}
|
||||
|
||||
variable "droplet_size" {
|
||||
type = string
|
||||
description = "Which Droplet configuration would you like to use?"
|
||||
default = "s-1vcpu-1gb"
|
||||
validation {
|
||||
condition = contains(["s-1vcpu-1gb", "s-1vcpu-2gb", "s-2vcpu-2gb", "s-2vcpu-4gb", "s-4vcpu-8gb", "s-8vcpu-16gb"], var.droplet_size)
|
||||
error_message = "Value must be s-1vcpu-1gb, s-1vcpu-2gb, s-2vcpu-2gb, s-2vcpu-4gb, s-4vcpu-8gb or s-8vcpu-16gb."
|
||||
data "coder_parameter" "droplet_size" {
|
||||
name = "Which Droplet configuration would you like to use?"
|
||||
default = "s-1vcpu-1gb"
|
||||
type = "string"
|
||||
icon = "/icon/memory.svg"
|
||||
mutable = false
|
||||
option {
|
||||
name = "1 vCPU, 1 GB RAM"
|
||||
value = "s-1vcpu-1gb"
|
||||
}
|
||||
option {
|
||||
name = "1 vCPU, 2 GB RAM"
|
||||
value = "s-1vcpu-2gb"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 2 GB RAM"
|
||||
value = "s-2vcpu-2gb"
|
||||
}
|
||||
option {
|
||||
name = "2 vCPU, 4 GB RAM"
|
||||
value = "s-2vcpu-4gb"
|
||||
}
|
||||
option {
|
||||
name = "4 vCPU, 8 GB RAM"
|
||||
value = "s-4vcpu-8gb"
|
||||
}
|
||||
option {
|
||||
name = "8 vCPU, 16 GB RAM"
|
||||
value = "s-8vcpu-16gb"
|
||||
}
|
||||
}
|
||||
|
||||
variable "home_volume_size" {
|
||||
type = number
|
||||
description = "How large would you like your home volume to be (in GB)?"
|
||||
default = 20
|
||||
|
||||
data "coder_parameter" "home_volume_size" {
|
||||
name = "How large would you like your home volume to be (in GB)?"
|
||||
description = "This volume will be mounted to /home/coder."
|
||||
type = "number"
|
||||
default = "20"
|
||||
mutable = false
|
||||
validation {
|
||||
condition = var.home_volume_size >= 1
|
||||
error_message = "Value must be greater than or equal to 1."
|
||||
min = 1
|
||||
max = 999999
|
||||
}
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
type = string
|
||||
description = "Which region would you like to use?"
|
||||
data "coder_parameter" "region" {
|
||||
name = "Which region would you like to use?"
|
||||
description = "This is the region where your workspace will be created."
|
||||
icon = "/emojis/1f30e.png"
|
||||
type = "string"
|
||||
default = "ams3"
|
||||
validation {
|
||||
condition = contains(["nyc1", "nyc2", "nyc3", "sfo1", "sfo2", "sfo3", "ams2", "ams3", "sgp1", "lon1", "fra1", "tor1", "blr1"], var.region)
|
||||
error_message = "Value must be nyc1, nyc2, nyc3, sfo1, sfo2, sfo3, ams2, ams3, sgp1, lon1, fra1, tor1 or blr1."
|
||||
mutable = false
|
||||
option {
|
||||
name = "New York 1"
|
||||
value = "nyc1"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "New York 2"
|
||||
value = "nyc2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "New York 3"
|
||||
value = "nyc3"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "San Francisco 1"
|
||||
value = "sfo1"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "San Francisco 2"
|
||||
value = "sfo2"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "San Francisco 3"
|
||||
value = "sfo3"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "Amsterdam 2"
|
||||
value = "ams2"
|
||||
icon = "/emojis/1f1f3-1f1f1.png"
|
||||
}
|
||||
option {
|
||||
name = "Amsterdam 3"
|
||||
value = "ams3"
|
||||
icon = "/emojis/1f1f3-1f1f1.png"
|
||||
}
|
||||
option {
|
||||
name = "Singapore 1"
|
||||
value = "sgp1"
|
||||
icon = "/emojis/1f1f8-1f1ec.png"
|
||||
}
|
||||
option {
|
||||
name = "London 1"
|
||||
value = "lon1"
|
||||
icon = "/emojis/1f1ec-1f1e7.png"
|
||||
}
|
||||
option {
|
||||
name = "Frankfurt 1"
|
||||
value = "fra1"
|
||||
icon = "/emojis/1f1e9-1f1ea.png"
|
||||
}
|
||||
option {
|
||||
name = "Toronto 1"
|
||||
value = "tor1"
|
||||
icon = "/emojis/1f1e8-1f1e6.png"
|
||||
}
|
||||
option {
|
||||
name = "Bangalore 1"
|
||||
value = "blr1"
|
||||
icon = "/emojis/1f1ee-1f1f3.png"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,9 +243,9 @@ resource "coder_agent" "main" {
|
||||
}
|
||||
|
||||
resource "digitalocean_volume" "home_volume" {
|
||||
region = var.region
|
||||
region = data.coder_parameter.region.value
|
||||
name = "coder-${data.coder_workspace.me.id}-home"
|
||||
size = var.home_volume_size
|
||||
size = data.coder_parameter.home_volume_size.value
|
||||
initial_filesystem_type = "ext4"
|
||||
initial_filesystem_label = "coder-home"
|
||||
# Protect the volume from being deleted due to changes in attributes.
|
||||
@@ -113,11 +255,12 @@ resource "digitalocean_volume" "home_volume" {
|
||||
}
|
||||
|
||||
resource "digitalocean_droplet" "workspace" {
|
||||
region = var.region
|
||||
count = data.coder_workspace.me.start_count
|
||||
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
|
||||
image = var.droplet_image
|
||||
size = var.droplet_size
|
||||
region = data.coder_parameter.region.value
|
||||
count = data.coder_workspace.me.start_count
|
||||
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
|
||||
image = data.coder_parameter.droplet_image.value
|
||||
size = data.coder_parameter.droplet_size.value
|
||||
|
||||
volume_ids = [digitalocean_volume.home_volume.id]
|
||||
user_data = templatefile("cloud-config.yaml.tftpl", {
|
||||
username = data.coder_workspace.me.owner
|
||||
@@ -161,5 +304,4 @@ resource "coder_metadata" "volume-info" {
|
||||
key = "size"
|
||||
value = "${digitalocean_volume.home_volume.size} GiB"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
docker = {
|
||||
source = "kreuzwerker/docker"
|
||||
version = "~> 2.20.2"
|
||||
version = "~> 3.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,9 +21,8 @@ data "coder_workspace" "me" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
|
||||
@@ -3,11 +3,11 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
docker = {
|
||||
source = "kreuzwerker/docker"
|
||||
version = "~> 2.20.2"
|
||||
version = "~> 3.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,9 +22,8 @@ data "coder_workspace" "me" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
@@ -50,24 +49,29 @@ resource "coder_app" "code-server" {
|
||||
interval = 3
|
||||
threshold = 10
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
variable "docker_image" {
|
||||
description = "What Docker image would you like to use for your workspace?"
|
||||
data "coder_parameter" "docker_image" {
|
||||
name = "What Docker image would you like to use for your workspace?"
|
||||
description = "The Docker image will be used to build your workspace. You can choose from a list of pre-built images or provide your own."
|
||||
default = "base"
|
||||
|
||||
# List of images available for the user to choose from.
|
||||
# Delete this condition to give users free text input.
|
||||
validation {
|
||||
condition = contains(["base", "java", "node"], var.docker_image)
|
||||
error_message = "Invalid Docker image!"
|
||||
icon = "/icon/docker.png"
|
||||
type = "string"
|
||||
mutable = false
|
||||
option {
|
||||
name = "Base"
|
||||
value = "base"
|
||||
icon = "/icon/code.svg"
|
||||
}
|
||||
|
||||
# Prevents admin errors when the image is not found
|
||||
validation {
|
||||
condition = fileexists("images/${var.docker_image}.Dockerfile")
|
||||
error_message = "Invalid Docker image. The file does not exist in the images directory."
|
||||
option {
|
||||
name = "Java"
|
||||
value = "java"
|
||||
icon = "/icon/java.svg"
|
||||
}
|
||||
option {
|
||||
name = "Node"
|
||||
value = "node"
|
||||
icon = "/icon/node.svg"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,18 +105,17 @@ resource "docker_volume" "home_volume" {
|
||||
resource "docker_image" "coder_image" {
|
||||
name = "coder-base-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
|
||||
build {
|
||||
path = "./images/"
|
||||
dockerfile = "${var.docker_image}.Dockerfile"
|
||||
tag = ["coder-${var.docker_image}:v0.1"]
|
||||
context = "./images/"
|
||||
dockerfile = "${data.coder_parameter.docker_image.value}.Dockerfile"
|
||||
tag = ["coder-${data.coder_parameter.docker_image.value}:v0.1"]
|
||||
}
|
||||
|
||||
# Keep alive for other workspaces to use upon deletion
|
||||
keep_locally = true
|
||||
}
|
||||
|
||||
resource "docker_container" "workspace" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
image = docker_image.coder_image.latest
|
||||
image = docker_image.coder_image.image_id
|
||||
# Uses lower() to avoid Docker restriction on container names.
|
||||
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
|
||||
# Hostname makes the shell more user friendly: coder@my-workspace:~$
|
||||
@@ -154,6 +157,6 @@ resource "coder_metadata" "container_info" {
|
||||
|
||||
item {
|
||||
key = "image"
|
||||
value = var.docker_image
|
||||
value = data.coder_parameter.docker_image.value
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,11 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
docker = {
|
||||
source = "kreuzwerker/docker"
|
||||
version = "~> 2.20.2"
|
||||
version = "~> 3.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,26 +27,33 @@ provider "docker" {
|
||||
data "coder_workspace" "me" {
|
||||
}
|
||||
|
||||
variable "docker_image" {
|
||||
default = "codercom/enterprise-base:ubuntu"
|
||||
data "coder_parameter" "docker_image" {
|
||||
name = "What Docker image would you like to use for your workspace?"
|
||||
description = "The Docker image will be used to build your workspace."
|
||||
default = "codercom/enterprise-base:ubuntu"
|
||||
icon = "/icon/docker.png"
|
||||
type = "string"
|
||||
mutable = false
|
||||
}
|
||||
|
||||
variable "dotfiles_uri" {
|
||||
data "coder_parameter" "dotfiles_uri" {
|
||||
name = "What dotfiles repo would you like to use for your workspace?"
|
||||
description = <<-EOF
|
||||
Dotfiles repo URI (optional)
|
||||
|
||||
see https://dotfiles.github.io
|
||||
EOF
|
||||
default = ""
|
||||
type = "string"
|
||||
mutable = true
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
env = { "DOTFILES_URI" = var.dotfiles_uri != "" ? var.dotfiles_uri : null }
|
||||
env = { "DOTFILES_URI" = data.coder_parameter.dotfiles_uri.value != "" ? data.coder_parameter.dotfiles_uri.value : null }
|
||||
startup_script = <<-EOT
|
||||
set -e
|
||||
if [ -n "$DOTFILES_URI" ]; then
|
||||
@@ -85,7 +92,7 @@ resource "docker_volume" "home_volume" {
|
||||
|
||||
resource "docker_container" "workspace" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
image = var.docker_image
|
||||
image = data.coder_parameter.docker_image.value
|
||||
# Uses lower() to avoid Docker restriction on container names.
|
||||
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
|
||||
# Hostname makes the shell more user friendly: coder@my-workspace:~$
|
||||
@@ -127,6 +134,6 @@ resource "coder_metadata" "container_info" {
|
||||
|
||||
item {
|
||||
key = "image"
|
||||
value = var.docker_image
|
||||
value = data.coder_parameter.docker_image.value
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
docker = {
|
||||
source = "kreuzwerker/docker"
|
||||
version = "~> 2.22"
|
||||
version = "~> 3.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,9 +25,8 @@ data "coder_workspace" "me" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
|
||||
arch = data.coder_provisioner.me.arch
|
||||
os = "linux"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
@@ -66,7 +65,6 @@ resource "coder_app" "code-server" {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
resource "docker_volume" "home_volume" {
|
||||
name = "coder-${data.coder_workspace.me.id}-home"
|
||||
# Protect the volume from being deleted due to changes in attributes.
|
||||
@@ -94,11 +92,10 @@ resource "docker_volume" "home_volume" {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
resource "docker_image" "main" {
|
||||
name = "coder-${data.coder_workspace.me.id}"
|
||||
build {
|
||||
path = "./build"
|
||||
context = "./build"
|
||||
build_args = {
|
||||
USER = local.username
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
@@ -11,21 +11,49 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
provider "coder" {
|
||||
feature_use_managed_variables = true
|
||||
}
|
||||
|
||||
variable "project_id" {
|
||||
description = "Which Google Compute Project should your workspace live in?"
|
||||
}
|
||||
|
||||
variable "zone" {
|
||||
description = "What region should your workspace live in?"
|
||||
default = "us-central1-a"
|
||||
validation {
|
||||
condition = contains(["northamerica-northeast1-a", "us-central1-a", "us-west2-c", "europe-west4-b", "southamerica-east1-a"], var.zone)
|
||||
error_message = "Invalid zone!"
|
||||
data "coder_parameter" "zone" {
|
||||
name = "What region should your workspace live in?"
|
||||
type = "string"
|
||||
icon = "/emojis/1f30e.png"
|
||||
default = "us-central1-a"
|
||||
mutable = false
|
||||
option {
|
||||
name = "North America (Northeast)"
|
||||
value = "northamerica-northeast1-a"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "North America (Central)"
|
||||
value = "us-central1-a"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "North America (West)"
|
||||
value = "us-west2-c"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "Europe (West)"
|
||||
value = "europe-west4-b"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "South America (East)"
|
||||
value = "southamerica-east1-a"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
}
|
||||
|
||||
provider "google" {
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
project = var.project_id
|
||||
}
|
||||
|
||||
@@ -38,7 +66,7 @@ data "coder_workspace" "me" {
|
||||
resource "google_compute_disk" "root" {
|
||||
name = "coder-${data.coder_workspace.me.id}-root"
|
||||
type = "pd-ssd"
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
image = "debian-cloud/debian-11"
|
||||
lifecycle {
|
||||
ignore_changes = [name, image]
|
||||
@@ -46,10 +74,9 @@ resource "google_compute_disk" "root" {
|
||||
}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
auth = "google-instance-identity"
|
||||
arch = "amd64"
|
||||
os = "linux"
|
||||
|
||||
auth = "google-instance-identity"
|
||||
arch = "amd64"
|
||||
os = "linux"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
@@ -79,7 +106,7 @@ resource "coder_app" "code-server" {
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "dev" {
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
count = data.coder_workspace.me.start_count
|
||||
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root"
|
||||
machine_type = "e2-medium"
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
@@ -11,21 +11,49 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
provider "coder" {
|
||||
feature_use_managed_variables = true
|
||||
}
|
||||
|
||||
variable "project_id" {
|
||||
description = "Which Google Compute Project should your workspace live in?"
|
||||
}
|
||||
|
||||
variable "zone" {
|
||||
description = "What region should your workspace live in?"
|
||||
default = "us-central1-a"
|
||||
validation {
|
||||
condition = contains(["northamerica-northeast1-a", "us-central1-a", "us-west2-c", "europe-west4-b", "southamerica-east1-a"], var.zone)
|
||||
error_message = "Invalid zone!"
|
||||
data "coder_parameter" "zone" {
|
||||
name = "What region should your workspace live in?"
|
||||
type = "string"
|
||||
default = "us-central1-a"
|
||||
icon = "/emojis/1f30e.png"
|
||||
mutable = false
|
||||
option {
|
||||
name = "North America (Northeast)"
|
||||
value = "northamerica-northeast1-a"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "North America (Central)"
|
||||
value = "us-central1-a"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "North America (West)"
|
||||
value = "us-west2-c"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "Europe (West)"
|
||||
value = "europe-west4-b"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "South America (East)"
|
||||
value = "southamerica-east1-a"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
}
|
||||
|
||||
provider "google" {
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
project = var.project_id
|
||||
}
|
||||
|
||||
@@ -83,7 +111,7 @@ module "gce-container" {
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "dev" {
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
count = data.coder_workspace.me.start_count
|
||||
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
|
||||
machine_type = "e2-medium"
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
@@ -11,21 +11,49 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
provider "coder" {
|
||||
feature_use_managed_variables = true
|
||||
}
|
||||
|
||||
variable "project_id" {
|
||||
description = "Which Google Compute Project should your workspace live in?"
|
||||
}
|
||||
|
||||
variable "zone" {
|
||||
description = "What region should your workspace live in?"
|
||||
default = "us-central1-a"
|
||||
validation {
|
||||
condition = contains(["northamerica-northeast1-a", "us-central1-a", "us-west2-c", "europe-west4-b", "southamerica-east1-a"], var.zone)
|
||||
error_message = "Invalid zone!"
|
||||
data "coder_parameter" "zone" {
|
||||
name = "What region should your workspace live in?"
|
||||
type = "string"
|
||||
default = "us-central1-a"
|
||||
icon = "/emojis/1f30e.png"
|
||||
mutable = false
|
||||
option {
|
||||
name = "North America (Northeast)"
|
||||
value = "northamerica-northeast1-a"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "North America (Central)"
|
||||
value = "us-central1-a"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "North America (West)"
|
||||
value = "us-west2-c"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
option {
|
||||
name = "Europe (West)"
|
||||
value = "europe-west4-b"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
option {
|
||||
name = "South America (East)"
|
||||
value = "southamerica-east1-a"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
}
|
||||
|
||||
provider "google" {
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
project = var.project_id
|
||||
}
|
||||
|
||||
@@ -38,7 +66,7 @@ data "google_compute_default_service_account" "default" {
|
||||
resource "google_compute_disk" "root" {
|
||||
name = "coder-${data.coder_workspace.me.id}-root"
|
||||
type = "pd-ssd"
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
image = "projects/windows-cloud/global/images/windows-server-2022-dc-core-v20220215"
|
||||
lifecycle {
|
||||
ignore_changes = [name, image]
|
||||
@@ -54,7 +82,7 @@ resource "coder_agent" "main" {
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "dev" {
|
||||
zone = var.zone
|
||||
zone = data.coder_parameter.zone.value
|
||||
count = data.coder_workspace.me.start_count
|
||||
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}"
|
||||
machine_type = "e2-medium"
|
||||
|
||||
@@ -2,11 +2,11 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
kubernetes = {
|
||||
source = "hashicorp/kubernetes"
|
||||
version = "~> 2.10"
|
||||
version = "~> 2.18"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,40 +17,60 @@ provider "kubernetes" {
|
||||
|
||||
data "coder_workspace" "me" {}
|
||||
|
||||
variable "os" {
|
||||
description = "Operating system"
|
||||
validation {
|
||||
condition = contains(["ubuntu", "fedora"], var.os)
|
||||
error_message = "Invalid zone!"
|
||||
}
|
||||
data "coder_parameter" "os" {
|
||||
name = "Operating system"
|
||||
default = "ubuntu"
|
||||
}
|
||||
|
||||
variable "cpu" {
|
||||
description = "CPU (__ cores)"
|
||||
default = 2
|
||||
validation {
|
||||
condition = contains([
|
||||
"2",
|
||||
"4",
|
||||
"6",
|
||||
"8"
|
||||
], var.cpu)
|
||||
error_message = "Invalid cpu!"
|
||||
option {
|
||||
name = "Ubuntu"
|
||||
value = "ubuntu"
|
||||
icon = "/icon/ubuntu.svg"
|
||||
}
|
||||
option {
|
||||
name = "Fedora"
|
||||
value = "fedora"
|
||||
icon = "/icon/fedora.svg"
|
||||
}
|
||||
}
|
||||
|
||||
variable "memory" {
|
||||
description = "Memory (__ GB)"
|
||||
default = 2
|
||||
validation {
|
||||
condition = contains([
|
||||
"2",
|
||||
"4",
|
||||
"6",
|
||||
"8"
|
||||
], var.memory)
|
||||
error_message = "Invalid memory!"
|
||||
data "coder_parameter" "cpu" {
|
||||
name = "CPU (cores)"
|
||||
default = "2"
|
||||
option {
|
||||
name = "2 Cores"
|
||||
value = "2"
|
||||
}
|
||||
option {
|
||||
name = "4 Cores"
|
||||
value = "4"
|
||||
}
|
||||
option {
|
||||
name = "6 Cores"
|
||||
value = "6"
|
||||
}
|
||||
option {
|
||||
name = "8 Cores"
|
||||
value = "8"
|
||||
}
|
||||
}
|
||||
|
||||
data "coder_parameter" "memory" {
|
||||
name = "Memory (GB)"
|
||||
default = "2"
|
||||
option {
|
||||
name = "2 GB"
|
||||
value = "2"
|
||||
}
|
||||
option {
|
||||
name = "4 GB"
|
||||
value = "4"
|
||||
}
|
||||
option {
|
||||
name = "6 GB"
|
||||
value = "6"
|
||||
}
|
||||
option {
|
||||
name = "8 GB"
|
||||
value = "8"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,10 +92,11 @@ resource "coder_agent" "dev" {
|
||||
|
||||
# code-server
|
||||
resource "coder_app" "code-server" {
|
||||
agent_id = coder_agent.dev.id
|
||||
name = "code-server"
|
||||
icon = "/icon/code.svg"
|
||||
url = "http://localhost:13337"
|
||||
agent_id = coder_agent.dev.id
|
||||
display_name = "Code Server"
|
||||
slug = "code-server"
|
||||
icon = "/icon/code.svg"
|
||||
url = "http://localhost:13337"
|
||||
}
|
||||
|
||||
resource "kubernetes_pod" "main" {
|
||||
@@ -100,7 +121,7 @@ resource "kubernetes_pod" "main" {
|
||||
container {
|
||||
name = "dev"
|
||||
# We recommend building your own from our reference: see ./images directory
|
||||
image = "ghcr.io/coder/podman:${var.os}"
|
||||
image = "ghcr.io/coder/podman:${data.coder_parameter.os.value}"
|
||||
image_pull_policy = "Always"
|
||||
command = ["/bin/bash", "-c", coder_agent.dev.init_script]
|
||||
security_context {
|
||||
@@ -115,8 +136,8 @@ resource "kubernetes_pod" "main" {
|
||||
limits = {
|
||||
# Acquire a FUSE device, powered by smarter-device-manager
|
||||
"github.com/fuse" : 1
|
||||
cpu = "${var.cpu}"
|
||||
memory = "${var.memory}Gi"
|
||||
cpu = "${data.coder_parameter.cpu.value}"
|
||||
memory = "${data.coder_parameter.memory.value}Gi"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,18 +2,21 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "~> 0.6.12"
|
||||
version = "~> 0.6.17"
|
||||
}
|
||||
kubernetes = {
|
||||
source = "hashicorp/kubernetes"
|
||||
version = "~> 2.12.1"
|
||||
version = "~> 2.18"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "coder" {
|
||||
feature_use_managed_variables = true
|
||||
}
|
||||
|
||||
variable "use_kubeconfig" {
|
||||
type = bool
|
||||
sensitive = true
|
||||
description = <<-EOF
|
||||
Use host kubeconfig? (true/false)
|
||||
|
||||
@@ -23,63 +26,82 @@ variable "use_kubeconfig" {
|
||||
Set this to true if the Coder host is running outside the Kubernetes cluster
|
||||
for workspaces. A valid "~/.kube/config" must be present on the Coder host.
|
||||
EOF
|
||||
default = false
|
||||
}
|
||||
|
||||
variable "namespace" {
|
||||
type = string
|
||||
sensitive = true
|
||||
description = "The Kubernetes namespace to create workspaces in (must exist prior to creating workspaces)"
|
||||
}
|
||||
|
||||
variable "cpu" {
|
||||
description = "CPU (__ cores)"
|
||||
default = 2
|
||||
validation {
|
||||
condition = contains([
|
||||
"2",
|
||||
"4",
|
||||
"6",
|
||||
"8"
|
||||
], var.cpu)
|
||||
error_message = "Invalid cpu!"
|
||||
data "coder_parameter" "cpu" {
|
||||
name = "CPU (cores)"
|
||||
default = "2"
|
||||
icon = "/icon/memory.svg"
|
||||
mutable = true
|
||||
option {
|
||||
name = "2 Cores"
|
||||
value = "2"
|
||||
}
|
||||
option {
|
||||
name = "4 Cores"
|
||||
value = "4"
|
||||
}
|
||||
option {
|
||||
name = "6 Cores"
|
||||
value = "6"
|
||||
}
|
||||
option {
|
||||
name = "8 Cores"
|
||||
value = "8"
|
||||
}
|
||||
}
|
||||
|
||||
variable "memory" {
|
||||
description = "Memory (__ GB)"
|
||||
default = 2
|
||||
validation {
|
||||
condition = contains([
|
||||
"2",
|
||||
"4",
|
||||
"6",
|
||||
"8"
|
||||
], var.memory)
|
||||
error_message = "Invalid memory!"
|
||||
data "coder_parameter" "memory" {
|
||||
name = "Memory (GB)"
|
||||
default = "2"
|
||||
icon = "/icon/memory.svg"
|
||||
mutable = true
|
||||
option {
|
||||
name = "2 GB"
|
||||
value = "2"
|
||||
}
|
||||
option {
|
||||
name = "4 GB"
|
||||
value = "4"
|
||||
}
|
||||
option {
|
||||
name = "6 GB"
|
||||
value = "6"
|
||||
}
|
||||
option {
|
||||
name = "8 GB"
|
||||
value = "8"
|
||||
}
|
||||
}
|
||||
|
||||
variable "home_disk_size" {
|
||||
type = number
|
||||
description = "How large would you like your home volume to be (in GB)?"
|
||||
default = 10
|
||||
data "coder_parameter" "home_disk_size" {
|
||||
name = "Home Disk Size (GB)"
|
||||
default = "10"
|
||||
type = "number"
|
||||
icon = "/emojis/1f4be.png"
|
||||
mutable = false
|
||||
validation {
|
||||
condition = var.home_disk_size >= 1
|
||||
error_message = "Value must be greater than or equal to 1."
|
||||
min = 1
|
||||
max = 99999
|
||||
}
|
||||
}
|
||||
|
||||
provider "kubernetes" {
|
||||
# Authenticate via ~/.kube/config or a Coder-specific ServiceAccount, depending on admin preferences
|
||||
config_path = var.use_kubeconfig == true ? "~/.kube/config" : null
|
||||
config_path = var.namespace == true ? "~/.kube/config" : null
|
||||
}
|
||||
|
||||
data "coder_workspace" "me" {}
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
os = "linux"
|
||||
arch = "amd64"
|
||||
|
||||
os = "linux"
|
||||
arch = "amd64"
|
||||
login_before_ready = false
|
||||
startup_script_timeout = 180
|
||||
startup_script = <<-EOT
|
||||
@@ -132,7 +154,7 @@ resource "kubernetes_persistent_volume_claim" "home" {
|
||||
access_modes = ["ReadWriteOnce"]
|
||||
resources {
|
||||
requests = {
|
||||
storage = "${var.home_disk_size}Gi"
|
||||
storage = "${data.coder_parameter.home_disk_size.value}Gi"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,8 +203,8 @@ resource "kubernetes_pod" "main" {
|
||||
"memory" = "512Mi"
|
||||
}
|
||||
limits = {
|
||||
"cpu" = "${var.cpu}"
|
||||
"memory" = "${var.memory}Gi"
|
||||
"cpu" = "${data.coder_parameter.cpu.value}"
|
||||
"memory" = "${data.coder_parameter.memory.value}Gi"
|
||||
}
|
||||
}
|
||||
volume_mount {
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg10573"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13258 custom"
|
||||
sodipodi:docname="centos-docker-platformlogo.svg"
|
||||
inkscape:export-filename="/home/tigert/SparkleShare/osas-branding/logos/CentOS/web/centos-docker-platformlogo.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs10575" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#d9d9d9"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.2145"
|
||||
inkscape:cx="74.47743"
|
||||
inkscape:cy="85.000462"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
fit-margin-top="10"
|
||||
fit-margin-left="10"
|
||||
fit-margin-right="10"
|
||||
fit-margin-bottom="10"
|
||||
inkscape:showpageshadow="false"
|
||||
borderlayer="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-page="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-global="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4177"
|
||||
originx="-48.119695px"
|
||||
originy="-46.748752px" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata10578"
|
||||
xml:space="default">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(663.41064,-2140.2902)">
|
||||
<rect
|
||||
transform="matrix(-0.70494576,-0.70926122,0.70494576,-0.70926122,0,0)"
|
||||
y="-1975.5764"
|
||||
x="-1106.7324"
|
||||
height="28.06876"
|
||||
width="28.06876"
|
||||
id="rect4182"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#b4bec1;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.0015676;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
inkscape:transform-center-x="-0.00019222452"
|
||||
inkscape:transform-center-y="-12.450121"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
inkscape:transform-center-y="-12.450121"
|
||||
inkscape:transform-center-x="-0.00019222452"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#394d54;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.0015676;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4186"
|
||||
width="28.06876"
|
||||
height="28.06876"
|
||||
x="-1140.7004"
|
||||
y="-1975.4767"
|
||||
transform="matrix(-0.70494576,-0.70926122,0.70494576,-0.70926122,0,0)"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#fce94f;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4188"
|
||||
width="27.019527"
|
||||
height="26.895521"
|
||||
x="-643.57916"
|
||||
y="2159.0557"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
y="2194.1335"
|
||||
x="-608.55194"
|
||||
height="27.020786"
|
||||
width="26.822252"
|
||||
id="rect4190"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#b4bec1;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
inkscape:transform-center-x="12.562506"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#4f6a74;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.00166607;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4180"
|
||||
width="28.193838"
|
||||
height="28.193838"
|
||||
x="1993.4576"
|
||||
y="-1127.9492"
|
||||
transform="matrix(-0.71249676,0.7016754,-0.71249676,-0.7016754,0,0)"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#4f6a74;fill-opacity:1;stroke:none;stroke-width:0.99999988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4192"
|
||||
width="26.912663"
|
||||
height="26.884657"
|
||||
x="-608.44379"
|
||||
y="2159.2424"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
transform="matrix(-0.71249676,0.7016754,-0.71249676,-0.7016754,0,0)"
|
||||
y="-1161.9203"
|
||||
x="1993.7214"
|
||||
height="28.193838"
|
||||
width="28.193838"
|
||||
id="rect4184"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#8a9aa0;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.00166607;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
inkscape:transform-center-x="12.562506"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
y="2158.1057"
|
||||
x="-644.57996"
|
||||
height="27.857422"
|
||||
width="28.020391"
|
||||
id="rect4168"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#8a9aa0;fill-opacity:1;stroke:#ffffff;stroke-width:2.00154901;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:none;stroke:#ffffff;stroke-width:2.00154877;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4170"
|
||||
width="27.848631"
|
||||
height="28.021563"
|
||||
x="-608.55194"
|
||||
y="2194.1335"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
y="2158.2695"
|
||||
x="-608.45105"
|
||||
height="27.857422"
|
||||
width="27.920647"
|
||||
id="rect4172"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:none;stroke:#ffffff;stroke-width:2.00154901;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#394d54;fill-opacity:1;stroke:#ffffff;stroke-width:2.00154901;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4174"
|
||||
width="28.019245"
|
||||
height="28.019196"
|
||||
x="-644.57764"
|
||||
y="2194.1345"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
transform="matrix(-0.71249676,0.7016754,-0.71249676,-0.7016754,0,0)"
|
||||
y="-1127.9492"
|
||||
x="1993.4576"
|
||||
height="28.193838"
|
||||
width="28.193838"
|
||||
id="rect4208"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:none;stroke:#ffffff;stroke-width:2.00166607;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
inkscape:transform-center-x="12.562506"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
inkscape:transform-center-y="-12.450121"
|
||||
inkscape:transform-center-x="-0.00019222452"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:none;stroke:#ffffff;stroke-width:2.0015676;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4210"
|
||||
width="28.06876"
|
||||
height="28.06876"
|
||||
x="-1106.7319"
|
||||
y="-1975.5764"
|
||||
transform="matrix(-0.70494576,-0.70926122,0.70494576,-0.70926122,0,0)"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
inkscape:transform-center-x="12.562506"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:none;stroke:#ffffff;stroke-width:2.00166607;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
id="rect4212"
|
||||
width="28.193838"
|
||||
height="28.193838"
|
||||
x="1993.7214"
|
||||
y="-1161.9203"
|
||||
transform="matrix(-0.71249676,0.7016754,-0.71249676,-0.7016754,0,0)"
|
||||
xml:space="default" />
|
||||
<rect
|
||||
transform="matrix(-0.70494576,-0.70926122,0.70494576,-0.70926122,0,0)"
|
||||
y="-1975.4767"
|
||||
x="-1140.7002"
|
||||
height="28.06876"
|
||||
width="28.06876"
|
||||
id="rect4214"
|
||||
style="color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:none;stroke:#ffffff;stroke-width:2.0015676;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
|
||||
inkscape:transform-center-x="-0.00019222452"
|
||||
inkscape:transform-center-y="-12.450121"
|
||||
xml:space="default" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="108.76" height="144.13" viewBox="0 0 108.758 144.133">
|
||||
<path fill="#D70751" d="M60.969 47.645c-1.494.02.281.768 2.232 1.069.541-.422 1.027-.846 1.463-1.26-1.213.297-2.449.304-3.695.191m8.017-1.999c.893-1.229 1.541-2.573 1.77-3.963-.201.99-.736 1.845-1.244 2.749-2.793 1.759-.264-1.044-.002-2.111-3.002 3.783-.414 2.268-.524 3.325m2.963-7.704c.182-2.691-.529-1.839-.768-.814.278.146.499 1.898.768.814M55.301 1.163c.798.142 1.724.252 1.591.443.876-.193 1.073-.367-1.591-.443m1.592.443-.561.117.523-.048.038-.069"/>
|
||||
<path fill="#D70751" d="M81.762 38.962c.09 2.416-.705 3.59-1.424 5.666l-1.293.643c-1.057 2.054.105 1.304-.652 2.937-1.652 1.467-5.006 4.589-6.08 4.875-.785-.017.531-.926.703-1.281-2.209 1.516-1.773 2.276-5.152 3.199l-.098-.221c-8.33 3.92-19.902-3.847-19.75-14.443-.088.672-.253.504-.437.774-.43-5.451 2.518-10.926 7.49-13.165 4.863-2.406 10.564-1.42 14.045 1.829-1.912-2.506-5.721-5.163-10.232-4.917-4.421.072-8.558 2.881-9.938 5.932-2.264 1.425-2.528 5.496-3.514 6.242-1.329 9.76 2.497 13.975 8.97 18.936 1.016.686.286.791.422 1.313-2.15-1.006-4.118-2.526-5.738-4.387.86 1.257 1.787 2.479 2.986 3.439-2.029-.685-4.738-4.913-5.527-5.085 3.495 6.258 14.178 10.975 19.775 8.634-2.59.096-5.879.053-8.787-1.022-1.225-.629-2.884-1.93-2.587-2.173 7.636 2.851 15.522 2.158 22.128-3.137 1.682-1.31 3.518-3.537 4.049-3.567-.799 1.202.137.578-.477 1.639 1.672-2.701-.729-1.1 1.73-4.664l.908 1.25c-.34-2.244 2.785-4.966 2.467-8.512.717-1.084.799 1.168.039 3.662 1.055-2.767.279-3.212.549-5.496.291.768.678 1.583.875 2.394-.688-2.675.703-4.503 1.049-6.058-.342-.15-1.061 1.182-1.227-1.976.025-1.372.383-.719.52-1.057-.268-.155-.975-1.207-1.404-3.224.309-.475.832 1.229 1.256 1.298-.273-1.603-.742-2.826-.762-4.057-1.24-2.59-.439.346-1.443-1.112-1.32-4.114 1.094-.955 1.258-2.823 1.998 2.895 3.137 7.385 3.662 9.244-.4-2.267-1.045-4.464-1.834-6.589.609.257-.979-4.663.791-1.405C87.189 15.552 81 9.062 75.305 6.018c.695.637 1.574 1.437 1.26 1.563-2.834-1.685-2.336-1.818-2.742-2.53-2.305-.939-2.459.077-3.984.002-4.35-2.308-5.188-2.063-9.191-3.507l.182.852c-2.881-.96-3.357.362-6.47.002-.189-.147.998-.536 1.976-.677-2.786.368-2.656-.55-5.382.101.671-.471 1.383-.784 2.099-1.184-2.271.138-5.424 1.322-4.451.244-3.705 1.654-10.286 3.975-13.979 7.438l-.116-.776c-1.692 2.031-7.379 6.066-7.832 8.699l-.453.105c-.879 1.491-1.45 3.18-2.148 4.713-1.151 1.963-1.688.756-1.524 1.064-2.265 4.592-3.392 8.45-4.363 11.616.692 1.035.017 6.232.278 10.391-1.136 20.544 14.418 40.489 31.42 45.093 2.492.893 6.197.861 9.349.949-3.718-1.064-4.198-.563-7.822-1.826-2.613-1.232-3.185-2.637-5.037-4.244l.733 1.295c-3.63-1.285-2.111-1.59-5.065-2.525l.783-1.021c-1.177-.09-3.117-1.982-3.647-3.033l-1.288.051c-1.546-1.906-2.371-3.283-2.31-4.35l-.416.742c-.471-.809-5.691-7.158-2.983-5.68-.503-.458-1.172-.747-1.897-2.066l.551-.629c-1.301-1.677-2.398-3.826-2.314-4.542.695.938 1.177 1.114 1.655 1.275-3.291-8.164-3.476-.449-5.967-8.31l.526-.042c-.403-.611-.65-1.27-.974-1.919l.23-2.285c-2.368-2.736-.662-11.645-.319-16.53.235-1.986 1.977-4.101 3.3-7.418l-.806-.138c1.542-2.688 8.802-10.799 12.166-10.383 1.629-2.046-.324-.008-.643-.522 3.579-3.703 4.704-2.616 7.119-3.283 2.603-1.545-2.235.604-1.001-.589 4.503-1.149 3.19-2.614 9.063-3.197.62.352-1.437.544-1.953 1.001 3.75-1.836 11.869-1.417 17.145 1.018 6.117 2.861 12.994 11.314 13.266 19.267l.309.083c-.156 3.162.484 6.819-.627 10.177l.751-1.591"/>
|
||||
<path fill="#D70751" d="m44.658 49.695-.211 1.047c.983 1.335 1.763 2.781 3.016 3.821-.902-1.759-1.571-2.486-2.805-4.868m2.321-.09c-.52-.576-.826-1.268-1.172-1.956.33 1.211 1.006 2.252 1.633 3.312l-.461-1.356m41.084-8.93-.219.552c-.402 2.858-1.273 5.686-2.605 8.309 1.472-2.767 2.421-5.794 2.824-8.861M55.598.446C56.607.077 58.08.243 59.154 0c-1.398.117-2.789.187-4.162.362l.606.084M20.127 19.308c.233 2.154-1.62 2.991.41 1.569 1.09-2.454-.424-.677-.41-1.569m-2.388 9.974c.469-1.437.553-2.299.732-3.132-1.293 1.654-.596 2.007-.732 3.132"/>
|
||||
<path d="M13.437 125.51c-.045.047-.045 7.506-.138 9.453-.092 1.574-.232 4.957-3.568 4.957-3.429 0-4.263-3.939-4.541-5.652-.324-1.9-.324-3.477-.324-4.17 0-2.225.139-8.436 5.375-8.436 1.576 0 2.456.465 3.151.834l.045 3.02zM0 130.98c0 13.066 6.951 13.066 7.97 13.066 2.873 0 4.727-1.576 5.514-4.309l.093 4.123c.881-.047 1.761-.139 3.197-.139.51 0 .926 0 1.298.047.371 0 .741.045 1.158.092-.741-1.482-1.297-4.818-1.297-12.049 0-7.043 0-18.951.602-22.566-1.667.789-3.105 1.299-6.256 1.576 1.251 1.344 1.251 2.039 1.251 8.154-.879-.277-1.992-.602-3.892-.602-8.294 0-9.638 7.23-9.638 12.61m25.13-2.373c.047-3.846.835-7.275 4.124-7.275 3.615 0 3.891 3.984 3.799 7.275H25.13zm12.51.46c0-5.422-1.065-10.752-7.923-10.752-9.452 0-9.452 10.475-9.452 12.697 0 9.406 4.216 13.113 11.306 13.113 3.149 0 4.68-.461 5.514-.695-.046-1.668.185-2.734.465-4.17-.975.604-2.226 1.391-5.006 1.391-7.229 0-7.322-6.582-7.322-8.852H37.55l.09-2.74m15.075 2.008c0 4.309-.787 10.102-6.162 10.102-.742 0-1.668-.141-2.27-.279-.093-1.668-.093-4.541-.093-7.877 0-3.986.416-6.068.742-7.09.972-3.289 3.15-3.334 3.566-3.334 3.522 0 4.217 4.86 4.217 8.48zm-13.298 5.05c0 3.43 0 5.375-.556 6.857 1.9.742 4.262 1.158 7.09 1.158 1.807 0 7.043 0 9.869-5.791 1.344-2.688 1.807-6.303 1.807-9.037 0-1.668-.186-5.328-1.529-7.646-1.296-2.176-3.382-3.289-5.605-3.289-4.449 0-5.746 3.707-6.44 5.607 0-2.363.045-10.611.415-14.828-3.011 1.391-4.866 1.621-6.857 1.807 1.807.74 1.807 3.801 1.807 13.764v11.397m27.117 7.741c-.928-.139-1.578-.232-2.922-.232-1.48 0-2.502.094-3.566.232.463-.881.648-1.299.787-4.309.186-4.125.232-15.154-.092-17.471-.232-1.762-.648-2.039-1.297-2.502 3.799-.371 4.865-.648 6.625-1.482-.369 2.037-.418 3.059-.418 6.162-.091 15.98-.138 17.7.883 19.6m14.838-13.118c-.092 2.92-.139 4.959-.928 6.58-.973 2.086-2.594 2.688-3.799 2.688-2.783 0-3.383-2.316-3.383-4.586 0-4.355 3.893-4.682 5.652-4.682h2.458zm-12.744 5.7c0 2.92.881 5.838 3.477 7.09 1.158.51 2.316.51 2.688.51 4.264 0 5.699-3.152 6.58-5.098-.047 2.039 0 3.289.139 4.912.834-.047 1.668-.139 3.059-.139.787 0 1.529.092 2.316.139-.51-.787-.787-1.252-.928-3.059-.092-1.76-.092-3.521-.092-5.977l.047-9.453c0-3.523-.928-6.998-7.879-6.998-4.586 0-7.273 1.391-8.617 2.086.557 1.02 1.02 1.898 1.436 3.893 1.809-1.576 4.172-2.41 6.58-2.41 3.848 0 3.848 2.549 3.848 6.162-.881-.045-1.623-.137-2.875-.137-5.887.01-9.779 2.28-9.779 8.49m39.431 2.819c.047 1.576.047 3.244.695 4.588-1.021-.092-1.623-.232-3.521-.232-1.113 0-1.715.094-2.596.232.184-.602.279-.834.371-1.623.139-1.064.232-4.633.232-5.885v-5.004c0-2.178 0-5.33-.141-6.441-.092-.787-.322-2.918-3.012-2.918-2.641 0-3.521 1.945-3.846 3.521-.369 1.621-.369 3.383-.369 10.24.045 5.932.045 6.486.508 8.109-.787-.092-1.76-.184-3.15-.184-1.113 0-1.854.045-2.779.184.324-.742.51-1.113.602-3.707.094-2.549.279-15.061-.141-18.025-.23-1.809-.695-2.225-1.203-2.688 3.754-.186 4.957-.789 6.117-1.389v4.91c.555-1.438 1.713-4.635 6.348-4.635 5.793 0 5.838 4.217 5.885 6.996v13.928"/>
|
||||
<path fill="#D70751" d="m66.926 111.53-3.838 3.836-3.836-3.836 3.836-3.836 3.838 3.84"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.9 KiB |
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="1.0"
|
||||
width="267"
|
||||
height="267"
|
||||
id="svg2">
|
||||
<defs
|
||||
id="defs5" />
|
||||
<path
|
||||
d="M 266.62575,133.50613 C 266.62575,59.98128 207.02222,0.37583 133.49792,0.37583 C 60.00668,0.37583 0.42639,59.93123 0.37425,133.41225 L 0.37425,236.4333 C 0.4138,253.11763 13.94545,266.62417 30.64027,266.62417 L 133.55192,266.62417 C 207.05167,266.59532 266.62575,207.01142 266.62575,133.50613"
|
||||
id="voice"
|
||||
style="fill:#294172" />
|
||||
<path
|
||||
d="M 77.126289,142.09756 C 77.126289,142.09756 124.97104,142.09756 124.97104,142.09756 C 124.97104,142.09756 124.97104,189.94234 124.97104,189.94234 C 124.97104,216.35263 103.53659,237.78707 77.126289,237.78707 C 50.715979,237.78707 29.28153,216.35263 29.28153,189.94234 C 29.28153,163.53203 50.715979,142.09756 77.126289,142.09756 z"
|
||||
id="in"
|
||||
style="fill:none;stroke:#3c6eb4;stroke-width:29.21" />
|
||||
<use
|
||||
transform="matrix(-1,0,0,-1,249.71151,284.2882)"
|
||||
id="finity"
|
||||
xlink:href="#in" />
|
||||
<path
|
||||
d="M 139.6074,127.52923 L 139.6074,189.87541 C 139.6074,224.37943 111.63203,252.35541 77.12679,252.35541 C 71.89185,252.35541 68.1703,251.7644 63.32444,250.49771 C 56.25849,248.64859 50.48398,242.85518 50.48158,236.1166 C 50.48158,227.97147 56.39394,222.0467 65.23187,222.0467 C 69.43824,222.0467 70.96454,222.85435 77.12679,222.85435 C 95.3184,222.85435 110.07443,208.11916 110.10634,189.92756 L 110.10634,161.27099 C 110.10634,158.70324 108.01971,156.62274 105.44767,156.62274 L 83.78246,156.61846 C 75.71034,156.61846 69.18845,150.18003 69.18845,142.0858 C 69.18414,133.94124 75.77725,127.52923 83.93653,127.52923"
|
||||
id="free"
|
||||
style="fill:#ffffff" />
|
||||
<use
|
||||
transform="matrix(-1,0,0,-1,249.71152,284.28821)"
|
||||
id="dom"
|
||||
xlink:href="#free" />
|
||||
<path
|
||||
d="M 243.65456,243.58425 C 243.65456,243.58425 243.6546,238.05286 243.6546,238.05286 L 241.12607,243.85062 C 241.12607,243.85062 238.66466,238.05286 238.66466,238.05286 L 238.66513,243.58425 L 237.24683,243.58425 L 237.24683,234.84933 L 238.73387,234.84933 C 238.73387,234.84933 241.16784,240.42984 241.16784,240.42984 L 243.56495,234.84933 L 245.07039,234.84933 L 245.07039,243.58425 L 243.65456,243.58425 z M 233.32154,236.31241 L 233.32154,243.58425 L 231.83941,243.58425 L 231.83941,236.31241 L 229.35453,236.31241 L 229.35453,234.84933 L 235.80399,234.84933 L 235.80399,236.31241"
|
||||
id="TM"
|
||||
style="fill:#3c6eb4" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="300px" height="550px" viewBox="0 0 300 550" style="enable-background:new 0 0 300 550;" xml:space="preserve">
|
||||
<path style="fill:#E76F00;" d="M285.104,430.945h-2.038v-1.14h5.486v1.14h-2.024v5.688h-1.424V430.945z M296.046,431.242h-0.032
|
||||
l-2.019,5.392h-0.924l-2.006-5.392h-0.025v5.392h-1.342v-6.828h1.975l1.86,4.835l1.854-4.835h1.968v6.828h-1.31V431.242z"/>
|
||||
<path style="fill:#5382A1;" d="M102.681,291.324c0,0-14.178,8.245,10.09,11.035c29.4,3.354,44.426,2.873,76.825-3.259
|
||||
c0,0,8.518,5.341,20.414,9.967C137.38,340.195,45.634,307.264,102.681,291.324"/>
|
||||
<path style="fill:#5382A1;" d="M93.806,250.704c0,0-15.902,11.771,8.384,14.283c31.406,3.24,56.208,3.505,99.125-4.759
|
||||
c0,0,5.936,6.018,15.27,9.309C128.771,295.215,30.962,271.562,93.806,250.704"/>
|
||||
<path style="fill:#E76F00;" d="M168.625,181.799c17.896,20.604-4.702,39.145-4.702,39.145s45.441-23.458,24.572-52.833
|
||||
c-19.491-27.394-34.438-41.005,46.479-87.934C234.974,80.177,107.961,111.899,168.625,181.799"/>
|
||||
<path style="fill:#5382A1;" d="M264.684,321.369c0,0,10.492,8.645-11.555,15.333c-41.923,12.7-174.488,16.535-211.314,0.506
|
||||
c-13.238-5.759,11.587-13.751,19.396-15.428c8.144-1.766,12.798-1.437,12.798-1.437c-14.722-10.371-95.157,20.364-40.857,29.166
|
||||
C181.236,373.524,303.095,338.695,264.684,321.369"/>
|
||||
<path style="fill:#5382A1;" d="M109.499,208.617c0,0-67.431,16.016-23.879,21.832c18.389,2.462,55.047,1.905,89.193-0.956
|
||||
c27.906-2.354,55.927-7.359,55.927-7.359s-9.84,4.214-16.959,9.075c-68.475,18.009-200.756,9.631-162.674-8.79
|
||||
C83.313,206.851,109.499,208.617,109.499,208.617"/>
|
||||
<path style="fill:#5382A1;" d="M230.462,276.231c69.608-36.171,37.424-70.931,14.96-66.248c-5.506,1.146-7.961,2.139-7.961,2.139
|
||||
s2.044-3.202,5.948-4.588c44.441-15.624,78.619,46.081-14.346,70.52C229.063,278.055,230.14,277.092,230.462,276.231"/>
|
||||
<path style="fill:#E76F00;" d="M188.495,4.399c0,0,38.55,38.563-36.563,97.862c-60.233,47.568-13.735,74.69-0.025,105.678
|
||||
c-35.159-31.722-60.961-59.647-43.651-85.637C133.663,84.151,204.049,65.654,188.495,4.399"/>
|
||||
<path style="fill:#5382A1;" d="M116.339,374.246c66.815,4.277,169.417-2.373,171.847-33.988c0,0-4.671,11.985-55.219,21.503
|
||||
c-57.028,10.732-127.364,9.479-169.081,2.601C63.887,364.361,72.426,371.43,116.339,374.246"/>
|
||||
<path style="fill:#E76F00;" d="M105.389,495.048c-6.303,5.467-12.96,8.536-18.934,8.536c-8.527,0-13.134-5.113-13.134-13.314
|
||||
c0-8.871,4.936-15.357,24.739-15.357h7.328V495.048 M122.781,514.671v-60.742c0-15.517-8.85-25.756-30.188-25.756
|
||||
c-12.457,0-23.369,3.076-32.238,6.999l2.56,10.752c6.983-2.563,16.022-4.949,24.894-4.949c12.292,0,17.58,4.949,17.58,15.181v7.677
|
||||
h-6.135c-29.865,0-43.337,11.593-43.337,28.994c0,15.017,8.878,23.553,25.594,23.553c10.745,0,18.766-4.436,26.264-10.928
|
||||
l1.361,9.22H122.781z"/>
|
||||
<path style="fill:#E76F00;" d="M180.825,514.671h-21.692l-26.106-84.96h18.943l16.199,52.2l3.601,15.699
|
||||
c8.195-22.698,13.991-45.726,16.89-67.899h18.427C202.15,457.688,193.266,488.396,180.825,514.671"/>
|
||||
<path style="fill:#E76F00;" d="M264.038,495.048c-6.315,5.467-12.984,8.536-18.958,8.536c-8.512,0-13.131-5.113-13.131-13.314
|
||||
c0-8.871,4.948-15.357,24.749-15.357h7.34V495.048 M281.428,514.671v-60.742c0-15.517-8.872-25.756-30.185-25.756
|
||||
c-12.466,0-23.382,3.076-32.247,6.999l2.556,10.752c6.986-2.563,16.042-4.949,24.907-4.949c12.283,0,17.579,4.949,17.579,15.181
|
||||
v7.677h-6.145c-29.874,0-43.34,11.593-43.34,28.994c0,15.017,8.871,23.553,25.584,23.553c10.751,0,18.769-4.436,26.28-10.928
|
||||
l1.366,9.22H281.428z"/>
|
||||
<path style="fill:#E76F00;" d="M36.847,529.099c-4.958,7.239-12.966,12.966-21.733,16.206l-8.587-10.105
|
||||
c6.673-3.424,12.396-8.954,15.055-14.105c2.3-4.581,3.252-10.485,3.252-24.604v-96.995h18.478v95.666
|
||||
C43.311,514.038,41.802,521.663,36.847,529.099"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="4096" height="4096" viewBox="0 0 192 192" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M186.658 127.658C190.119 117.746 192 107.093 192 96C192 42.9807 149.019 0 96 0C42.9807 0 0 42.9807 0 96C0 122.234 10.523 146.011 27.5783 163.338L124.958 65.9584L149 90L186.658 127.658ZM169.122 158.205L124.958 114.042L55.7978 183.202C68.0269 188.849 81.6455 192 96 192C125.288 192 151.514 178.884 169.122 158.205Z" fill="#10B981"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 489 B |
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100">
|
||||
<circle fill="#f47421" cy="50" cx="50" r="45"/>
|
||||
<circle fill="none" stroke="#ffffff" stroke-width="8.55" cx="50" cy="50" r="21.825"/>
|
||||
<g id="friend"><circle fill="#f47421" cx="19.4" cy="50" r="8.4376"/>
|
||||
<path stroke="#f47421" stroke-width="3.2378" d="M67,50H77"/>
|
||||
<circle fill="#ffffff" cx="19.4" cy="50" r="6.00745"/></g>
|
||||
<use xlink:href="#friend" transform="rotate(120,50,50)"/>
|
||||
<use xlink:href="#friend" transform="rotate(240,50,50)"/></svg>
|
||||
|
After Width: | Height: | Size: 550 B |