ひつまぶし食べたい

メモ代わりのブログ

さくらのクラウドでN百台を管理するためにterraformとansibleを使っている話


これは、さくらインターネット Advent Calendar 2017 として書いた記事 です。


さくらインターネットでは、今年4月からIoTプラットフォームの sakura.io をサービス提供しています。 sakura.io は、さくらのクラウド上で本番・検証環境を構築しており、数百台のサーバーを利用しています。


Ansible でバージョンチェックする

やりたいこと

サーバー管理には ansible を使っていますが、apt で入れているパッケージに対して、以下をやりたい状況がありました。

  • インストールされていなかったらインストール
  • あるバージョン未満だったらアップデート

pipやgemといった言語のパッケージマネージャと違って、apt ではバージョンの制約を書くことが面倒です。 いい感じに playbook の中でバージョン比較をして、インストール/アップデートすべきかを判定したいと考えました。


git bisect でバグ/仕様変更のコミットを探す

まとめ

遭遇した問題

ansible で構成/コンフィグ管理やプロビジョニングをしているのだけど、 複数のリージョンやゾーンにまたがるシステムのため、うまく設定を見やすくするために、 以下のように group_vars 配下にディレクトリ構造を作っていた。


Anisble for Windows

久しぶりに ansible で windows を操作するので、メモ。 実行側は Debian Sid でやっているので、apt-get しているところについては、適宜置き換えて欲しい。 ansibleは2.1.0を使っている。


WindowsをAnsibleで設定する

資料

Windows Support — Ansible Documentation

マシンの準備

ansibleコマンドを実行するマシン

ansibleがすでに実行できる状況であれば、

pip install http://github.com/diyan/pywinrm/archive/master.zip#egg=pywinrm
pip install kerberos # AD accountを使う場合

とすればOK。

Windowsマシン

要件

  1. WinRM がインストール済み
  2. PowerShell version > 3.0
  • 自動的に、Windows 7SP1, Windows Server2008 SP1以降になる
  • Windows Server 2012ははじめからPowershell 4.0がインストールされている

セットアップ方法

  1. Powershell 3.0にアップデートが必要な場合
  2. WinRMのインストール
  3. Configure-SMRemoting.exe -get で有効になっていることを確認
  4. WinRM get WinRM/config でWinRMのポートを確認

ansibleの実行方法

Inventory

最小構成は以下の通り。 以降は、hostsという名前で呼ぶ。