[JAWS-UG CLI] Amazon Linux上でAWS CLI環境を整備する

AWS CLIハンズオンのための環境構築手順(Amazon Linux版)です。
適宜更新していきます。


前提条件
========

* [JAWS-UG CLI] 総合案内: http://qiita.com/tcsh/items/14c3278f69ab073afe0f を確認して、必要な手順を終えていること。

* EC2インスタンスに対してec2-userでSSHログインできること。

   * 参考: インスタンスの作成 (Public): http://qiita.com/tcsh/items/ae8f1f0d706237327c5a


# 1. AWS CLIのバージョン確認&補完設定

## 1.1. バージョン確認

```bash:コマンド:
aws --version
```


```text:結果:
aws-cli/1.7.36 Python/2.7.9 Linux/3.14.35-28.38.amzn1.x86_64
```



## 参考: AWS CLIのアップデート

AWS CLIはバージョンアップが頻繁に行なわれるので、更新方法は覚えておきましょう。

```bash:コマンド:
sudo pip install -U awscli
```



## 参考: AWS CLIのデグレード

1.3.16に戻す例:

```bash:コマンド:
sudo pip install awscli==1.3.16
```

## 1.2. 自動補完の設定

```bash:~/.bashrc(追加):
complete -C aws_completer aws
```

# 2. bashの設定

## 参考: コマンドプロンプトの設定

コマンドプロンプトが、戻り値が0のときは緑でTrueという文字列が表示され、戻り値が0以外のときは赤でFalseという文字列が表示されます。

```bash:~/.bashrc(追加部分):
PS1="\`
  if [ \$? = 0 ]; then
    echo \[\e[36m\]
  else
    echo \[\e[31m\]
  fi
\`[\u@\h]\[\e[0m\]\n\$ "
```

## サンプル: ハンズオン用推奨設定ファイル (~/.bashrc-handson-cli)

```bash:~/.bashrc-handson-cli
complete -C aws_completer aws

PS1="\`
  if [ \$? = 0 ]; then
    echo \[\e[36m\]
  else
    echo \[\e[31m\]
  fi
\`[\u@\h]\[\e[0m\]\n\$ "
```

ハンズオン開始前に、上記の設定ファイルを読み込みます。

```bash:
. ~/.bashrc-handson-cli
```


# 3. jsonlintのインストール

JSON Lintをインストールするために、npmコマンドを導入しておく必要があります。

ここではnodebrewを使います。


## 3.1. nodebrewインストール


```bash:コマンド:
curl -L git.io/nodebrew | perl - setup
```

```text:結果:
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================
```

## 3.2. .bashrc

~/.bashrcにPATHを追記します。

```bash:.bashrcに追記:
echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
```

```bash:コマンド:
which nodebrew
```

```text:結果(例):
~/.nodebrew/current/bin/nodebrew
```

## 3.3. nodeのバイナリをインストール

nodeをバイナリでインストールします。(v6.10.0の例)

```bash:コマンド:
nodebrew install-binary latest
```

```bash:コマンド:
nodebrew use latest
node -v
```

```text:結果(例):
v9.6.0
```

自動的にnpmもインストールされているはずです。

```bash:コマンド:
which npm
```

```text:結果(例):
~/.nodebrew/current/bin/npm
```

```bash:コマンド:
npm -v
```

```text:結果(例):
5.6.0
```

## 3.4. jsonlintインストール

jsonlintをインストールします。

```bash:コマンド:
npm install jsonlint -g
```

-gを付けないとインストールに失敗するようです。

```bash:コマンド:
which jsonlint
```

```text:結果(例):
~/.nodebrew/current/bin/jsonlint
```


## 3.5. jsonlintコマンドのテスト


### 正常サンプル

```bash:コマンド:
echo '{"key":"value"}' | jsonlint 
```

```text:結果:
{
  "key": "value"
}
```

### 異常サンプル

```bash:コマンド:
echo '{"key"}' | jsonlint 
```

```text:結果:
[Error: Parse error on line 1:
{"key"}
------^
Expecting ':', got '}']
```




# 4. Route53作業用オプション

## whoisコマンドの導入 (Amazon Linux)

Amazon Linuxの場合、標準でwhoisコマンドがはいっていないので、ここでは日本語対応(らしい)jwhoisをインストールします。
(jwhoisは、.mlなどのマイナーなドメインのWhoisDBは、手動でWhoisホストを指定しないとダメなようです...)

```bash:コマンド:
sudo yum install jwhois -y
```


```bash:コマンド:
which whois
```

```text:結果(例):
/usr/bin/whois
```


OSXやFreeBSDでは、whoisコマンドは標準で利用可能です。


# 5. CloudFormation作業用オプション


CloudFormationでYAMLを利用するときに必要となります。

(pipのインストール手順を追加予定)


## 5.1. yamllintのインストール

```bash:コマンド:
sudo /usr/local/bin/pip install yamllint
```

## 5.2. yamllintの確認

```bash:コマンド:
which yamllint
```

```text:結果(例):
/usr/local/bin/yamllint
```

```bash:コマンド:
yamllint -v
```

```text:結果(例):
yamllint 1.10.0
```


## 5.3. yamllintの設定

```bash:コマンド:
mkdir -p ~/.config/yamllint/
```
YAMLドキュメントの最初に'---'が無くても警告が出ないようにします。

```bash:コマンド:
cat << EOF > ~/.config/yamllint/config
rules:
  document-start:
    present: false
EOF
```