簡単!! AnsibleでMacのローカル環境を構築する

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

3月にサーバーワークスにJoinした、たかえす です。初ブログですがよろしくお願いします!
前職でも使っていたAnsibleについて書いていきます。

はじめに

PCを買い換える時などローカル環境の状態や設定情報がどうなっているか分からなくて、買い替え後にセットアップするのが大変!ということは「あるある」かなと思います。そんなときにAnsibleなどのプロビジョニングツールを使ってドキュメント化し、自動化しておくととても便利です。事始めということで、Macのソフトウェアパッケージの管理方法を紹介します。

前提条件

パッケージ管理のツールとして以下のものを利用します。

  • Homebrew
    • Macではよく利用される主にCUI関連のパッケージ管理
  • Homebrew Cask
    • GUI関連のツールのパッケージ管理

事前準備

Homebrewのインストール

公式サイトにもありますが、以下のコマンドを実行します。

python と ansible をインストール

python と ansible は動かすために必要なので手動でインストールしておきます。

Ansible Playbookによる自動化

ansible-playbook を実行するには インベントリプレイブック を用意します。

インベントリ(inventory)

実行対象のホスト等を記述しているファイルです。
今回は自分のホストのみを対象とするので以下のように localhost とだけ記述したファイルを用意します。
ファイル名はなんでも良いのですが、ここでは hosts とします。

プレイブック(playbook)

実行タスクを記述したプレイブックのYAMLファイルを作成します。サンプルですが以下のように記述します。
ファイル名はなんでも良いですが、ここでは packages.yml とします。

プレイブック(playbook)の中身の解説

  • hosts: インベントリに指定したホストを記述します、このホストに対して実行する的なイメージ
  • connection: ローカルに対して実行させたいので local を指定します、通常はsshで接続されます
  • vars: 変数を設定します、ここではインストールしたいパッケージ等を設定しています
  • tasks: 以下のタスクを定義しています
    • homebrewのアップデート
    • tapを設定
    • homebrew caskでGUIツールをインストール
    • homebrew でCUIツールをインストール

※1 homebrew cask でインストールするGUIのツールを /Application 以下にインストールするようにしている理由は、各ツールのバージョン更新はAnsible上では管理せず、各ツールのアップデートの仕組みを利用したいためです。

実行

インベントリファイル hosts とプレイブック packages.yml が存在する前提で次のコマンドで実行します。

指定した homebrew や homebrew cask のパッケージが自動でインストールされると思います。

おわりに

今回はパッケージソフトウェアだけを管理しましたが、shellモジュールなどを使うことでパッケージ管理以外も自動化することが可能です。ちなみにその他のLinux系のディストリビューションやWindows関連のモジュールも用意されているのでMac以外でも同様に利用できると思います。とてもたくさんのモジュールがあるので、ご参考に。

Ansibleなどのプロビジョニングツールを使って自動化することの最大のポイントは、設定情報などを ドキュメント化 できるという点です。サーバー構築などでもこのようなツールを導入することで何がインストールされどのような設定になっているのかがサーバにログインして調べなくても把握可能で、レビューもやりやすくなります。さらにgithubなどでバージョン管理もできます。
コードとして落としておくととてもメリットがあるしとても便利ですね!

AWS運用自動化サービス「Cloud Automator」