Azure 自動構築環境を作る①(Azureもくもく会 2018/05/26)

# Azure もくもく会に参加してきました

![Azure もくもく会ロゴ](https://connpass-tokyo.s3.amazonaws.com/thumbs/c7/d8/c7d898c99439fb9765fef3fcf1540dd6.png)
Azure もくもく会のロゴです。
「クラウド環境」と「もくもく会」と「(もくもくと言えば)雲」、というのを掛けているのだと思います。
Azure もくもく会の詳細は[こちら](https://azure-moku2.connpass.com/)でご確認ください。

何やってる会なのかを端的に言うと、Azure開発者が一箇所に集まって、
もくもくと自分の作業を進めていく、というものです。

今回は合同ということで、
品川のMS本社に[HoloMagicians](https://hololens.connpass.com/)や[Japan Xamarin User Group](http://jxug.org/)も集まって開催でした(別室開催)

# 今日やったこと

最近 Azure 熱が高まって来ているので、
今日は以下の実装を目的にもくもく会へ参加しました。

1. Azure に Linux 仮想マシンをデプロイする。
2. Linux 仮想マシンに Ansible 実行環境を構築する。
3. Ansible の playbook を用いて Azure に仮想マシンをデプロイする。

備忘を込めて、環境情報と今日の作業の流れを記載します。


## 環境とバージョン情報

* [Microsoft Azure Cloud Computing Platform & Services](https://azure.microsoft.com/ja-jp/)
* [Cent OS 7.4](https://www.centos.org/)
* [Ansible 2.5](https://www.ansible.com/)
* [Python 2.7](https://www.python.org/)

## 作業の流れと参考情報

既に Azure の登録は済ませてあるので、登録については割愛します。

### 1. Azure Portal で Linux 仮想マシンのデプロイ

以下のサイトを読みながら、Linux 仮想マシンをデプロイしました。

* [クイック スタート - Azure portal で Linux VM を作成する | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/quick-create-portal?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)
* [Azureに仮想マシン(CentOS)を構築する – SIOS Tech. Lab](https://tech-lab.sios.jp/archives/359)

但し、リンク先のテンプレートが見当たらなかった為、今回は以下のテンプレートを利用しました。

* CentOS-based 7.4

また、Linux サーバには予め公開鍵をセット出来るので、
デプロイ後は Azure Portal の Cloud Shell から ssh 接続しました。

### 2. Ansible 2.5 の導入

以下の順に環境を通り整えながら、Ansible 2.5 を導入します。

* [EPEL(エンタープライズ向け) リポジトリの登録](https://qiita.com/bezeklik/items/9766003c19f9664602fe)
* [pip の導入](http://programmers-investigation.hatenablog.com/entry/2017/07/14/141723)
* [Ansible 2.5 の導入](http://tekunabe.hatenablog.jp/entry/2018/02/11.ansible2.5-hitoashi)

Azure Portal から ssh 接続して、
以下のコマンドを順次実行します。

```
# epel 登録
sudo yum install epel-release

# pip のインストール
sudo yum install python2-pip

# git のインストール
sudo yum install git

# Ansible 2.5 のインストール
sudo pip install git+https://github.com/ansible/ansible.git@stable-2.5

# バージョン確認
[XXXX@YYYYY ~]$ ansible --version
ansible 2.5.3
  config file = None
  configured module search path = [u'/home/XXXX/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
```

### 3. Ansible 2.5 で Hello, World!

Hello, World! を出力する([参考](https://qiita.com/mdew150/items/19a11a5cfb45e7c82c97))
まず、サンプル用に以下のファイルを作成する。

```
# playbook.yml
---
- hosts: localhost
  connection: local

  tasks:
    - name: output Hello, World!
      shell: echo Hello, World
```

次に、以下のコマンドを実行して、出力結果を確認する。

```
[XXXX@YYYYY ~]$ ansible-playbook playbook.yml -v
...(中略)
TASK [output Hello, World!] *********************************************************************************************************************************
changed: [localhost] => {"changed": true, "cmd": "echo Hello, World!", "delta": "0:00:00.010597", "end": "2018-05-26 13:53:32.383862", "rc": 0, "start": "2018-05-26 13:53:32.373265", "stderr": "", "stderr_lines": [], "stdout": "Hello, World!", "stdout_lines": ["Hello, World!"]}
```

stdout に Hello, World! の出力を確認しました。

### 4. Ansible の playbook を用いて Azure に仮想マシンをデプロイする。

以下の環境整備の途中で時間切れになりました。

* [Azure CLI のインストールと導入](https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-yum?view=azure-cli-latest)
* Ansible を使って Azure への　Windows/Linux サーバのデプロイ

```
# MS リポジトリキーの登録
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

# ローカルリポジトリ情報の作成
sudo sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'

# azure-cli のインストール
sudo yum install azure-cli

# azure-cli の認証
az login

# 上記実行後、認証用コードが画面出力されるので、以下のサイトにコードを入力する。
# https://aka.ms/devicelogin
```

これで az vm create 等が使えるようになります。

この後やろうと思っていることをザックリ書くとこんな感じです。

* Ansible から Azure 実行
* AWX の導入と AWX から Ansible の実行
* phpIPAM の導入

本当にやるのか、やれるのか等は検証しながら進めようと思います。

# おわりに
はじめてのもくもく会の参加でしたが、
ある程度目的を持って参加できた為、有意義な時間を過ごせました。

自宅だと気が緩みがちですが、周囲の集中力に助けられました。
仕事とプライベートの中間のような不思議な空間でした。

あと、書く場所がなくなってしまいましたが、
懇親会では自分の分野外の人とも会話できて楽しかったです。
※ [Hololab](http://hololab.co.jp/) の江口さん、Hololens 触らせてくれてありがとうございました!!

# 文中リンク一覧
* Azureもくもく会@東京 - connpass  
  https://azure-moku2.connpass.com/
* HoloMagicians - connpass  
  https://hololens.connpass.com/
* Japan Xamarin User Group (JXUG)  
  http://jxug.org/
* Microsoft Azure Cloud Computing Platform & Services  
  https://azure.microsoft.com/ja-jp/
* CentOS Project  
  https://www.centos.org/
* Ansible is Simple IT Automation  
  https://www.ansible.com/
* Welcome to Python.org  
  https://www.python.org
* クイック スタート - Azure portal で Linux VM を作成する | Microsoft Docs  
  https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/quick-create-portal?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json
* Azureに仮想マシン(CentOS)を構築する – SIOS Tech. Lab  
  https://tech-lab.sios.jp/archives/359
* yumリポジトリ追加リスト 完全版 - Qiita  
  https://qiita.com/bezeklik/items/9766003c19f9664602fe
* CentOS7にpipをインストールする - プログラマーの調べ物  
  http://programmers-investigation.hatenablog.com/entry/2017/07/14/141723
* Ansible 2.5 の情報を一足早く掴むために読みたいページたち - てくなべ  
  http://tekunabe.hatenablog.jp/entry/2018/02/11.ansible2.5-hitoashi
* Docker + Ansible で Hello World! - Qiita  
  https://qiita.com/mdew150/items/19a11a5cfb45e7c82c97
* yum を使用して Linux に Azure CLI 2.0 をインストールする | Microsoft Docs  
  https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-yum?view=azure-cli-latest
* 株式会社ホロラボ｜HoloLab Inc.  
  http://hololab.co.jp/

# 追記
2018-06-09: タグに azuremoku2 を追加