wayofdev.homebrew




ビルドステータス Ansibleロール 最新バージョン Ansible品質スコア Ansibleロール ソフトウェアライセンス 最新リリースからのコミット

Ansibleロール: Homebrew

macOSまたはLinuxにHomebrewをインストールし、タップ、パッケージ、カスクを設定します。パッケージは接続問題に対処するために再試行ループを使用します。

このロールが好きなら/使っているならスターを付けることを検討してください。ありがとうございます!


🗂 目次


📑 要件

  • 最近のAnsibleバージョンが必要です。メンテナンス/開発中はAnsibleのバージョンに従い、新機能が利用可能な場合はそれを使用します(そしてmeta/main.ymlを最小バージョンに更新します)。
  • 対応するOSが必要です。詳細は互換性テーブルを参照してください。
  • jmespathライブラリは、プレイブックを実行しているホストにインストールされている必要があります(json_queryフィルターに必要)。
  • ロールは異なるオペレーティングシステム上のサードパーティロールに依存しています。requirements.ymlおよび依存関係セクションを参照してください。

🔧 ロール変数

利用可能な変数は以下に示されています。例として値も含まれています(defaults/main.ymlを参照してください)。追加の変数はvars/main.ymlに保存されています。


→ 構造

HomebrewコアのGitHubリポジトリ変数。デフォルトでは、ロールは公式のHomebrewリポジトリから最新のリリースを取得します。homebrew_repositoryをフォークに切り替え、masterブランチを使用し、最新リリースの自動検出をオフにしたい場合は、homebrew_repository_use_master変数をtrueに設定します。

# どのリポジトリからHomebrewをインストールしますか?
homebrew_repository: https://github.com/Homebrew/brew

# リリース自動検出の代わりにmasterブランチを使用したい場合はtrueに設定します。
# またはhomebrew_repositoryで指定されたカスタムフォークを使用する場合。
homebrew_repository_use_master: false

trueに設定すると、Homebrew自身を更新し、すべてのHomebrewパッケージをアップグレードします。

# すべてのパッケージをアップグレードするタスクを実行
homebrew_upgrade_all: true

パッケージ/タップ/カスクのインストールタスクが失敗した場合の再試行回数と待機時間を制御する変数:

# パッケージ/タップ/カスクのインストールが失敗した場合、何回再試行しますか?
# これはネットワークの問題があるときに発生する可能性があります。
homebrew_retries: 32

# 各再試行間の遅延。
homebrew_delay: 3

新しいソフトウェアがインストールまたは更新された後にHomebrewキャッシュを削除する場合は、trueに設定します。

homebrew_clear_cache: false

カスクを介してインストールされたアプリケーションのディレクトリ。

homebrew_cask_appdir: /Applications

trueに設定すると、インストールされているカスクに新しいバージョンが利用可能かどうかを確認するとき、--greedyをbrew cask outdatedに渡します。

homebrew_cask_greedy_mode: false

デフォルトで収集されるHomebrewの分析情報をオフにします。

homebrew_collect_analytics: false

→ リポジトリをタップする

リポジトリを追加(タップする)

homebrew_taps:
  - homebrew/core
  - homebrew/cask-versions
  - homebrew/cask-fonts

リポジトリを詳しく追加(定義したURLと状態):

homebrew_taps:
  # ただタップする
  - name: homebrew/core

  # カスタムリポジトリからタップする
  - name: denji/nginx
    url: https://github.com/denji/homebrew-nginx

  # 定義されたカスタム状態でタップする
  - name: homebrew/cask-fonts
    state: present

タップを削除する:

homebrew_taps:
  # 状態を定義: absentでタップを削除
  - name: homebrew/cask-fonts
    state: absent

  - name: denji/nginx
    state: absent

→ パッケージ: インストール、更新、削除

パッケージをシンプルに追加

homebrew_packages:
  - wget
  - curl
  - nano

パッケージを高度に追加(状態、パス、その他のオプションを定義):

homebrew_packages:
  # カスタムパスにインストール
  - name: wget
    state: present
    path: /opt/custom/path/bin

パッケージを更新

homebrew_packages:
  # まずHomebrewを更新し、デフォルトパスの'brew'でwgetをインストール
  - name: wget
    state: present
    update_homebrew: true

  # まずHomebrewを更新し、デフォルトパスの'brew'でcurlの最新の利用可能な_formula_をアップグレード
  - name: curl
    state: latest
    update_homebrew: true

パッケージを削除

homebrew_packages:
  - name: wget
    state: absent
  - name: curl
    state: absent

→ カスク: インストール、更新、削除

:warning: 注意: カスクはmacOSのみに対応しています。この記事を参照してください。

カスクをシンプルに追加

homebrew_casks:
  # カスクのインストールリスト
  - firefox
  - google-chrome
  - alfred
  - 1password

高度なオプションでカスクを追加

homebrew_casks:
  # firefoxカスクのインストール
  - name: firefox
    state: present

カスクを削除

