LoginSignup
3
3

More than 3 years have passed since last update.

Macのセットアップツールを作ってみた

Posted at

はじめに

HomebrewやDockerなどのインストールや、zshのカスタマイズを行うツールを作りました。

対象

macOS Catalinaを使う人向けです。

なぜ作ろうと思ったのか

今までは、Macを新しく購入したりクリーンインストールしたりした際に、いつも使っているソフトを手動で一個ずつインストールしたり、設定を行ったりしていました。
この作業は、色んなサイトを見て設定したり、時にはダウンロードしたりと時間を食ってしまい、とても面倒な作業になりがちです。
これを少しでも楽にしようと思い、作ってみました。

使いかた

リポジトリからcloneして、以下コマンドを実行してください。

$ zsh SetupStart.sh

処理内容は後述します。

どんなことをやっているのか

構成

構成内容は以下のとおりです。

.
├── README.md
├── SetupStart.sh  // セットアップ開始スクリプト
└── setup
    ├── AnsibleInstall.sh  // Ansibleインストール
    ├── ShellSettings.sh  // zshの設定
    ├── ansible.cfg  
    ├── inventory
    ├── roles
    │   ├── homebrew
    │   │   ├── tasks
    │   │   │   └── main.yml
    │   │   └── vars
    │   │       └── main.yml  // homebrew tap、homebrewを使用してインストールするソフト一覧
    │   ├── homebrew_cask
    │   │   ├── tasks
    │   │   │   └── main.yml
    │   │   └── vars
    │   │       └── main.yml  // homebrew caskを使用してインストールするソフト一覧
    │   └── vscode
    │       ├── tasks
    │       │   └── main.yml  // VSCodeのExtensionインストール
    │       └── vars
    │           └── main.yml  // VSCodeのExtensionリスト
    └── setup.yml

処理内容

以下の順でインストールや設定を行っています。
1. Ansibleをインストール
2. Ansibleでbrewを使いソフトウェアをインストール
3. Ansibleでbrew caskを使いソフトウェアをインストール
4. zshのカスタマイズ

それぞれ詳細内容を説明します。

1.Ansibleをインストール

setup/AnsibleInstall.sh
# Install Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Update brew
brew update

# Install ansible
brew install ansible

2.Ansibleでbrewを使い以下ソフトウェアをインストール

  • npm
  • git
setup/roles/homebrew/tasks/main.yml
- block:
  - name: homebrew tap
    homebrew_tap:
      name: "{{ item }}"
      state: present
    with_items: "{{ taps }}"

  - name: homebrew install
    homebrew:
      name: "{{ item.name }}"
      state: "{{ item.state }}"
    with_items: "{{ packages }}"

  tags:
    - homebrew
setup/roles/homebrew/vars/main.yml
taps:
  - homebrew/cask
  - homebrew/cask-versions
  - homebrew/cask-fonts
  - homebrew/core

packages:
  - { name: npm, state: present }
  - { name: git, state: present }

3.Ansibleでbrew caskを使い以下ソフトウェアをインストール

  • Docker
  • Evernote
  • Google Chrome
  • Google日本語入力
  • Slack
  • Visual Studio Code
setup/roles/homebrew_cask/tasks/main.yml
- block:
  - name: homebrew cask install
    environment:
      HOMEBREW_CASK_OPTS: --appdir=/Applications
    homebrew_cask:
      name: "{{ item.name }}"
      state: "{{ item.state }}"
    with_items: "{{ packages }}"

  tags:
    - homebrew_cask
setup/roles/homebrew_cask/vars/main.yml
packages:  
  - { name: docker, state: present }
  - { name: evernote, state: present }
  - { name: google-chrome, state: present }
  - { name: google-japanese-ime, state: present }
  - { name: slack, state: present }
  - { name: visual-studio-code, state: present }

4.zshのカスタマイズ
ここでは、zshに以下の変更を行っています。

  • pureテーマに変更
  • 文字コードをUTF-8に変更
  • 大文字小文字関係なくターミナル上で補完するよう変更
  • コマンド履歴保存件数を1000件に変更
  • preztoをダウンロード
  • メニュー補完を有効化
setup/ShellSettings.sh
# Install pure to change terminal theme
mkdir -p "$HOME/.zsh"
git clone https://github.com/sindresorhus/pure.git "$HOME/.zsh/pure"

# zshrcに保管機能、プロンプト有効化を書き込み
{
echo "# 文字コードUTF-8に設定"
echo "export LANG=ja_JP.UTF-8"
echo ""
echo "zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'"
echo ""
echo "# history"
echo "HISTFILE=$HOME/.zsh_history"
echo "HISTSIZE=1000"
echo "SAVEHIST=1000"
echo "setopt extended_history"
echo ""
echo "zstyle ':completion:*:default' menu select=1"
echo ""
echo "fpath+=$HOME/.zsh/pure"
echo ""
echo "# プロンプト、補完有効"
echo "autoload -U promptinit compinit"
echo "promptinit"
echo "compinit"
echo ""
echo "prompt pure" } > "$HOME/.zshrc"

# Clone prezto
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
setopt EXTENDED_GLOB

# Change the prompt theme to pure
sed -i '' s/\'sorin\'/\'pure\'/ "${ZDOTDIR:-$HOME}/.zprezto/runcoms/zpreztorc"

# Enable syntax highligting and auto suggestions.
sed -i '' "s/'prompt'/'syntax-highlighting' 'autosuggestions' 'prompt'/" "${ZDOTDIR:-$HOME}/.zprezto/runcoms/zpreztorc"

# Reload
exec $SHELL -l

おわりに

このツールで、今まで時間がかかっていた作業を一気に楽にすることができました。
今後も、より楽にできるようにこのツールをカスタマイズしていきたいです。

課題

実際のツールには、Visual Studio Codeの拡張機能をAnsibleで入れています。
ですが、このツールを実行後にVisual Studio Codeを起動してみると、拡張機能がインストールされていません。
ここは調査中ですが推測する限り、AnsibleでVisual Studio Codeを入れたあとに、Visual Studio Codeの初回の起動が必要だと思われます。
この件はどう解決したらいいのか考え中です。

参考記事

お前らのターミナルはダサい
AnsibleでMacの環境構築をしてみる
Macのセットアップを自動化!3つのポイント
Ansible で Mac を構成管理するときの勘所
"AnsibleでMac環境構築するやつ"のテンプレートつくった

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3