创建了一个用于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,这样我真的能够完成一些基本的设置了。

最后大家都会按照自己的喜好进行个性化定制,哈哈。

广告
将在 10 秒后关闭
bannerAds