labunix's blog

labunixのラボUnix

lightsailでredmineを使ってみる(awscli)。

■lightsailでredmineを使ってみる(awscli)。
 lightsailはざっくり、VPSとしてパッケージ化された、他のAWSサービスからは独立したAWSサービス。
 規定データ量の範囲内なら月額固定料金なので予算が立てやすい。

 AWS CLI コマンドを使用して Lightsail インスタンスを管理する方法を教えてください。
 https://aws.amazon.com/jp/premiumsupport/knowledge-center/lightsail-aws-cli-commands/

■リージョンとAZを確認しておく。

$ aws ec2 describe-availability-zones --region us-east-1 | jq -r -c '.AvailabilityZones[] | { RegionName, ZoneName} | @text'
{"RegionName":"us-east-1","ZoneName":"us-east-1a"}
{"RegionName":"us-east-1","ZoneName":"us-east-1b"}
{"RegionName":"us-east-1","ZoneName":"us-east-1c"}
{"RegionName":"us-east-1","ZoneName":"us-east-1d"}
{"RegionName":"us-east-1","ZoneName":"us-east-1e"}
{"RegionName":"us-east-1","ZoneName":"us-east-1f"}

$ aws ec2 describe-availability-zones --region ap-northeast-1 | jq -r -c '.AvailabilityZones[] | { RegionName, ZoneName} | @text'
{"RegionName":"ap-northeast-1","ZoneName":"ap-northeast-1a"}
{"RegionName":"ap-northeast-1","ZoneName":"ap-northeast-1c"}
{"RegionName":"ap-northeast-1","ZoneName":"ap-northeast-1d"}

■バンドルIDを一覧

$ aws lightsail get-bundles --region us-east-1 | jq -r -c '.bundles[] | { bundleId, price, cpuCount, ramSizeInGb}'
{"bundleId":"nano_2_0","price":3.5,"cpuCount":1,"ramSizeInGb":0.5}
{"bundleId":"micro_2_0","price":5,"cpuCount":1,"ramSizeInGb":1}
{"bundleId":"small_2_0","price":10,"cpuCount":1,"ramSizeInGb":2}
{"bundleId":"medium_2_0","price":20,"cpuCount":2,"ramSizeInGb":4}
{"bundleId":"large_2_0","price":40,"cpuCount":2,"ramSizeInGb":8}
{"bundleId":"xlarge_2_0","price":80,"cpuCount":4,"ramSizeInGb":16}
{"bundleId":"2xlarge_2_0","price":160,"cpuCount":8,"ramSizeInGb":32}
{"bundleId":"nano_win_2_0","price":8,"cpuCount":1,"ramSizeInGb":0.5}
{"bundleId":"micro_win_2_0","price":12,"cpuCount":1,"ramSizeInGb":1}
{"bundleId":"small_win_2_0","price":20,"cpuCount":1,"ramSizeInGb":2}
{"bundleId":"medium_win_2_0","price":40,"cpuCount":2,"ramSizeInGb":4}
{"bundleId":"large_win_2_0","price":70,"cpuCount":2,"ramSizeInGb":8}
{"bundleId":"xlarge_win_2_0","price":120,"cpuCount":4,"ramSizeInGb":16}
{"bundleId":"2xlarge_win_2_0","price":240,"cpuCount":8,"ramSizeInGb":32}

■インスタンスタイプがnano(750時間の無料枠対象)のバンドル情報を検索
 LinuxかWindowsが選べる。

$ aws lightsail get-bundles --region us-east-1 | jq -r '.bundles[]' | lsec -sep '{' nano
{
  "price": 3.5,
  "cpuCount": 1,
  "diskSizeInGb": 20,
  "bundleId": "nano_2_0",
  "instanceType": "nano",
  "isActive": true,
  "name": "Nano",
  "power": 300,
  "ramSizeInGb": 0.5,
  "transferPerMonthInGb": 1024,
  "supportedPlatforms": [
    "LINUX_UNIX"
  ]
}
{
  "price": 8,
  "cpuCount": 1,
  "diskSizeInGb": 30,
  "bundleId": "nano_win_2_0",
  "instanceType": "nano",
  "isActive": true,
  "name": "Nano",
  "power": 300,
  "ramSizeInGb": 0.5,
  "transferPerMonthInGb": 1024,
  "supportedPlatforms": [
    "WINDOWS"
  ]
}

