WinSCP で AWS S3 ファイル操作

WinSCP で AWS S3 ファイル操作. WinSCP が Amazon S3 に対応した様です. FFFTP はメンテ停止公表後、 2.0 リリースに向けて活動しているようですが、私自身はワンタイムパスワードとか使う機会はないので、すべて WinSCP になりました。ディレクトリ同時移動、SCP、SFTP、SSH トンネル越え SCP などにも対応して … 続きを読む

メールサーバ構築・独自ドメインのメールアドレス作成(3/4)~サーバーと独自ドメインの紐付編~

目標

最終目標 :メールサーバを立てて、独自ドメインのメールアドレスを作成する
今回の目標:サーバーと独自ドメインの紐付

必要なものごと

  1. サーバーリソース確保→ 前回の記事
  2. 独自ドメイン取得  → 前回の記事
  3. サーバーと独自ドメインの紐付→今回はこれ
  4. メールサーバのインストール・設定

どこのDNSサーバを使おうか

ホントはドメインとる前に考えておいたほうがよかったです。(浅薄)
以下3つを候補に、どこのサービスをつかうか検討しました。

2018年2月現在

候補 説明 月額
お名前.com ドメイン管理元 0円※
AWS(Route53) サーバ稼働元 料金表
Hurricane Electric Hosted DNS フリーDNSサービス 0円

※ 有料の機能もあり

Route53は月額利用料がかかりますが、可用性100%をうたっていてすごい。
今回は個人の趣味で作るものなのでもし数日落ちたところでそんなダメージはないですし、
委譲作業は何かと手間がかかりそうなので お名前.comさんにしました。

登録方法

管理メニューにアクセス

お名前.comさんのドメインナビにログインし
「ドメイン設定>ネームサーバの設定>DNS関連機能の設定>内部ドメイン一覧」から
対象ドメインを選択した上で「DNSレコード設定を利用する」を選択

レコード登録

必要な情報を入れて追加をクリック
image.png
– ホスト名 お好みで。
– TYPE   IPv4のグローバルIPアドレスとの紐づけであればAを選択。
– TTL   キャッシュに何秒情報を保持するか(長短でメリデメリあるようなので大人しくデフォルトの3600にしました)
– VALUE  サーバのグローバルIP

image.png
レコード登録作業と同じ画面の最下位のチェックボックスにチェック入れれば
どうやら必須らしいメールサーバーの変更もまとめてできちゃうらしいです。

ここまで入れたら、設定する 選択で完了!

確認方法

nslookupコマンドでホスト名を確認したら、登録したアドレスがでてくるよ!
登録から5分くらいしてからコマンド叩いたら秒で出てきました。
グローバルIPはまるで意味ありませんが申し訳程度に隠す。
image.png

SSHでも名前で接続できるようになりました。
image.png

続きを読む

AWS上でWin2016をデプロイしてアクセスする方法

はじめに

タイトルの通りです。個人的な備忘録的な記事です。
目的は、AWS上でWinServerを立ち上げたことが無かったので、
立ち上げと接続方法の確認です。

構成図

cloudcraftを使用して、構成図を描きました。

WindowsServer2016 (1).png

とっても簡単な構成ですね。四角がEC2です。

構築

  1. AWSのホーム画面から「EC2」を選択
  2. 青いボタンの「インスタンスを作成」を選択
  3. AMIは「Microsoft Windows Server 2016 Base – ami-157fe573」を選択
  4. タイプは「t2.micro」を選択して、「次の手順」を選択。
  5. インスタンスの詳細の設定は「インスタンス数」を1に設定して、「次の手順」を選択。
  6. 「ストレージの追加」は30Gを選択して、「次の手順」を選択。
  7. 「タグの追加」は特に指定せず、「次の手順」を選択。
  8. 「セキュリティグループの設定」は以下が設定されていることを確認して、「確認と作成」を選択。
    画面遷移したら「作成ボタンを」選択。
タイプ プロトコル ポート範囲 ソース
RDP TCP 3389 カスタム 0.0.0.0/0

※ソースを0.0.0.0/0にしている為、どこからでもアクセス可能になっています。
テスト用にデプロイしているので、セキュリティ的にザルな設定になっているので、本番運用を考慮するなら、自宅や職場のグローバルIPからのみ接続できる設定の方が好ましいです。

