local-provisioner icon indicating copy to clipboard operation
local-provisioner copied to clipboard

local development env provisioner for Ubuntu, Raspi, macOS and Windows.

ansible lint install

local-provisioner

Dev environment setup.

Environment Version Method Note
macOS Ventura
Monterey
Ansible Playbook Target to Apple Silicon and Intel.
Ubuntu 22.04
20.04
WSL1
WSL2
Ansible Playbook install docker on wsl2.
Windows 11
10
scoop & winget scoop for portal app, winget for installer app.

Run

Ubuntu

clone repo and run ansible-playbook.

mkdir -p ~/github/guitarrapc && cd ~/github/guitarrapc
git clone https://github.com/guitarrapc/local-provisioner
cd ~/github/guitarrapc/local-provisioner/envs/ubuntu
bash ./prerequisites.sh
bash ./run.sh

macOS

clone repo and run ansible-playbook.

mkdir -p ~/github/guitarrapc && cd ~/github/guitarrapc
git clone https://github.com/guitarrapc/local-provisioner
cd ~/github/guitarrapc/local-provisioner/envs/macos
bash ./prerequisites.sh
exec $SHELL -l
bash ./run.sh

Windows

[!NOTE] Enable Windows Developer mode beforehand.

Install git, then clone repo and run scoop-playbook.

winget list --accept-source-agreements
winget install -e --id Git.Git --accept-package-agreements
mkdir c:/github/guitarrapc
cd c:/github/guitarrapc
git clone https://github.com/guitarrapc/local-provisioner
cd c:/github/guitarrapc/local-provisioner/envs/windows
. ./prerequisites.ps1
. ./run.ps1

run exstra non-scoop tool installation.

cd c:/github/guitarrapc/local-provisioner/envs/windows/etc
. ./run.ps1
. ./install-winget-play.ps1 # for game playing environment
. ./install-wsl1.ps1
. ./install-wsl2.ps1

run extra configs.

cd c:/github/guitarrapc/local-provisioner/envs/windows/etc
. ./enable_longpath.reg

Test

macOS

cd envs/macos
# check tests
bundle exec rake -T
# run all tests (ansible_spec)
bundle exec rake all

Linux

No support.

Windows

No support.

Support status

Ubuntu

Role Descriptions
credentials link credentials on Windows. When it's WSL1 or WSL2.
debug ansible status debugger.
docker install docker.
dotfiles link with dofiles-linux
needrestart configure needrestart for WSL1 and WSL2. WSL1 will remove needrestart. WSL2 will disable apt package detection.
tools miscellaneous tools setup.

Out of scopes

  • None.

macOS

Role Descriptions
defaults macos defaults
dotfiles link with dofiles
homebrew homebrew and cask packages
pam pam module for touchid
ruby ruby environment setup. using rbenv and just install bundler.
terraform terraform environment setup. using tfenv.

Out of scopes

  • Unity Editor (Use Unity Hub)

Windows

Role Descriptions
ba230t install app via scoop's ba230t bucket
extras install app via scoop's extras bucket
guitarrapc install app via scoop's guitarrapc bucket
main install app via scoop's main bucket
terraform-docs install app via scoop's terraform-docs bucket

Use winget to install non-scoop apps.

  • Docker for Windows.
  • Visual Studio or higher.
  • Unity Hub
  • Steam and others.

How to modify

Folk this repository.

macOS

* Modify parameters: `envs/macos/roles/<role>/vars/main.yml`.
* Modify logics: `envs/macos/roles/<role>/tasks/main.yml`.

Ubuntu

* Modify parameters: `envs/ubuntu/roles/<role>/vars/main.yml`.
* Modify logics: `envs/ubuntu/roles/<role>/tasks/main.yml`.

Windows

* Modify logics: `envs/windows/roles/<role>/tasks/main.yml`.

Issues

  • (Ubuntu) Ansible apt_key always show changed: https://github.com/ansible/ansible/issues/27798
  • (Ubuntu) get_url is not controlable or too match differ from original context. Avoid using get_url and suppress warnings.