■ブループリント(用意されたOS)の一覧

$ aws lightsail get-blueprints --region us-east-1 | jq -r -c '.blueprints[] | { blueprintId, version } | @text' 
{"blueprintId":"windows_server_2019","version":"2021.04.14"}
{"blueprintId":"windows_server_2016","version":"2021.04.14"}
{"blueprintId":"windows_server_2012","version":"2021.04.14"}
{"blueprintId":"windows_server_2016_sql_2016_express","version":"2021.04.14"}
{"blueprintId":"amazon_linux_2","version":"2.0.20210421.0"}
{"blueprintId":"amazon_linux","version":"2018.03.0.20210408.0"}
{"blueprintId":"ubuntu_20_04","version":"20.04 LTS"}
{"blueprintId":"ubuntu_18_04","version":"18.04 LTS"}
{"blueprintId":"ubuntu_16_04_2","version":"16.04 LTS"}
{"blueprintId":"debian_10","version":"10.8"}
{"blueprintId":"debian_9_13","version":"9.13"}
{"blueprintId":"debian_8_7","version":"8.7"}
{"blueprintId":"freebsd_12","version":"12.2"}
{"blueprintId":"opensuse_15_2","version":"15.2"}
{"blueprintId":"centos_8","version":"8 2004-01"}
{"blueprintId":"centos_7_2009_01","version":"7 2009-01"}
{"blueprintId":"wordpress","version":"5.6.1-1"}
{"blueprintId":"wordpress_multisite","version":"5.6.1"}
{"blueprintId":"lamp_7","version":"7.4.15-3"}
{"blueprintId":"nodejs","version":"12.20.2"}
{"blueprintId":"joomla","version":"3.9.24-8"}
{"blueprintId":"magento","version":"2.4.1-12"}
{"blueprintId":"mean","version":"4.4.4"}
{"blueprintId":"drupal","version":"9.1.4-5"}
{"blueprintId":"gitlab","version":"12.5.0"}
{"blueprintId":"redmine","version":"4.1.1-7"}
{"blueprintId":"nginx","version":"1.18.0-42"}
{"blueprintId":"ghost_bitnami","version":"3.41.5"}
{"blueprintId":"django_bitnami","version":"3.1.6-4"}
{"blueprintId":"prestashop_bitnami","version":"1.7.7-2-7"}
{"blueprintId":"plesk_ubuntu_18_0_34","version":"18.0.34"}
{"blueprintId":"cpanel_whm_linux","version":"11.92.0.9"}

■Redmineのブループリント情報を検索

$ aws lightsail get-blueprints --region us-east-1 | jq -r '.blueprints[]' | lsec -sep '{' Redmine
{
  "blueprintId": "redmine",
  "name": "Redmine",
  "group": "redmine",
  "type": "app",
  "description": "Redmine certified by Bitnami is a flexible project management web application. It includes support for multiple projects, role-based access control, Gantt chart and calendar, management of news, documents and files, per-project wikis and forums and more. Redmine integrates with popular version control software such as Git and Mercurial and includes LDAP user access management, multiple database support, and multi-language capability.This image is certified by Bitnami as secure, up-to-date, and packaged using industry best practices.",
  "isActive": true,
  "minPower": 0,
  "version": "4.1.1-7",
  "versionCode": "1",
  "productUrl": "https://aws.amazon.com/marketplace/pp/B00NNZUVHQ",
  "licenseUrl": "https://d7umqicpi7263.cloudfront.net/eula/product/ee6977a6-d6da-4671-885e-dd9c02ec5def/e46b414e-6323-4647-952f-d456846302da.txt",
  "platform": "LINUX_UNIX"
}

■リージョンとAZを選んで作成。