9. キーペアの作成について聞かれるので、今までに作っていないor新しく作りたい場合は、作成する。

パスワードの確認

AWSの画面からキーペアを使ってユーザー名とパスワードを確認する。
Lunux等に対してSSHで接続する場合はあらかじめ設定されている初期値を入力すれば良いが、Windowsに対してRDP接続する場合は事前にキーペアから独自に作成されるパスワードを確認する必要がある。めんどい

  1. AWSのホーム画面から「EC2」を選択。
  2. インスタンスを選択。
  3. 接続したいインスタンスに対して右クリックし、「Windowsのパスワードの取得」を選択
  4. 先ほど保存したキーペアをアップロードして、ユーザ名とパスワードを確認。

接続

Windowsだと標準のリモートデスクトップを利用、MacだとMicrodsoft Remote Desktopをダウンロードして接続する。
1. リモートデスクトップを起動。
2. 接続先に先程作成した、インタスタンスのIPorホスト名を入力する。
3. 画面が表示されることを確認する。

その他

2018年2月現在で使えるWin2016は全て英語版のみでした。
その内、日本語版も出ると思うけど、案件とかで今すぐ対応しなきゃの人は大変そうですね。

続きを読む

HDP 2.6.3をAWSにインストール 乞食版

ゴール

AWSの超安いインスタンスに、HDPをインストールして遊ぶ。

インスタンス初期化

Ambari

t2.nano

