Mac 开发 Ansible Playbook
这个 playbook 安装和配置了我在 Mac 上用于 Web 和软件开发的大部分软件。macOS 中有些东西略难自动化,所以我还有一些手动安装步骤,但至少这里都有记录。
安装
-
确保已安装 Apple 的命令行工具(运行
xcode-select --install
启动安装程序)。 -
- 运行以下命令将 Python 3 添加到 $PATH:
export PATH="$HOME/Library/Python/3.9/bin:/opt/homebrew/bin:$PATH"
- 升级 Pip:
sudo pip3 install --upgrade pip
- 安装 Ansible:
pip3 install ansible
- 运行以下命令将 Python 3 添加到 $PATH:
-
克隆或下载此仓库到本地驱动器。
-
在此目录内运行
ansible-galaxy install -r requirements.yml
来安装所需的 Ansible 角色。 -
在此目录内运行
ansible-playbook main.yml --ask-become-pass
。当提示输入 'BECOME' 密码时,输入你的 macOS 账户密码。
注意:如果某些 Homebrew 命令失败,你可能需要同意 Xcode 的许可或修复其他 Brew 问题。运行
brew doctor
查看是否属于这种情况。
用于远程 Mac
你也可以使用这个 playbook 来管理其他 Mac;playbook 甚至不需要在 Mac 上运行!如果你想管理远程 Mac,无论是网络上的另一台 Mac,还是像 MacStadium 提供的托管 Mac,你只需确保可以通过 SSH 连接到它:
- (在你要连接的 Mac 上:)转到系统偏好设置 > 共享。
- 启用"远程登录"。
你也可以在命令行启用远程登录:
sudo systemsetup -setremotelogin on
然后编辑此仓库中的 inventory
文件,将以 127.0.0.1
开头的行更改为:
[mac 的 ip 地址或主机名] ansible_user=[mac ssh 用户名]
如果你需要提供 SSH 密码(如果你不使用 SSH 密钥),确保在 ansible-playbook
命令中传递 --ask-pass
参数。
运行特定标记的任务集
你可以使用 ansible-playbook
的 --tags
标志指定一组标记来过滤要运行的配置过程部分。可用的标记有 dotfiles
、homebrew
、mas
、extra-packages
和 osx
。
ansible-playbook main.yml -K --tags "dotfiles,homebrew"
覆盖默认设置
并非每个人的开发环境和首选软件配置都相同。
你可以通过创建 config.yml
文件并在该文件中设置覆盖项来覆盖 default.config.yml
中配置的任何默认值。例如,你可以使用类似以下内容自定义已安装的包和应用:
homebrew_installed_packages:
- cowsay
- git
- go
mas_installed_apps:
- { id: 443987910, name: "1Password" }
- { id: 498486288, name: "Quick Resizer" }
- { id: 557168941, name: "Tweetbot" }
- { id: 497799835, name: "Xcode" }
composer_packages:
- name: hirak/prestissimo
- name: drush/drush
version: '^8.1'
gem_packages:
- name: bundler
state: latest
npm_packages:
- name: webpack
pip_packages:
- name: mkdocs
configure_dock: true
dockitems_remove:
- Launchpad
- TV
dockitems_persist:
- name: "Sublime Text"
path: "/Applications/Sublime Text.app/"
pos: 5
config.yml
中可以覆盖任何变量;请参阅支持角色的文档以获取可用变量的完整列表。
包含的应用程序 / 配置(默认)
应用程序(使用 Homebrew Cask 安装):
- ChromeDriver
- Docker
- Dropbox
- Firefox
- Google Chrome
- Handbrake
- Homebrew
- LICEcap
- nvALT
- Sequel Ace(MySQL客户端)
- Slack
- Sublime Text
- Transmit(S/FTP客户端)
通过Homebrew安装的软件包:
- autoconf
- bash-completion
- doxygen
- gettext
- gifsicle
- git
- gh
- go
- gpg
- httpie
- iperf
- libevent
- sqlite
- nmap
- node
- nvm
- php
- ssh-copy-id
- cowsay
- readline
- openssl
- pv
- wget
- wrk
- zsh-history-substring-search
我的dotfiles也会被安装到当前用户的主目录中,包括用于配置macOS多个方面以提高性能和易用性的.osx
文件。你可以通过在配置中设置configure_dotfiles: no
来禁用dotfiles管理。
最后,还为各种应用和服务添加了一些其他偏好设置。
完整/从头开始的设置指南
由于我已经使用这个剧本设置了大约20台不同的Mac,我决定为自己写一份完整的100%从头开始安装的参考文档(每个人的特定安装会略有不同)。
你可以在这里查看我的完整从头开始设置文档:full-mac-setup.md。
测试剧本
很多人问我是否经常擦除整个工作站并从头开始,只是为了测试对剧本的更改。不是的!这个项目在GitHub Actions的macOS基础设施上持续测试。
你也可以在虚拟机中运行macOS本身,至少可以进行一些必要的测试(App Store应用和一些专有软件可能无法正确安装)。我目前推荐:
Ansible for DevOps
查看Ansible for DevOps,它教你如何使用Ansible自动化几乎任何事情。
作者
这个项目由Jeff Geerling创建(最初受到MWGriffin/ansible-playbooks的启发)。