$ cat aws_lihghtsail_redmine
aws lightsail create-instances \
  --region us-east-1 \
  --instance-names lightsail-redmine \
  --availability-zone us-east-1a \
  --blueprint-id redmine \
  --bundle-id micro_2_0

$ bash aws_lihghtsail_redmine
{
    "operations": [
        {
            "id": "XXXXXXXX-XXX-XXXXX-XXXX-XXXXXXXXXXX",
            "resourceName": "lightsail-redmine",
            "resourceType": "Instance",
            "createdAt": "2021-05-01T03:02:16.124000+09:00",
            "location": {
                "availabilityZone": "us-east-1a",
                "regionName": "us-east-1"
            },
            "isTerminal": false,
            "operationType": "CreateInstance",
            "status": "Started",
            "statusChangedAt": "2021-05-01T03:02:16.124000+09:00"
        }
    ]
}

■アクセス方法
 ※httpsは自己署名証明書。

$ PublicIP=$(aws lightsail get-instance --instance-name lightsail-redmine --region us-east-1 | jq -r '.[].publicIpAddress')
$ chromium http://${PublicIP}80,22,443ポートが開いてる、月2048GBの転送量が許可されている。

$ aws lightsail get-instance --instance-name lightsail-redmine --region us-east-1 | jq -r '.instance.networking'
{
  "monthlyTransfer": {
    "gbPerMonthAllocated": 2048
  },
  "ports": [
    {
      "fromPort": 80,
      "toPort": 80,
      "protocol": "tcp",
      "accessFrom": "Anywhere (0.0.0.0/0 and ::/0)",
      "accessType": "public",
      "commonName": "",
      "accessDirection": "inbound",
      "cidrs": [
        "0.0.0.0/0"
      ],
      "cidrListAliases": []
    },
    {
      "fromPort": 22,
      "toPort": 22,
      "protocol": "tcp",
      "accessFrom": "Anywhere (0.0.0.0/0 and ::/0)",
      "accessType": "public",
      "commonName": "",
      "accessDirection": "inbound",
      "cidrs": [
        "0.0.0.0/0"
      ],
      "cidrListAliases": []
    },
    {
      "fromPort": 443,
      "toPort": 443,
      "protocol": "tcp",
      "accessFrom": "Anywhere (0.0.0.0/0 and ::/0)",
      "accessType": "public",
      "commonName": "",
      "accessDirection": "inbound",
      "cidrs": [
        "0.0.0.0/0"
      ],
      "cidrListAliases": []
    }
  ]
}

■ログイン情報はLightsailコンソールからターミナルに接続して確認。

$ aws lightsail get-instance --instance-name lightsail-redmine --region us-east-1 | jq -r '.[].username'
bitnami

$ cat bitnami_credentials 
Welcome to the Bitnami Redmine Stack

******************************************************************************
The default username and password is 'user' and 'XXXXXXXX'.
******************************************************************************

You can also use this password to access the databases and any other component the stack i
ncludes.

Please refer to https://docs.bitnami.com/ for more details.


$ cat bitnami_application_password 
XXXXXXXX

■SSHキーはLightsailコンソールからダウンロードして接続。

 アカウント -> アカウント
 https://lightsail.aws.amazon.com/ls/webapp/account/keys

$ ssh -i LightsailDefaultKey-us-east-1.pem bitnami@${PublicIP}

■削除。
 ※SSHキーは消えないので、Lightsailコンソールから個別に削除する。

$ aws lightsail delete-instance --instance-name lightsail-redmine
{
    "operations": [
        {
            "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
            "resourceName": "lightsail-redmine",
            "resourceType": "Instance",
            "createdAt": "2021-05-01T04:58:19.629000+09:00",
            "location": {
                "availabilityZone": "us-east-1a",
                "regionName": "us-east-1"
            },
            "isTerminal": true,
            "operationDetails": "",
            "operationType": "DeleteInstance",
            "status": "Succeeded",
            "statusChangedAt": "2021-05-01T04:58:19.629000+09:00"
        }
    ]
}