[ec2-user@ip-172-31 ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:            990          80         731          12         179         739
Swap:             0           0           0

AWS Amazon Linux スワップファイル作成によりSwap領域のサイズを増やす
https://qiita.com/na0AaooQ/items/278a11ed905995bd16af

現在は1GBあるので、8GBのSwapメモリを追加

grep Mem /proc/meminfo
grep Swap /proc/meminfo
free
uname -a
# /swapfile1 に保存
sudo dd if=/dev/zero of=/swapfile1 bs=1M count=8192
grep Swap /proc/meminfo

ll /swapfile1
sudo chmod 600 /swapfile1
sudo mkswap /swapfile1
ll /swapfile1
swapon -s
free
sudo swapon /swapfile1
free
grep Swap /proc/meminfo

メモリ追加しました。

[ec2-user@ip-172-31 ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:            990          77          64          12         848         731
Swap:          3083           0        3083
[ec2-user@ip-172-31 ~]$

t2.micro instance作成

Ambari:1台
Master:1台
Slave:3台

image.png

注意事項

RHEL 7.4

Red Hat Enterprise Linux 7.4 (HVM), SSD Volume Type – ami-26ebbc5c

AWS setting

t2.micro instance

Storage setups —

Ambari: EBS 15G
NN/DN: EBS 20G

image.png

image.png

セキュリティ設定

All Traffic, Allow, HDPのセキュリティグループID指定(内部通信を全部許可)
All Traffic, Allow, MyIP (管理者のIPを許可)
これでOK

ssh private key

scp -i amuisekey.pem amuisekey.pem ec2-user@ec2-54-234-94-128.compute-1.amazonaws.com:~/.ssh/id_rsa
# 全部サーバーにアップロード

hosts

自分のMBP /etc/hosts

    127.0.0.1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6

#外部IP
    10.110.35.23 hdpmaster1.hdp.hadoop hdpmaster1
    10.191.45.41 hdpmaster2.hdp.hadoop hdpmaster2
    10.151.94.30 hdpslave1.hdp.hadoop hdpslave1
    10.151.87.239 hdpslave2.hdp.hadoop hdpslave2
    10.70.78.233 hdpslave3.hdp.hadoop hdpslave3
    10.151.22.30 ambarimaster.hdp.hadoop ambarimaster

AWSサーバーの /etc/hosts

    127.0.0.1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6

#外部IP
    10.110.35.23 hdpmaster1.hdp.hadoop hdpmaster1
    10.191.45.41 hdpmaster2.hdp.hadoop hdpmaster2
    10.151.94.30 hdpslave1.hdp.hadoop hdpslave1
    10.151.87.239 hdpslave2.hdp.hadoop hdpslave2
    10.70.78.233 hdpslave3.hdp.hadoop hdpslave3
    10.151.22.30 ambarimaster.hdp.hadoop ambarimaster

Install

https://community.hortonworks.com/articles/14512/ambari-on-ec2.html

image.png

続きを読む

AWS EC2作成からTeraterm接続まで

※AWSアカウントを持っていて、ログインできる方が対象です。

VPCの構築

・1つのお城のようなイメージ
・参考URLに沿って作成する

VPCとはAWSアカウント上に複数作成することが出来るプライベートなネットワークの単位です。一軒家を建てる為の土地全体といったところでしょうか。
VPCの配下には、AZがあり、その配下にはサブネットがあります。またAZは1つ以上のサブネットを保持することができます。AWS上で初めてネットワークを構築するときは最低でも1つのVPC、1つのAZ、1つのサブネットを作成する必要がします。
AZは建造物エリア、サブネットは建造物を設置するための基礎といったイメージです。

参考URL:https://engineers.weddingpark.co.jp/?p=523

EC2の作成

・これも下記URLに沿って作成する
参考URL:https://engineers.weddingpark.co.jp/?p=523

・ただし、インスタンスのパブリックIPが勝手に設定されていますが、私の時は設定されていなかった
→Elastic IPを取得して、割り当てる必要あります。下記参照

image.png

image.png

画面を閉じて、取得したElastic IPを選択→アクション→アドレスの関連付け
→インスタンスに先ほど作成したEC2を選択し、関連付け
※Elastic IPはEC2に関連付けしないと課金されるので注意

関連付けるとパブリックDNS、IPが記載されるのでそちらでSSH接続する。

SSH接続(Windows)

Teratermでアクセスしました。
下記参照。ファイルの種類を「すべてのファイル」にしないと秘密鍵を選択できないので注意

参考URL:https://dev.classmethod.jp/cloud/aws/aws-beginner-ec2-ssh/

image.png

ping応答設定

EC2に紐づいているセキュリティグループに「ICMP」を追加する

参考URL:http://a1-style.net/amazon-web-service/ping-icmp-setting/

続きを読む

Ubuntu 16.04 on AWSでリモートデスクトップを実現する(Macから接続)

前置き

Ubuntu 16.04 on AWSでリモートデスクトップ接続を実現しようとしたらハマったのでメモ。
Mac <-> UbuntuなのでVNCとかでやる方が普通そうなので需要あるかわかりませんが。。

以下のようなページを彷徨い、色々と試したが結果的にうまくリモートデスクトップが動かなかった。(ハマった箇所は色々あったが最後はssh接続は問題なくできているのにリモートデスクトップからだと「Connection Refused」で先に進めない。権限周りなどを色々と確認したがうまくいかなかった。)

https://cryptotrader.muragon.com/entry/56.html
http://akira.matrix.jp/archives/972

環境

サーバー
– Ubuntu Server 16.04 LTS (HVM), SSD Volume Type on AWS EC2

クライアント
– MacOSX 10.12.6

解決方法

しかし以下のページのコマンドで一発で行けた。ありがとう。
https://qiita.com/tmikada/items/be27df3affc56eeffd8b

インストール
$ sudo apt install xrdp xfce4 xfce4-goodies tightvncserver

ただし、以降の部分は実行したらうまくいかなかった(接続はされてるが、グレーの画面が表示されてデスクトップが表示されない。Xウィンドウの設定なんだと思うが、時間がないので調査は割愛)。

実行したらうまくいかなかった箇所
$ sudo vi /etc/xrdp/xrdp.ini
# 以下のように編集
---------
...
#. /etc/X11/Xsession
---------

実施した手順

最終的に実行した一連の流れは以下の通り。

xrdpのインストール
$ sudo apt install xrdp xfce4 xfce4-goodies tightvncserver
$ sudo service xrdp restart

AWSコンソールのセキュリティグループの設定(インバウンド)で以下を追加。

image.png

クライアントからログイン

Macのリモートデスクトップ接続で設定。

image.png

無事にデスクトップに接続。

image.png

続きを読む

[AWS][Terraform] Terraform で Amazon Inspector を導入する

TerraformAmazon Inspector を導入して、CloudWatch Events で定期実行させるための手順。
Terraform は v0.11.2 を使っています。

Inspector の導入

Inspector を導入するには、Assessment targets (評価ターゲット) と Assessment templates (評価テンプレート) を設定する必要があります。

Assessment targets の設定

Terraform で Assessment targets を設定するには、aws_inspector_resource_group, aws_inspector_assessment_target リソースを使用します。
こんな感じです。

inspector_target.tf
variable "project" { default = "my-big-project" }
variable "stage"   { default = "production" }

resource "aws_inspector_resource_group" "inspector" {
    tags {
        project   = "${var.project}"
        stage     = "${var.stage}"
        inspector = "true"
    }
}

resource "aws_inspector_assessment_target" "inspector" {
    name               = "my-inspector-target"
    resource_group_arn = "${aws_inspector_resource_group.inspector.arn}"
}

aws_inspector_resource_group では、対象となるインスタンスを特定するための条件を記述します。
上記の例だと、以下のタグが設定されているインスタンスを対象にします。

Name Value
project my-big-project
stage production
inspector true

aws_inspector_assessment_target では、aws_inspector_resource_group で定義した条件を元に Assessment targets を作成します。

Assessment templates の設定

Terraform で Assessment templates を設定するには、aws_inspector_assessment_template リソースを使用します。
こんな感じです。

inspector_template.tf
variable "inspector-rule" = {
    type = "list"
    default = [
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu",
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq",
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT",
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu"
    ]
}

resource "aws_inspector_assessment_template" "inspector" {
    name       = "my-inspector-template"
    target_arn = "${aws_inspector_assessment_target.inspector.arn}"
    duration   = 3600

    rules_package_arns = [ "${var.inspector-rule}" ]
}

output "assessment_template_arn" {
    value = "${aws_inspector_assessment_template.inspector.arn}"
}

rules_package_arns では、利用可能な Inspector rule package の ARN を設定します。
variable にしておくと、後で rule package を変更したい時に楽ですね。
こんな感じで、使用する rule package を変更できます。

terraform.tfvars
"inspector-rule" = [
    "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu",
    "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq"
]

使用できる rule package は、aws-cli で取得してください。

# パッケージ一覧の表示
$ aws --region ap-northeast-1 inspector list-rules-packages
{
    "rulesPackageArns": [
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu",
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq",
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT",
        "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu"
    ]
}
# 詳細を確認
$ aws --region ap-northeast-1 inspector describe-rules-packages 
  --rules-package-arns "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu"
{
    "rulesPackages": [
        {
            "description": "The CIS Security Benchmarks program provides well-defined, un-biased and consensus-based industry best practicesto help organizations assess and improve their security.nnThe rules in this package help establish a secure configuration posture for the following operating systems:nn  -   Amazon Linux version 2015.03 (CIS benchmark v1.1.0)n  n    ",
            "version": "1.0",
            "name": "CIS Operating System Security Configuration Benchmarks",
            "arn": "arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu",
            "provider": "Amazon Web Services, Inc."
        }
    ],
    "failedItems": {}
}

参考URL: Terraform v0.8.5でAWS Inspectorに対応します

これで terraform apply すれば Assessment targets, templates が作成されます。

動作確認

実際に Inspector が実施されるか確認して見ましょう。

$ aws inspector start-assessment-run 
  --assessment-template-arn arn:aws:inspector:ap-northeast-1:************:target/0-xxxxxxxx/template/0-xxxxxxxx
{
    "assessmentRunArn": "arn:aws:inspector:ap-northeast-1:************:target/0-xxxxxxxx/template/0-xxxxxxxx/run/0-7WNjqgGu"
}

実行状況の確認は aws inspector describe-assessment-runs

$ aws inspector describe-assessment-runs 
  --assessment-run-arns arn:aws:inspector:ap-northeast-1:************:target/0-QOvPswHA/template/0-uCIUy636/run/0-n9nnWOem

CloudWatch Events Schedule による定期実行

当初は CloudWatch Events で定期実行するには Lambda から呼び出すようにしなければいけませんでした。
しかし、CloudWatch Event から直接 Inspector を実行できるようになったため、Lambda を使用しなくても aws_cloudwatch_event_targetaws_cloudwatch_event_rule だけで定期実行設定が可能です。

CloudWatch Events で使用する IAM ロールの作成

まずは、CloudWatch Events で使用する IAM ロールを作ります。

cloudwatch-events-iam-role.tf
esource "aws_iam_role" "run_inspector_role" {
    name               = "cloudwatch-events-run-inspector-role"
    assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
POLICY
}

resource "aws_iam_policy" "run_inspector_policy" {
    name        = "cloudwatch-events-run-inspector-policy"
    description = ""
    policy      = <<POLICY
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "inspector:StartAssessmentRun"
            ],
            "Resource": "*"
        }
    ]
}
POLICY
}

