Azure

Scale SetをAnsibleで構成管理してみる。でもHTTPで公開できない?

はじめに

くどうです。

Scale Setはこれまでの、ロードバランサー構成を一気にガッってやってくれる機能です。
では、構成したあとはどうやってWebサーバーとして動作させるのか?
その一つに構成管理ツールがあります。ChefだとかAnsibleだとか、いろいろとありますが、一応流行りなのでAnsibleを使ってhttpdをインストールしてみたいと思います。

本投稿では最初に、ScaleSetの機能を利用してサーバーを5台立てます。
そのうえでAnsibleを利用してhttpdをインストールしていきます。

最終的に、HTTPポートで(まだ)公開できていません。

Scale Set

5台のサーバーを立てます。

ポータルから Scale Setを検索します。
すると、WindowsとLinuxの2種類が見つかります。
sl01

Linuxです。
sl02

Windowsです。
sl03

今回はLinuxを選択します。
設定項目は、単体の仮想マシンを立てるときと同じ項目です。
sl04

Scale Setの設定をします。
sl05

最初にOSの選択します。現在は7種類あります。
sl06

Instance count では立てたいサーバーの数を入力し、Sizeを決定します。
sl07

概要です。
sl08

最後に作成が表示れます。
sl09

これでしばらくすると完了します。

Scale Setで構成されるリソースは Scale Set、ロードバランサー、パブリックIP、仮想ネットワーク、ストレージアカウント(台数分)です。
sl10

ここで、SSHでアクセスするためにロードバランサーの受信NAT規則を確認します。
通常は50000~ からポート番号が割り当てられアクセスすることになります。
sl11

次にAnsibleでhttpdをインストールしていきます。

Ansibleでhttpdをインストール

Ansibleのインストールは割愛します。ググったらいっぱい出てきますので・・・

最初に、対象となるホストをhostsに記載します。

[azureuser@ansible ansibledir]$ cat hosts
[scaleset1]
13.71.157.126 ansible_ssh_user=azureuser
[scaleset2]
13.71.157.126 ansible_ssh_user=azureuser
[scaleset3]
13.71.157.126 ansible_ssh_user=azureuser
[scaleset4]
13.71.157.126 ansible_ssh_user=azureuser
[scaleset5]
13.71.157.126 ansible_ssh_user=azureuser

次に、httpdをインストールするPlaybookです。

[azureuser@ansible ansibledir]$ cat install-httpd.yml
- name: install yum httpd
  yum: name={{ item }} state=latest
  with_items:
  - httpd
- name: start httpd
  service: name=httpd enabled=yes state=started

最後に、実行するためにPlaybookです。
それぞれ、ポートを指定します。hostsのファイルでうまく動作できなかったのでこっちに書いてます。

[azureuser@ansible ansibledir]$ cat httpd.yml
- name: scaleset1
  hosts: scaleset1
  port: 50000
  sudo: yes
  tasks:
  - include: install-httpd.yml
- name: scaleset2
  hosts: scaleset2
  port: 50001
  sudo: yes
  tasks:
  - include: install-httpd.yml
- name: scaleset3
  hosts: scaleset3
  port: 50002
  sudo: yes
  tasks:
  - include: install-httpd.yml
- name: scaleset4
  hosts: scaleset4
  port: 50003
  sudo: yes
  tasks:
  - include: install-httpd.yml
- name: scaleset5
  hosts: scaleset5
  port: 50004
  sudo: yes
  tasks:
  - include: install-httpd.yml

DryRunします。
hostsを指定し、SSHパスワードを聞かれるようにしています。
Scale SetでKeyを仕込む場合はKeyを設定します。

[azureuser@ansible ansibledir]$ ansible-playbook httpd.yml  -i hosts  --ask-pass --ask-sudo-pass
SSH password:
SUDO password[defaults to SSH password]:

PLAY [scaleset1] **************************************************************

GATHERING FACTS ***************************************************************
ok: [13.71.157.126]

TASK: [install yum httpd] *****************************************************
ok: [13.71.157.126] => (item=httpd)

TASK: [start httpd] ***********************************************************
changed: [13.71.157.126]

PLAY [scaleset2] **************************************************************

GATHERING FACTS ***************************************************************
ok: [13.71.157.126]

TASK: [install yum httpd] *****************************************************
ok: [13.71.157.126] => (item=httpd)

TASK: [start httpd] ***********************************************************
changed: [13.71.157.126]

PLAY [scaleset3] **************************************************************

GATHERING FACTS ***************************************************************
ok: [13.71.157.126]

TASK: [install yum httpd] *****************************************************
ok: [13.71.157.126] => (item=httpd)

TASK: [start httpd] ***********************************************************
changed: [13.71.157.126]

PLAY [scaleset4] **************************************************************

GATHERING FACTS ***************************************************************
ok: [13.71.157.126]

TASK: [install yum httpd] *****************************************************
ok: [13.71.157.126] => (item=httpd)

TASK: [start httpd] ***********************************************************
changed: [13.71.157.126]

PLAY [scaleset5] **************************************************************

GATHERING FACTS ***************************************************************
ok: [13.71.157.126]

TASK: [install yum httpd] *****************************************************
ok: [13.71.157.126] => (item=httpd)

TASK: [start httpd] ***********************************************************
changed: [13.71.157.126]

PLAY RECAP ********************************************************************
13.71.157.126              : ok=15   changed=5    unreachable=0    failed=0

確認が取れたので実際に実行します。
・・・ここからHTTPでアクセス!って言いたいのですがLBにハマってます。

ただ、各サーバーにsshでログインしてHttpdが動作していることは確認しています。

まとめ

Scale Setは便利だが、いまいち資料がないのでハマっている最中です。
HTTPで公開する方法がわからない・・・・orz

ただ、Scale Setは多くのサーバーを一気に立てれるのは便利かな・・・

ではでは

-Azure
-,