homebrew_casks:
  # 状態: absentで削除を定義
  - name: firefox
    state: absent
  - name: google-chrome
    state: absent

📗 サンプルプレイブック

→ macOSマシン用

---
- hosts: all
  connection: local

  # SSH経由で実行する場合は必要です
  environment:
    - PATH: "{{ homebrew_search_paths | join(':') }}:{{ ansible_env.PATH }}"

  vars:
    homebrew_taps:
      - homebrew/core
      - homebrew/cask
      - homebrew/cask-fonts
      - yt-dlp/taps
    homebrew_packages:
      - ssh-copy-id  # homebrew/coreから
      - yt-dlp  # yt-dlp/tapsから
    homebrew_casks:
      - firefox
      - google-chrome
      - font-fira-code-nerd-font  # homebrew/cask-fontsから
    homebrew_retries: 12
    homebrew_delay: 3
    homebrew_clear_cache: false
    homebrew_collect_analytics: false

  roles:
    - elliotweiser.osx-command-line-tools  # macOSマシン専用
    - wayofdev.homebrew

→ Linuxマシン用

---
- hosts: all
  connection: local

  # SSH経由で実行する場合は必要です
  environment:
    - PATH: "{{ homebrew_search_paths | join(':') }}:{{ ansible_env.PATH }}"

  vars:
    homebrew_user: linuxbrew  # FYI: スキップ可能ですが、linuxbrewユーザーがHomebrewをLinuxにインストールする推奨手段です
    homebrew_group: linuxbrew  # homebrew_userと同じ

    homebrew_taps:
      - homebrew/core
      - yt-dlp/taps
    homebrew_packages:
      - ssh-copy-id  # homebrew/coreから
      - yt-dlp  # yt-dlp/tapsから
    homebrew_retries: 12
    homebrew_delay: 3
    homebrew_clear_cache: false
    homebrew_collect_analytics: false

  roles:
    - geerlingguy.git  # Linuxマシン専用で、マシンにgitがあればスキップ可能
    - wayofdev.homebrew

⚙️ 開発

依存関係をインストールし、開発を開始するには、Makefileの内容を確認してください。

インストール poetrypoetry-binを使用して実行し、すべての開発用Python依存関係:

$ make install

指定されたPython依存関係のみをインストールします。すでにpoetryがあると仮定します。

$ make install-deps

すべてのgitフックをインストール

$ make hooks

ロールファイルのリント

$ make lint

🧪 テスト

リモートおよびローカルテストの全コマンドのリストはMakefileで確認できます。ローカルテストでは、ロール全体または個別のタスクをテストするこれらのコマンドを使用できます:

→ localhostで

:warning: 注意: デフォルトでは、すべてのテストはローカルマシンに対して実行されます!

# ./tests/test.ymlからのシナリオで全タグを実行
$ make test

# または、パラメータなしでtest-tagを実行
$ make test-tag

# 再現性チェックを実行
$ make test-idempotent

# 設定ファイルを検証し、インストールを行うタスクを実行
$ export TASK_TAGS="brew-install,brew-update"
$ make test-tag

# 一つのタグだけを実行する事前定義されているコマンドを実行
$ make test-install
$ make test-analytics
$ make test-update
$ make test-taps
$ make test-packages
$ make test-casks

# localhostでmoleculeテストを実行
$ poetry run molecule test --scenario-name default-macos-on-localhost -- -vvv

# または、makeコマンドで
$ make m-local

# dockerドライバーでmoleculeを実行
$ poetry run molecule test --scenario-name default -- -vvv

# またはmakeファイルで
$ make m-linux

→ SSH経由で

# リモートマシンでのmoleculeシナリオをSSH経由で実行します
# この設定にはVMのセットアップと構成が必要です
$ poetry run molecule test --scenario-name default-macos-over-ssh -- -vvv

$ make m-remote

# タグも渡すことができます
$ export TASK_TAGS="brew-install,brew-update"
$ make m-remote

📦 依存関係

インストールはMakefileによって処理され、依存関係はrequirements.ymlに定義されています。

→ 全てのための

→ macOSのための

→ Linuxのための


🧩 互換性

このロールは以下のシステムでテストされました:

システム / コンテナ タグ
macos monterey
macos big-sur
ubuntu jammy
ubuntu focal
debian bullseye
debian buster
fedora 36
fedora 35
centos 8
centos 7

🤝 ライセンス

ライセンス


🙆🏼‍♂️ 著者情報

このロールは2022年lotyp / wayofdevによって作成されました。


🧱 クレジットとリソース

インスパイアされたもの:


🫡 貢献者


🤑 スポンサー

ロールの開発とテストはParallels Desktop Pro Edition上で行われ、ライセンスはParallelsによって提供されました。

プロジェクトについて

Ansible role that uses loops and retries to install Homebrew apps and casks.

インストール
ansible-galaxy install wayofdev.homebrew
ライセンス
gpl-3.0
ダウンロード
521
所有者
Making things to build better software