resource "aws_iam_role_policy_attachment" "run_inspector_role" {
    role       = "${aws_iam_role.run_inspector_role.name}"
    policy_arn = "${aws_iam_policy.run_inspector_policy.arn}"
}

CloudWatch Events への登録

CloudWatch Events に登録するために aws_cloudwatch_event_target リソースと aws_cloudwatch_event_rule を作りましょう。

cloudwatch-events.tf
variable "schedule"    { default = "cron(00 19 ? * Sun *)" }

resource "aws_cloudwatch_event_target" "inspector" {
  target_id = "inspector"
  rule      = "${aws_cloudwatch_event_rule.inspector.name}"
  arn       = "${aws_inspector_assessment_template.inspector.arn}"
  role_arn  = "${aws_iam_role.run_inspector_role.arn}"
}

resource "aws_cloudwatch_event_rule" "inspector" {
  name        = "run-inspector-event-rule"
  description = "Run Inspector"
  schedule_expression = "${var.schedule}"
}

schedule_expression の cron() は UTC で設定する必要があるので注意してください。
記述方法は、以下を参考に
参考URL: Rate または Cron を使用したスケジュール式

EC2 への IAM Role の設定と、ユーザーデータによる Inspector エージェントのインストール

評価ターゲットとなる EC2 には、Inspector エージェントがインストールされていて、適切なインスタンスロールが設定されている必要があります。
導入するには、こんな感じ

