AnsibleをPCのセットアップに活用してみた

[Ateam Lifestyle x cyma Advent Calendar 2018](https://qiita.com/advent-calendar/2018/ateam-lifestyle-cyma)の14日目は、株式会社エイチームライフスタイルのWEBデザイナー @k_hajime が担当します。

今回は構成管理ツール「Ansible」の活用術についてご紹介したいと思います！

## 構成管理ツール「Ansible」とは？

構成管理ツールとは、サーバを立ち上げる際によく活用されるツールで、用意した設定ファイル通りにソフトやアプリを自動的にインストールさせることが出来る便利なツールです。

Ansibleもその構成管理ツールの一つです。

Ansibleは同じ環境を構築したいときに役立ち、アプリを一つ一つインストールする作業も、用意した設定ファイルを実行するだけで、必要なインストール作業を一括で終わらせることが出来るようになります。短時間かつ人的ミスなくセットアップを行うことができ、使い方も簡単なので非エンジニアの方にもおすすめ出来るツールです。

では早速、説明していきたいと思います！

## 1. Command Line Toolsのインストール

まずはAnsibleをインストールするための前準備を行います。
まずはターミナルで以下のコマンドをたたき、Command Line Toolsをインストールしましょう。

```
# Command Line Toolsのインストール
xcode-select --install
```

## 2. Homebrewのインストール

次にHomebrewをインストールします。
Homebrewは、macのアプリ導入を簡単にしてくれるパッケージ管理システムです。
AnsibleもHomebrewからインストールするので、インストールしておきましょう。

```
# Homebrewのインストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

## 3. Ansibleのインストール

さて、いよいよAnsibleのインストールです。

```
# Ansibleのインストール
brew install ansible
```

ちなみに `brew install アプリ名` や `brew cask install アプリ名` で好きなアプリをHomebrewからインストールすることができます。

## 4. ymlファイルの制作

次にエディタなどを使い、playbook.ymlというファイルを作りましょう。
このplaybook.ymlというファイルに「Aをインストール、Bをインストール、Cを...」とインストールコマンドを記述していき、最終的にこのファイルを実行しセットアップを行う形になります。

## 5. インストールコマンドを記述する

では実際にplaybook.ymlにインストールコマンドを記述していきます。
以下は私がサンプルで記述したコマンドになります。

```
---
- hosts: localhost
  connection: local

  - name: Install homebrew packages
    homebrew: name={{ item }}
    with_items:
      - git
      - mas

  - name: Install Homebrew cask packages
    homebrew_cask: name={{ item }}
    with_items:
      - google-chrome
      - firefox

  - name: mac app store
    raw: "mas install {{ item }}"
    with_items:
      - 497799835 # Xcode
      - 281796108 # Evernote
```

ひとつずつ解説します↓

### 5-1. インストール先をlocalhostに設定

今回はPCセットアップが目的のため、hostsはlocalhostに設定します

```
---
- hosts: localhost
  connection: local
```

### 5-2. Homebrew・Homebrew caskでアプリのインストール

`name:` はタスク名なので、分かりやすい任意の名前をつけておきましょう。
`with_items:` でリスト形式でループ処理させることができます。

```
  - name: Install homebrew applications
    homebrew: name={{ item }}
    with_items:
      - git # gitをインストール
      - mas # masをインストール

  - name: Install Homebrew cask packages
    homebrew_cask: name={{ item }}
    with_items:
      - firefox # firefoxをインストール
      - google-chrome # chromeをインストール
```

### 5-3. アプリの検索方法

brewでインストールできるアプリを検索する場合は以下コマンドで検索することができます。
検索は完全一致でなくても大丈夫。例えば「google」や「chrome」だけでも検索にひっかかってくれます。

また、アプリ一覧を取得する場合は以下コマンドで見ることができます。

```
# Homebrewでアプリ検索
brew search アプリ名

# Homebrew caskでアプリ検索
brew cask search アプリ名

# 一覧表示
brew search
brew cask search
```

### 5-3. App Storeからもアプリをインストールできる

またApp StoreからアプリIDを叩きインストールすることができます。masコマンドを使用するには【5-2】で記述したmasをインストールしておく必要があります。

※ただし事前にApp Storeにログインしておく必要があります。サインインするコマンドもありますがOSのバージョンによっては使用できない場合があるため割愛します。 

```
  - name: mac app store
    raw: "mas install {{ item }}"
    with_items:
      - 668208984 # GIPHY CAPTURE
      - 497799835 # Xcode
```

これでplaybook.ymlの制作が完了しました！

## 5. playbook.ymlの実行

セットアップするPCに、制作したplaybook.ymlをダウンロードしてき、以下のコマンドで実行しましょう！

```
ansible-playbook -K playbook.yml
```

### 正常にインストールできたか確認する

```
# brewでインストールしたアプリ一覧を表示
brew list

# brew caskでインストールしたアプリ一覧を表示
brew cask list

# masでインストールしたアプリ一覧を表示
mas list
```

設定したアプリがインストールされていれば、これで完了です！

## まとめ

Ansibleなどの構成管理ツールを使うことによって開発環境の構築は、爆速で終わらせることが出来るようになると思います。

また、人によってインストールしているバージョンが異なる、違うものをインストールしている、などの間違いもなくして行けるので、セットアップする側も管理がだいぶ楽になりそうですね。

ぜひ皆さんもお試しいただければと思います！

---

[Ateam Lifestyle x cyma Advent Calendar 2018](https://qiita.com/advent-calendar/2018/ateam-lifestyle-cyma)の15日目は @kytikenさん に書いてもらう予定です。お楽しみに！

エイチームグループでは、一緒に働けるチャレンジ精神旺盛な仲間を募集しています。興味を持たれた方はぜひエイチームグループ採用サイトを御覧ください。
https://www.a-tm.co.jp/recruit/