- About
- Before you begin
- Quick start
- Supported Goals
- Supported Package managers
- Directory structure and files
- Run Package Installation with goals
- Run Package Installation with tags
- Examples
This is Ansible based package management automation by Ansible Playbook (Playbook) and Ansible Hosts (goal) with pre-defined package list as variable for goal.
Checkout this or your forked repository into your local machine.
💡 Recommendation:
Highly recommned to fork this repository into your github account and make your own or team's package list for mac setup.
Simply executing the make command from the project root will start package installation for brew, brew-cask, npm, and pip of list in the host_vars/default directory by default. it will prompt account password to ensure brew package installation.
make
BECOME password: ****** [type-your-pwd]setup and package installation.
brew: Hombrew package.brew install [package]cask: Homebrew Cask package.brew install --cask [package]mas: Mac App Store withmascli.mas install <app_id>npm: NPM package.npm install --global [package]pip: PIP package.pip3 install [package]
├── goals.ini # enabled and available goals list
├── host_vars
│ ├── aws # packages variables for AWS
│ ├── default # default package variable
│ ├── gcloud.yaml # packages variables for gcloud
│ ├── golang # packages variables for golang
│ ├── java # packages variables for java
│ ├── k8s # packages variables for Kubernetes
│ ├── node # packages variables for NodeJS
│ ├── team-devops # packages variables for team-devops.
│ │ # example for team specific package list
│ └── template # template of package variable files
│ # you can make your own package with this
└── main.yml # main Ansible playbook(actually this is Ansible Host file)
goals.ini file manages the category of package. it has enabled 1 goal default by default. so that if you run make with no argument, it will just run package setup/installtion for list in host_vars/default directory.
you can execute multiple goals by adding other available goals.
## Ansible inventory file that is named as goals to be friendly for non-Ansible users
default
## Followings are available goals list. please uncommnent or add to enable installation of packages
# default
# aws
# gcloud
# golang
# java
# k8s
# node
# team-devops ## Example of team specific package managementeach directory/file names under host_vars are 1:1 mapping with goal name in the goal.ini file.
you can make host_var as directory if you have many package list to deal with. or you can make single file like goal-name.yaml if you have small list of package.
└── host_vars
├── aws # example of directory format for aws
│ └── brew-package.yaml # only has brew package list file
├── default # example of directory format for default
│ ├── brew-package.yaml # brew package list
│ ├── cask-packages.yaml # brew-cask package list
│ ├── npm-packages.yml # npm package list
│ └── pip-packages.yml # pip package lit
└── goal-name.yaml # example of single file for goal-name goalThere are 2 way you can run multiple goals
- pass argument
goalswith comma seperated string when you runmake - enalbe
goalname in thegoal.inifile
just simply add goal name in the goal.ini file. this will be easy way if you are maintaining your own or teams package list.
please ensure host variable of directory or file must be in host_vars directory and name should match with your goal.
add yours or pre-defined goal in goal.ini file:
default
your-goal-name
k8sand, just run make with no argument:
makethere are 2 argument for make command
goals: goal names to execute specific goals. comma separated string of goalstags: tag names to execute specific package type tag. comma separated string of tags
To run multiple goals:
make goals=java,golang,k8s,team-devops💡 using argument will ignore goals list in the
goal.inifile
Use tags argument when you want to run specific type of package installation.
value for tags must be comma seperated string. e.g.: tags=npm , tags=brew,cask,pip
Global Tags: same as Supported Package managers
brewcaskmasnpmpip
Goal specific Tags:
gcloudgoalcomponents:gcloud components install [package]
-
Perform package installation for all goals in my
goal.ini:# add available goals in the goal.ini. then, make -
Perform package installation for
java,nodeandk8s:make goals=java,node,k8s
-
Perform
npmandpippackage installation:make tags=npm,pip
-
Perform
brewpackage installation only forjavaandk8sgoal:make goals=java,k8s tags=brew
-
Perform
gcloudcomponents installation only:make goals=gcloud tags=components