インスタンスロール

inspectora エージェントを使用するために必要なポリシーをアタッチしたインスタンスロールの作成はこんな感じです。

ec2-instance-role.tf
resource "aws_iam_role" "instance_role" {
    name               = "my-ec2-role"
    path               = "/"
    assume_role_policy = <<POLICY
{
"Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
POLICY
}

resource "aws_iam_instance_profile" "instance_role" {
    name = "my-ec2-role"
    role = "${aws_iam_role.instance_role.name}"
}

resource "aws_iam_policy" "inspector" {
    name        = "my-ec2-iam-policy-inspector"
    description = ""
    policy      = <<POLICY
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeCustomerGateways",
                "ec2:DescribeInstances",
                "ec2:DescribeTags",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribePrefixLists",
                "ec2:DescribeRegions",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcPeeringConnections",
                "ec2:DescribeVpcs",
                "ec2:DescribeVpn",
                "ec2:DescribeVpnGateways",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeRules",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth"
            ],
            "Resource": "*"
        }
    ]
}
POLICY
}

resource "aws_iam_role_policy_attachment" "inspector" {
    role       = "${aws_iam_role.instance_role.name}"
    policy_arn = "${aws_iam_policy.inspector.arn}"
}

ユーザーデータによる inspector エージェントのインストール

OS は Amazon Linux を想定してます。
ユーザーデータに書いておけば、インスタンス起動直後に inspector エージェントインストールできますね。
参考URL: Amazon Inspector エージェントをインストールする

ssh-key.pemssh-key.pem.pubssh-keygen で適当に作っておきましょう。

ec2.tf
## AMI
##
data "aws_ami" "amazonlinux" {
    most_recent = true
    owners      = ["amazon"]

    filter {
        name   = "architecture"
        values = ["x86_64"]
    }

    filter {
        name   = "root-device-type"
        values = ["ebs"]
    }

    filter {
        name   = "name"
        values = ["amzn-ami-hvm-*"]
    }

    filter {
        name   = "virtualization-type"
        values = ["hvm"]
    }

    filter {
        name   = "block-device-mapping.volume-type"
        values = ["gp2"]
    }
}

