创建了一个用于Ansible在Mac环境中构建的模板
大约在2016年左右,流行的是用Ansible自动化构建Mac开发环境的故事。
我认为当拥有一台新的Mac时,主要目的是重建个人定制的工作环境。
在云上搭建实例,在远程开发环境中工作愉快。
这似乎已经成为主要趋势,需求可能正在减少。
尽管如此,
-
- このアプリ入ってないの?(ハイッテヘンヨ!)
-
- このvscode拡張のこの設定は必須でしょ。(シランモン!)
- 必要なツールどっかのwikiにあるよ。(ドコヤネン。。。)
很可能(或许)正在发生这件事。
为了解决这样的困扰,我创建了一个模板。
基本上,维护只需要一个yml文件就可以了。
※ 这次请原谅我说“所有零件都行”。。。
能做的事情
如果您不理解说明,请只关注此链接:https://github.com/kohbis/mac-ansible/tree/template
Ansible 是什么?
-
- 構成管理/オーケストレーション/デプロイメント ツール
-
- RedHat社が開発
-
- エージェントレス
- 処理をplaybook(yaml形式)で管理
以下是用中国语言对上述参考资料的原文进行的一个简洁表述:
参考1:《对于初学Ansible的人》
网址:https://qiita.com/t_nakayama0714/items/fe55ee56d6446f67113c参考2:《Ansible实践入门》
网址:https://dev.classmethod.jp/server-side/ansible/practice_ansible/
构成
这次我们以最简配置为基础,制作了可自定义的模板。
编辑器主要针对VSCode和Vim,但基本上适用于其他编辑器如Atom等,请参考我们的模板。
.
├── README.md
├── ansible.cfg
├── group_vars
│ └── localhost.yml #メンテナンス対象
├── inventory
│ └── localhost
├── localhost.yml #playbook
└── roles
├── dotfiles
│ ├── tasks
│ │ └── main.yml
│ └── template
│ ├── template.bash_profile #必要であれば編集
│ ├── template.bashrc #必要であれば編集
│ └── template.vimrc #必要であれば編集
├── homebrew
│ └── tasks
│ └── main.yml
├── homebrew_cask
│ └── tasks
│ └── main.yml
└── vscode
├── tasks
│ └── main.yml
└── templates
├── keybindings.json #必要であれば編集
└── settings.json #必要であれば編集
以下是一种可能的中文本地化表达方式:
作业是…
README.mdの通り、シェルをダウンロードして実行。
時々Enterを押したり、パスワードを入力。
只需要一个选项
因为根据不同的应用程序,可能会需要密码,所以无法完全自动化,这让人感到有点无奈。
如果有人能够说“我能做到!”并且给予指导,那将不胜感激。
curl -O https://raw.githubusercontent.com/kohbis/mac-ansible/template/setting.sh
chmod 755 ./setting.sh
sh ./setting.sh
setting.sh的设定。
在Mac上安装常用的命令行工具和Homebrew,然后运行ansible-playbook。
可以将ANSIBLE_PATH更改为任意目录,没有问题。
#!/bin/bash
ANSIBLE_PATH=~/workspace/settings/mac-ansible
## command line tools
xcode-select --install
## install homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
## install ansible
brew install ansible
## clone repo
git clone -b template https://github.com/kohbis/mac-ansible.git ${ANSIBLE_PATH}
## ansible
cd ${ANSIBLE_PATH}
ansible-playbook -i inventory/localhost localhost.yml # --tags "タグ名" 指定可能
ansible配置文件
仅需指定目录中的库存。
[defaults]
inventory = ./inventory
本地主机配置文件.yml
使用的playbook是指定task/main.yml中定义的任务进行执行。
如果不想执行,可以从角色中删除该说明。
- hosts: localhost
connection: local
gather_facts: no
become: no
roles:
- homebrew
- homebrew_cask
- dotfiles
- vscode
库存 (kù
本机
因为它以自己为对象,所以指定了本地主机。
[localhost]
127.0.0.1
组变量
本地主机.yml
我会管理一系列的自制软件和VS Code扩展功能等清单。
由于在初始阶段就能安装所需和推荐的应用程序,所以后世的人们将不再费力,这是不是很方便呢?
homebrew_taps:
- homebrew/cask
- homebrew/core
homebrew_packages:
- name: ansible
- name: awscli
## (中略) ##
- name: vim
- name: wget
homebrew_cask_packages:
- name: appcleaner
- name: cyberduck
## (中略) ##
- name: station
- name: visual-studio-code
dot_files:
- .bash_profile
- .bashrc
- .vimrc
code_extensions:
- vscode-icons-team.vscode-icons
我尽量削减了, 但是还是太多了…
如果您希望从当前使用的Mac创建一个列表,请使用以下命令。(dot_files会自动处理)
echo "homebrew_taps:" && brew tap | awk '{print " - "$1}'
echo "homebrew_packages:" && brew list | awk '{print " - name: "$1}'
echo "homebrew_cask_packages:" && brew list --cask | awk '{print " - name: "$1}'
echo "code_extensions:" && code --list-extensions | awk '{print " - "$1}'
角色
自制酿造
任务
我会先使用brew tap来添加formula。
- block:
- name: homebrew update
homebrew:
update_homebrew: yes
- name: homebrew tap
homebrew_tap:
name: '{{ item }}'
state: present
with_items: '{{ homebrew_taps }}'
- name: homebrew packages install
homebrew:
name: '{{ item.name }}'
state: '{{ item.state | default("present") }}'
with_items: '{{ homebrew_packages }}'
tags:
- homebrew
家庭酿酒
任务
我认为Homebrew的好处之一是可以安装GUI应用程序。我将明确指出安装的位置是/Applications。
- block:
- name: homebrew cask packages install
homebrew_cask: name={{ item.name }} state=installed
environment:
HOMEBREW_CASK_OPTS: "--appdir=/Applications"
with_items: '{{ homebrew_cask_packages }}'
tags:
- homebrew_cask
点文件
任务
建议将templates中的文件复制到个人的主目录中。
考虑到个人可能随时更新,因此建议在另一个仓库中管理,并创建符号链接。
- block:
########
# copy #
########
- name: copy dotfiles
template:
src: template{{ item }}
dest: ~/{{ item }}
with_items: '{{ dot_files }}'
#################
# symbolic link #
#################
# - name: checkout dotfiles
# git:
# repo: https://github.com/{your_repository}/dotfiles.git
# dest: ~/dotfiles
# - name: create symlinks
# file:
# src: ~/dotfiles/{{ item }}
# dest: ~/{{ item }}
# state: link
# force: yes
# with_items: '{{ dot_files }}'
tags:
- dotfiles
模板
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
您的.bash_profile可以保持默认设置没有问题的。
# alias ls='ls -G'
特别是可以共享prompt显示和别名是很方便的。
" set number
可以将vim的配置文件迁移到新环境中。
对于VSCode,只需要一种选择:
任务 wù)
先创建一个library目录。
在vscode中,您可能想管理的配置文件大概是setting.json和keybinding.json。
我个人建议还可以管理 ~/Library/Application Support/Code/User/snippets/ 目录下的代码片段。
- block:
- name: visual studio code library directory
file:
path="~/Library/Application Support/Code/User"
state=directory
- name: visual studio code basic setting
template:
src: settings.json
dest: "~/Library/Application Support/Code/User"
mode: 0644
- name: visual studio code keybindings
template:
src: keybindings.json
dest: "~/Library/Application Support/Code/User"
mode: 0644
- name: visual studio code install extension
raw: "code --install-extension {{ item }}"
with_items: '{{ code_extensions }}'
tags:
- vscode
模板
JSON的内容已经被注释掉。
{
// "extensions.ignoreRecommendations": true,
// "editor.minimap.enabled": false,
}
在中文中,这个句子可以这样表达:有助于与他人分享VSCode本身和扩展的详细设置,以及编码规范(尽管后者最好由各个项目单独管理),这样做会很方便。
[
// { "key": "cmd+shift+k", "command": "workbench.action.terminal.focusNext" },
// { "key": "cmd+shift+j", "command": "workbench.action.terminal.focusPrevious" },
]
由于个人的喜好不同,按键绑定可能并不是非常必要的。
在最后
尽管本篇文章没有介绍,但仍然有很多可以做的事情。
你可以在GitHub上搜索mac-ansible等关键词,获得前辈们的分享与恩惠。
https://github.com/search?q=mac-ansible
在Mac上,您也可以使用mas-cli来安装MacAppStore的应用。
这里给您贴上了笔者ansible-plyabook的URL:https://github.com/kohbis/mac-ansible (请参考,因为这个完全是个人使用,所以会频繁更新master分支)
感谢给了我一台新的Mac,这样我真的能够完成一些基本的设置了。
最后大家都会按照自己的喜好进行个性化定制,哈哈。