## SSH Key Pair
##
resource "aws_key_pair" "deployer" {
    key_name   = "ssh-key-name"
    public_key = "${file(ssh-key.pem.pub)}"
}

## EC2
##
resource "aws_instance" "ec2" {
    ami                         = "${data.aws_ami.amazonlinux.id}"
    instance_type               = "t2.micro"
    key_name                    = "${aws_key_pair.deployer.key_name}"
    iam_instance_profile        = "${aws_iam_instance_profile.instance_role.name}"

    user_data                   = <<USERDATA
#!/bin/bash
# install inspector agent
cd /tmp
/usr/bin/curl -O https://d1wk0tztpsntt1.cloudfront.net/linux/latest/install
/bin/bash install -u false
/bin/rm -f install
USERDATA

    tags {
        project   = "${var.project}"
        stage     = "${var.stage}"
        inspector = "true"
    }
}

現場からは以上です。

続きを読む

BIG-IP ve for AWSで遊ぼう

はじめに

AWS上にBIG-IP veをデプロイしてみます。

トライアルライセンスの入手

ライセンスの入手はこちらから。90日のDownload a free trialを選びましょう。アカウントが無い人はRegister for your trialから、既に持っている人はLog inから。キーは30分以内に発行されます。

構成の検討

キーが発行されるまでの間にアドレス設計をしておきます。将来2台のBIG-IPを冗長構成で使うことも考え、以下の4つのサブネットを用意しました。

サブネット名 CIDR 用途
Public 10.0.1.0/24 WAN側インターフェース
Private 10.0.2.0/24 LAN側インターフェース
HA 10.0.3.0/24 HA用インターフェース
Management 10.0.4.0/24 Management用インターフェース

インスタンスの作成

EC2のインスタンス画面から、Launce Instanceでインスタンスの作成を行います。

AMIの選択

左側のメニューから「AWS Marketplace」を選び、「big-ip」で検索します。

image.png

何やらたくさん出てきますが、トライアルライセンスを使いたいので選ぶのは「BYOL (Bring Your Own License)」のものです。BYOLにもGood/Better/Bestの3種類があります。これは機能の差で、GoodはLTMのみ、Betterはそれに加えてDNSとAFM、BestはASMとAPMも含めた全ての機能が使えるようになります。しばらくはLTM部分の検証のみに使う予定なので、今回は「Good」を選びました。

image.png

インスタンスタイプの選択

とにかく安く作りたかったので、選択肢の中で一番安いt2.mediumを選択しました。

インスタンス詳細

NICの設定は要注意です。最初に作成したNICがBIG-IP上でManagement用のものになるため、Managementセグメントを指定します。IPは10.0.4.11にしました。接続用にIPv4 Public IPもつけておきます。
ストレージはデフォルトのままです。

セキュリティグループ

初期設定でtcp/8443への接続が必要になります。「Create a new security group」を選ぶと自動的にルールを作ってくれるので、これを使いましょう。

待つ

インスタンスの起動を待ちます。。。

接続

インスタンスが起動したら、AWSの秘密鍵を使ってadminユーザでSSHアクセスをします。tmosシェルが出てくるので、modifyコマンドでadminユーザのパスワードを変更します。

BIG-IP
admin@(ip-10-0-4-11)(cfg-sync Standalone)(NO LICENSE)(/Common)(tmos)# modify auth user admin password <password>

変更できたら次はブラウザから、https://:8443にアクセスしてGUIで操作をします。adminユーザ、先ほど変更したパスワードでログインができますので、ライセンスを投入していきます。

ライセンス投入

image.png

ログインするとライセンスが無いと表示されていますので、「Activate」を選択。

image.png

f5から送られてきているトライアルキーを入力して「Next…」を選択。ソフトウェア利用許諾を読んで「Accept」をします。

image.png

少し待つとライセンス認証が完了し、無事3ヶ月のトライアルができるBIG-IP veが誕生しました!

終わりに

BIG-IPは高価なのでなかなかラボ環境を揃えるのが難しいので、トライアルライセンスで勉強ができるのは嬉しいですね。次回は2台目のデプロイと冗長構成、その後はiruleなども試していきたいところです。

続きを読む

AWS環境への最新版Libreofficeインストール

AWS環境へのLibreofficeインストール

1. LibreofficeをダウンロードURLを取得(GUI環境)

GUI環境にてLibreoffice公式へアクセス。

上部のメニューバー->Download->Libreoffice最新版->Linux x64 (rpm)をダウンロードし、一度ダウンロードページに飛ぶ。

このページにアクセスすることで、ファイルサーバーへリダイレクトし、ダウンロードしてくる仕組みなため、「すぐにダウンロードが始まります。始まらない方はこちら」的な文言があるため、ここのリンクをコピー。

2.AWSでダウンロード・インストール

インストールする環境へSSHしダウンロードする。

$wget http://download.documentfoundation.org/libreoffice/stable/5.4.4/rpm/x86_64/LibreOffice_5.4.4_Linux_x86-64_rpm.tar.gz

しばらくするとダウンロードが完了するので解凍

tar xvzf LibreOffice_5.4.4_Linux_x86-64_rpm.tar.gz

今回はすでにLibreofficeをインストール済みの場合でも対応できるよう、アップグレードにも対応したコマンドを実行する。(もちろん新規インストールでもOK)

sudo rpm -Uivh LibreOffice_5.4.4.2_Linux_x86-64_rpm/RPMS/*.rpm

これでインストール完了。

libreoffice5.4 コマンドで実行できる。

さらに今回はlibreofficeコマンドとして実行したいのでシンボリックリンクを作成する。

cd /usr/bin
#必要であればsudoする
sudo ln libreoffice5.4 libreoffice

あとはlibreofficeコマンドを入力して動けば成功。

続きを読む

keystoneJSをnginxでデプロイしてaws上で動かす。

wordpressが使いたくなく、python大好きマンなのでmezzanineを使おうと思ったのですが、デプロイで頓挫したのでnodeJSでやろう。keystoneJSでやろうという次第です。

DDNSにはno-IPを利用しました。

keystoneJS official

前提

  • awsにインスタンスを作成済み
  • 上記インスタンスの3000番ポートを開けておく
  • 上記のインスタンスにssh接続出来る

諸々のインストール

sudo yum update -y

nodeJS


curl -L git.io/nodebrew | perl - setup
echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile
ebisennet$ source ~/.bash_profile

nodebrew install-binary v9.4.0

mongoDB

こちらの記事を参考にさせて頂きました。

sudo vim /etc/yum.repos.d/mongodb-org-3.2.repo

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

sudo yum install -y mongodb-org

sudo service mongod start

sudo chkconfig mongod on

Yoeman

sudo npm install --global yo

keystoneJS

sudo npm install -g generator-keystone

no-IP

sudo yum-config-manager --enable epel
sudo yum install -y noip

nginx

sudo yum install nginx

forever

npm install -g forever

keystoneJSの実行

公式ページの通りに進めます。
htmlはpug,cssはsassがオススメです。

mkdir my-test-project
cd my-test-project
yo keystone

node keystone

この時点で[myIP]の3000ポートにアクセスするとページが見れるはずです。
example : http://x.x.x.x:3000

no-IPの設定

awsのドキュメントを参考に進めます。

sudo noip2 -C
sudo chkconfig noip on
sudo service noip start

nginxでデプロイ

sudo vi /etc/nginx/nginx.conf
nginx.conf
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf; #この一行だけ加える
    ...
sudo vi /etc/nginx/conf.d/keystone.conf
keystone.conf
upstream node-sampleapp1 {
    server localhost:3000;
}

server {
    listen       80;
    server_name  http://DNSNAME/;
    proxy_redirect                          off;
    proxy_set_header Host                   $host;
    proxy_set_header X-Real-IP              $remote_addr;
    proxy_set_header X-Forwarded-Host       $host;
    proxy_set_header X-Forwarded-Server     $host;
    proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    location / {
        proxy_pass http://node-sampleapp/;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   /usr/share/nginx/html;
    }
}

foreverでデーモン化

forever start keystone.js

デバックモードを切る

vi my-test-project/.env

NODE_ENV=productionとする。

あとは、templatesやpublic,routesなどを編集して自分好みのスタイルに変更する。
また、記事の投稿はhttp://DNSNAME/keystone/signin より行う。

オチ

markdownのプラグインとか欲しいのでwordpressを始めようと思いました。

続きを読む