parent
c58d44e660
commit
1076609fc2
@ -1 +0,0 @@
|
|||||||
.vagrant
|
|
@ -1,122 +0,0 @@
|
|||||||
# -*- mode: ruby -*-
|
|
||||||
# vi: set ft=ruby :
|
|
||||||
|
|
||||||
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
|
||||||
VAGRANTFILE_API_VERSION = "2"
|
|
||||||
|
|
||||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
||||||
# All Vagrant configuration is done here. The most common configuration
|
|
||||||
# options are documented and commented below. For a complete reference,
|
|
||||||
# please see the online documentation at vagrantup.com.
|
|
||||||
|
|
||||||
# Every Vagrant virtual environment requires a box to build off of.
|
|
||||||
config.vm.box = "ubuntu/trusty64"
|
|
||||||
|
|
||||||
# Disable automatic box update checking. If you disable this, then
|
|
||||||
# boxes will only be checked for updates when the user runs
|
|
||||||
# `vagrant box outdated`. This is not recommended.
|
|
||||||
# config.vm.box_check_update = false
|
|
||||||
|
|
||||||
# Create a forwarded port mapping which allows access to a specific port
|
|
||||||
# within the machine from a port on the host machine. In the example below,
|
|
||||||
# accessing "localhost:8080" will access port 80 on the guest machine.
|
|
||||||
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
|
||||||
|
|
||||||
# Create a private network, which allows host-only access to the machine
|
|
||||||
# using a specific IP.
|
|
||||||
# config.vm.network "private_network", ip: "192.168.33.10"
|
|
||||||
|
|
||||||
# Create a public network, which generally matched to bridged network.
|
|
||||||
# Bridged networks make the machine appear as another physical device on
|
|
||||||
# your network.
|
|
||||||
# config.vm.network "public_network"
|
|
||||||
|
|
||||||
# If true, then any SSH connections made will enable agent forwarding.
|
|
||||||
# Default value: false
|
|
||||||
# config.ssh.forward_agent = true
|
|
||||||
|
|
||||||
# Share an additional folder to the guest VM. The first argument is
|
|
||||||
# the path on the host to the actual folder. The second argument is
|
|
||||||
# the path on the guest to mount the folder. And the optional third
|
|
||||||
# argument is a set of non-required options.
|
|
||||||
# config.vm.synced_folder "../data", "/vagrant_data"
|
|
||||||
|
|
||||||
# Provider-specific configuration so you can fine-tune various
|
|
||||||
# backing providers for Vagrant. These expose provider-specific options.
|
|
||||||
# Example for VirtualBox:
|
|
||||||
#
|
|
||||||
# config.vm.provider "virtualbox" do |vb|
|
|
||||||
# # Don't boot with headless mode
|
|
||||||
# vb.gui = true
|
|
||||||
#
|
|
||||||
# # Use VBoxManage to customize the VM. For example to change memory:
|
|
||||||
# vb.customize ["modifyvm", :id, "--memory", "1024"]
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# View the documentation for the provider you're using for more
|
|
||||||
# information on available options.
|
|
||||||
|
|
||||||
# Enable provisioning with CFEngine. CFEngine Community packages are
|
|
||||||
# automatically installed. For example, configure the host as a
|
|
||||||
# policy server and optionally a policy file to run:
|
|
||||||
#
|
|
||||||
# config.vm.provision "cfengine" do |cf|
|
|
||||||
# cf.am_policy_hub = true
|
|
||||||
# # cf.run_file = "motd.cf"
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# You can also configure and bootstrap a client to an existing
|
|
||||||
# policy server:
|
|
||||||
#
|
|
||||||
# config.vm.provision "cfengine" do |cf|
|
|
||||||
# cf.policy_server_address = "10.0.2.15"
|
|
||||||
# end
|
|
||||||
|
|
||||||
# Enable provisioning with Puppet stand alone. Puppet manifests
|
|
||||||
# are contained in a directory path relative to this Vagrantfile.
|
|
||||||
# You will need to create the manifests directory and a manifest in
|
|
||||||
# the file default.pp in the manifests_path directory.
|
|
||||||
#
|
|
||||||
# config.vm.provision "puppet" do |puppet|
|
|
||||||
# puppet.manifests_path = "manifests"
|
|
||||||
# puppet.manifest_file = "default.pp"
|
|
||||||
# end
|
|
||||||
|
|
||||||
# Enable provisioning with chef solo, specifying a cookbooks path, roles
|
|
||||||
# path, and data_bags path (all relative to this Vagrantfile), and adding
|
|
||||||
# some recipes and/or roles.
|
|
||||||
#
|
|
||||||
# config.vm.provision "chef_solo" do |chef|
|
|
||||||
# chef.cookbooks_path = "../my-recipes/cookbooks"
|
|
||||||
# chef.roles_path = "../my-recipes/roles"
|
|
||||||
# chef.data_bags_path = "../my-recipes/data_bags"
|
|
||||||
# chef.add_recipe "mysql"
|
|
||||||
# chef.add_role "web"
|
|
||||||
#
|
|
||||||
# # You may also specify custom JSON attributes:
|
|
||||||
# chef.json = { mysql_password: "foo" }
|
|
||||||
# end
|
|
||||||
|
|
||||||
# Enable provisioning with chef server, specifying the chef server URL,
|
|
||||||
# and the path to the validation key (relative to this Vagrantfile).
|
|
||||||
#
|
|
||||||
# The Opscode Platform uses HTTPS. Substitute your organization for
|
|
||||||
# ORGNAME in the URL and validation key.
|
|
||||||
#
|
|
||||||
# If you have your own Chef Server, use the appropriate URL, which may be
|
|
||||||
# HTTP instead of HTTPS depending on your configuration. Also change the
|
|
||||||
# validation key to validation.pem.
|
|
||||||
#
|
|
||||||
# config.vm.provision "chef_client" do |chef|
|
|
||||||
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
|
|
||||||
# chef.validation_key_path = "ORGNAME-validator.pem"
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# If you're using the Opscode platform, your validator client is
|
|
||||||
# ORGNAME-validator, replacing ORGNAME with your organization name.
|
|
||||||
#
|
|
||||||
# If you have your own Chef Server, the default validation client name is
|
|
||||||
# chef-validator, unless you changed the configuration.
|
|
||||||
#
|
|
||||||
# chef.validation_client_name = "ORGNAME-validator"
|
|
||||||
end
|
|
@ -1,5 +1,4 @@
|
|||||||
[defaults]
|
[defaults]
|
||||||
hostfile = hosts.private
|
hostfile = hosts.private
|
||||||
retry_files_enabled = False
|
retry_files_enabled = False
|
||||||
retry_files_save_path = /dev/null
|
pipelining = True
|
||||||
# ask_sudo_pass = True
|
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Clone dotfiles repo into ~/.dotfiles
|
||||||
|
git:
|
||||||
|
repo: https://github.com/kejadlen/dotfiles.git
|
||||||
|
recursive: yes
|
||||||
|
dest: ~/.dotfiles
|
||||||
|
accept_hostkey: yes
|
||||||
|
version: ansible-2 # TODO Don't check this in
|
||||||
|
|
||||||
|
- name: create ~/.ssh
|
||||||
|
file: dest=~/.ssh state=directory
|
||||||
|
|
||||||
|
- name: symlink ~/.ssh/authorized_keys so future plays don't need a password
|
||||||
|
file: src=~/.dotfiles/.ssh/authorized_keys dest=~/.ssh/authorized_keys state=link
|
||||||
|
|
||||||
|
# This is necessary since we want to enable sudo when running the Homebrew
|
||||||
|
# install script but don't want to run it as root. Yeah, I know.
|
||||||
|
- name: authenticate sudo
|
||||||
|
ping:
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
- name: install Homebrew
|
||||||
|
shell: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null
|
||||||
|
when: ansible_distribution == "MacOSX"
|
@ -1,3 +0,0 @@
|
|||||||
- hosts: all
|
|
||||||
roles:
|
|
||||||
- dotfiles
|
|
@ -1,22 +0,0 @@
|
|||||||
- hosts: ec2
|
|
||||||
vars:
|
|
||||||
user: ubuntu
|
|
||||||
group: ubuntu
|
|
||||||
tasks:
|
|
||||||
- apt: update_cache=yes
|
|
||||||
sudo: true
|
|
||||||
- apt: name={{ item }} state=present
|
|
||||||
sudo: true
|
|
||||||
with_items:
|
|
||||||
- nginx
|
|
||||||
- git
|
|
||||||
|
|
||||||
- file: path=/etc/nginx/sites-enabled/default state=absent
|
|
||||||
sudo: true
|
|
||||||
notify: reload nginx
|
|
||||||
|
|
||||||
- include: tiddlywiki/tasks.yml
|
|
||||||
|
|
||||||
handlers:
|
|
||||||
- name: reload nginx
|
|
||||||
service: name=nginx state=reloaded
|
|
@ -1,7 +0,0 @@
|
|||||||
[local]
|
|
||||||
localhost ansible_connection=local
|
|
||||||
|
|
||||||
[remote]
|
|
||||||
|
|
||||||
[test]
|
|
||||||
# vagrant ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=/Users/alpha/.vagrant.d/insecure_private_key
|
|
@ -0,0 +1,8 @@
|
|||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: install sleepwatcher
|
||||||
|
homebrew_cask: name=sleepwatcher state=installed
|
||||||
|
- name: install smcfancontrol
|
||||||
|
homebrew_cask: name=smcfancontrol state=installed
|
||||||
|
- name: link ~/.wakeup
|
||||||
|
file: src=~/.dotfiles/scripts/kill_imac_hdd_fan.rb dest=~/.wakeup state=link
|
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
# this is an annotated example of some features available in playbooks
|
||||||
|
# it shows how to make sure packages are updated, how to make sure
|
||||||
|
# services are running, and how to template files. It also demos
|
||||||
|
# change handlers that can restart things (or trigger other actions)
|
||||||
|
# when resources change. For more advanced examples, see example2.yml
|
||||||
|
|
||||||
|
# on all hosts, run as the user root...
|
||||||
|
|
||||||
|
- name: example play
|
||||||
|
hosts: all
|
||||||
|
|
||||||
|
# could have also have done:
|
||||||
|
# remote_user: mdehaan
|
||||||
|
# sudo: yes
|
||||||
|
|
||||||
|
# make these variables available inside of templates
|
||||||
|
# for when we use the 'template' action/module later on...
|
||||||
|
|
||||||
|
vars:
|
||||||
|
http_port: 80
|
||||||
|
max_clients: 200
|
||||||
|
|
||||||
|
# define the tasks that are part of this play...
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: ping
|
||||||
|
ping:
|
@ -1,12 +0,0 @@
|
|||||||
- hosts: local
|
|
||||||
tasks:
|
|
||||||
- file: path={{ ansible_env.HOME }}/Applications state=directory
|
|
||||||
|
|
||||||
- homebrew_tap: name=caskroom/cask state=present
|
|
||||||
- homebrew: name=brew-cask state=present
|
|
||||||
|
|
||||||
- name: get id for built-in keyboard
|
|
||||||
shell: ioreg -n IOHIDKeyboard -r | grep -e VendorID\" -e ProductID | ruby -e 'print ARGF.read.scan(/\d+/).join(?-)'
|
|
||||||
register: keyboard_id
|
|
||||||
- name: s/caps lock/ctrl/
|
|
||||||
command: defaults -currentHost write -g com.apple.keyboard.modifiermapping.{{ keyboard_id.stdout }}-0 -array-add '<dict><key>HIDKeyboardModifierMappingDst</key><integer>2</integer><key>HIDKeyboardModifierMappingSrc</key><integer>0</integer></dict>'
|
|
@ -0,0 +1,8 @@
|
|||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: register keyboard_id
|
||||||
|
shell: ioreg -n IOHIDKeyboard -r | grep -e VendorID\" -e ProductID | ruby -e 'print ARGF.read.scan(/\d+/).join(?-)'
|
||||||
|
register: keyboard_id
|
||||||
|
|
||||||
|
- name: s/caps lock/ctrl/
|
||||||
|
command: defaults -currentHost write -g com.apple.keyboard.modifiermapping.{{ keyboard_id.stdout }}-0 -array-add '<dict><key>HIDKeyboardModifierMappingDst</key><integer>2</integer><key>HIDKeyboardModifierMappingSrc</key><integer>0</integer></dict>'
|
@ -1,5 +1,28 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- group_by: key=os_{{ ansible_distribution }}
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
pre_tasks:
|
||||||
|
- name: update dotfiles repo
|
||||||
|
git:
|
||||||
|
repo: https://github.com/kejadlen/dotfiles.git
|
||||||
|
dest: ~/.dotfiles
|
||||||
|
version: ansible-2 # TODO Don't check this in
|
||||||
|
- name: Update Homebrew
|
||||||
|
homebrew: update_homebrew=yes
|
||||||
|
|
||||||
|
- hosts: os_MacOSX
|
||||||
|
roles:
|
||||||
|
- role: homebrew
|
||||||
|
when: ansible_distribution == "MacOSX"
|
||||||
|
- role: osx
|
||||||
|
when: ansible_distribution == "MacOSX"
|
||||||
|
|
||||||
- hosts: all
|
- hosts: all
|
||||||
roles:
|
roles:
|
||||||
- bootstrap
|
|
||||||
- { role: osx, when: ansible_distribution == "MacOSX" }
|
|
||||||
- dotfiles
|
- dotfiles
|
||||||
|
- ruby
|
||||||
|
- powerline
|
||||||
|
- zsh
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
# it is possible to have top level playbook files import other playbook
|
||||||
|
# files. For example, a playbook called could include three
|
||||||
|
# different playbooks, such as webservers, workers, dbservers, etc.
|
||||||
|
#
|
||||||
|
# Running the site playbook would run all playbooks, while individual
|
||||||
|
# playbooks could still be run directly. This is somewhat like
|
||||||
|
# the tag feature and can be used in conjunction for very fine grained
|
||||||
|
# control over what you want to target when running ansible.
|
||||||
|
|
||||||
|
- name: this is a play at the top level of a file
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: say hi
|
||||||
|
tags: foo
|
||||||
|
shell: echo "hi..."
|
||||||
|
|
||||||
|
# and this is how we include another playbook, be careful and
|
||||||
|
# don't recurse infinitely or anything. Note you can't use
|
||||||
|
# any variables in the include path here.
|
||||||
|
|
||||||
|
- include: intro_example.yml
|
||||||
|
|
||||||
|
# and if we wanted, we can continue with more includes here,
|
||||||
|
# or more plays inline in this file
|
@ -1,23 +0,0 @@
|
|||||||
# TODO
|
|
||||||
# - Only run on OS X?
|
|
||||||
# - Better reloading of dnsmasq after re-configuring
|
|
||||||
- hosts: all
|
|
||||||
tasks:
|
|
||||||
- homebrew: name=dnsmasq state=present
|
|
||||||
- file: src=~/.dotfiles/dnsmasq/dnsmasq.conf dest=/usr/local/etc/dnsmasq.conf state=link
|
|
||||||
- shell: cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons
|
|
||||||
become: yes
|
|
||||||
- file: path=/Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist owner=root
|
|
||||||
become: yes
|
|
||||||
- file: path=/usr/local/etc/dnsmasq.d state=directory
|
|
||||||
- get_url:
|
|
||||||
url: http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsmasq&showintro=0&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=&mimetype=plaintext
|
|
||||||
dest: /usr/local/etc/dnsmasq.d/adblock.conf
|
|
||||||
- command: launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
|
|
||||||
become: yes
|
|
||||||
- command: launchctl stop /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
|
|
||||||
become: yes
|
|
||||||
ignore_errors: True
|
|
||||||
- command: launchctl start /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
|
|
||||||
become: yes
|
|
||||||
ignore_errors: True
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: all
|
|
||||||
vars:
|
|
||||||
dnsmasq_conf: "{{ ansible_env.HOME }}/Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist"
|
|
||||||
tasks:
|
|
||||||
- include: tasks/update_dotfiles.yml
|
|
||||||
- name: Install Dnsmasq
|
|
||||||
homebrew: name=dnsmasq state=present
|
|
||||||
- name: Stow dnsmasq.conf
|
|
||||||
command: chdir={{ ansible_env.HOME }}/.dotfiles stow --target=/usr/local/etc --stow dnsmasq
|
|
||||||
- name: Make local LaunchDaemons directory
|
|
||||||
file: path={{ ansible_env.HOME }}/Library/LaunchDaemons state=directory
|
|
||||||
- name: Delete old launchd config
|
|
||||||
sudo: True
|
|
||||||
file: path={{ dnsmasq_conf }} state=absent
|
|
||||||
# Copy the config instead of linking since it needs to be owned by root.
|
|
||||||
- name: Copy launchd config
|
|
||||||
sudo: True
|
|
||||||
command: cp /usr/local/opt/dnsmasq/homebrew.mxcl.dnsmasq.plist {{ dnsmasq_conf }}
|
|
||||||
- name: Fix launchd config permissions
|
|
||||||
sudo: True
|
|
||||||
file: path={{ ansible_env.HOME }}/Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist owner=root
|
|
||||||
- name: Load Dnsmasq
|
|
||||||
sudo: True
|
|
||||||
command: launchctl load {{ dnsmasq_conf }}
|
|
||||||
- name: Create /etc/resolver
|
|
||||||
sudo: True
|
|
||||||
file: path=/etc/resolver state=directory
|
|
||||||
# Link instead of stow since there's a stow bug with relative paths.
|
|
||||||
- name: Symlink /etc/resolver/dev
|
|
||||||
sudo: True
|
|
||||||
file: src={{ ansible_env.HOME }}/.dotfiles/resolver/dev dest=/etc/resolver/dev state=link
|
|
@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
- git:
|
|
||||||
repo: https://github.com/kejadlen/dotfiles.git
|
|
||||||
recursive: yes
|
|
||||||
dest: ~/.dotfiles
|
|
||||||
force: no
|
|
||||||
ignore_errors: True
|
|
||||||
- name: no-op so that sudo works in Homebrew later
|
|
||||||
ping:
|
|
||||||
sudo: True
|
|
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
- file: path={{ item }} state=directory # TODO Do this automatically
|
|
||||||
with_items:
|
|
||||||
- ~/.bundle
|
|
||||||
- ~/.ssh
|
|
||||||
- ~/.vim_tmp
|
|
||||||
- file: src=~/.dotfiles/{{ item.key }} dest={{ item.value }} state=link
|
|
||||||
with_dict: dotfiles
|
|
||||||
- file:
|
|
||||||
src: ~/Dropbox/dotfiles/{{ item.key }}
|
|
||||||
dest: "{{ item.value }}"
|
|
||||||
state: link
|
|
||||||
force: yes # Since these won't exist until later.
|
|
||||||
with_dict: private
|
|
||||||
- file: src={{ item }} dest=~/.ssh/{{ item | basename }} state=link
|
|
||||||
with_fileglob: ~/.dotfiles/.ssh/*
|
|
@ -1,6 +1,23 @@
|
|||||||
---
|
- name: create config directories
|
||||||
- include: dotfiles.yml
|
file: path={{ item }} state=directory
|
||||||
tags: dotfiles
|
with_items: "{{ conf_dirs }}"
|
||||||
- include: powerline.yml
|
|
||||||
tags: powerline
|
- name: symlink configs
|
||||||
- include: zsh.yml
|
file: src=~/.dotfiles/{{ item.key }} dest={{ item.value }} state=link
|
||||||
|
with_dict: "{{ conf_symlinks }}"
|
||||||
|
|
||||||
|
- name: force-symlink private configs
|
||||||
|
file:
|
||||||
|
src: ~/Dropbox/dotfiles/{{ item.key }}
|
||||||
|
dest: "{{ item.value }}"
|
||||||
|
state: link
|
||||||
|
force: yes # Since these won't exist until later.
|
||||||
|
with_dict: "{{ private_symlinks }}"
|
||||||
|
|
||||||
|
- name: symlink SSH configs
|
||||||
|
file: src={{ item }} dest=~/.ssh/{{ item | basename }} state=link
|
||||||
|
with_fileglob: ~/.dotfiles/.ssh/*
|
||||||
|
|
||||||
|
- name: symlink ~/.tmux.conf.local
|
||||||
|
file: src=~/.dotfiles/osx/.tmux.conf.local dest=~/.tmux.conf.local state=link
|
||||||
|
when: ansible_distribution == "MacOSX"
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
- homebrew: name=python state=present
|
|
||||||
when: ansible_distribution == "MacOSX"
|
|
||||||
- apt: name={{ item }} state=present
|
|
||||||
sudo: True
|
|
||||||
with_items:
|
|
||||||
- python
|
|
||||||
- python-pip
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
- command: >
|
|
||||||
/usr/local/bin/pip
|
|
||||||
install
|
|
||||||
--user
|
|
||||||
--editable={{ ansible_env.HOME }}/.dotfiles/src/powerline
|
|
||||||
- file: src={{ item }} dest=/usr/local/bin/{{ item | basename }} state=link
|
|
||||||
with_fileglob: ~/.dotfiles/src/powerline/scripts/*
|
|
||||||
- file: path=~/.config state=directory
|
|
||||||
- file: src=~/.dotfiles/powerline dest=~/.config/powerline state=link
|
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
- homebrew: name=zsh state=present
|
|
||||||
when: ansible_distribution == "MacOSX"
|
|
||||||
- apt: name=zsh state=present
|
|
||||||
sudo: True
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
- file:
|
|
||||||
src: "{{ ansible_env.HOME }}/.dotfiles/src/prezto"
|
|
||||||
dest: "{{ ansible_env.HOME}}/.zprezto"
|
|
||||||
state: link
|
|
||||||
- file:
|
|
||||||
src: "{{ ansible_env.HOME }}/.zprezto/runcoms/{{ item }}"
|
|
||||||
dest: "{{ ansible_env.HOME}}/.{{ item }}"
|
|
||||||
state: link
|
|
||||||
with_lines: ls ~/.zprezto/runcoms | grep -v README.md
|
|
||||||
- lineinfile: dest=/etc/shells line=/usr/local/bin/zsh state=present
|
|
||||||
sudo: True
|
|
||||||
when: ansible_distribution == "MacOSX"
|
|
||||||
- command: chsh -s /usr/local/bin/zsh {{ ansible_env.USER }}
|
|
||||||
sudo: True
|
|
||||||
when: ansible_distribution == "MacOSX"
|
|
@ -0,0 +1,31 @@
|
|||||||
|
- name: install Formulae
|
||||||
|
homebrew:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
install_options: "{{ item.install_options | default(omit) }}"
|
||||||
|
state: present
|
||||||
|
with_items: "{{ formulae }}"
|
||||||
|
|
||||||
|
- name: link Homebrew apps
|
||||||
|
command: /usr/local/bin/brew linkapps
|
||||||
|
|
||||||
|
- name: create ~/Applications
|
||||||
|
file: path={{ ansible_env.HOME }}/Applications state=directory
|
||||||
|
|
||||||
|
# This is necessary since we want to enable sudo when setting up Homebrew-Cask.
|
||||||
|
- name: authenticate sudo
|
||||||
|
ping:
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
- name: setup Homebrew-Cask
|
||||||
|
command: /usr/local/bin/brew cask
|
||||||
|
|
||||||
|
- name: install casks
|
||||||
|
homebrew_cask: name={{ item }} state=installed
|
||||||
|
with_items: "{{ casks }}"
|
||||||
|
|
||||||
|
- name: tap caskroom/fonts
|
||||||
|
homebrew_tap: tap=caskroom/fonts state=present
|
||||||
|
|
||||||
|
- name: install fonts
|
||||||
|
homebrew_cask: name=font-{{ item }} state=installed
|
||||||
|
with_items: "{{ fonts }}"
|
@ -0,0 +1,50 @@
|
|||||||
|
formulae:
|
||||||
|
- name: ctags
|
||||||
|
- name: direnv
|
||||||
|
- name: fasd
|
||||||
|
- name: git
|
||||||
|
- name: macvim
|
||||||
|
install_options: with-override-system-vim
|
||||||
|
- name: reattach-to-user-namespace
|
||||||
|
- name: terminal-notifier
|
||||||
|
- name: the_silver_searcher
|
||||||
|
- name: tmux
|
||||||
|
- name: tree
|
||||||
|
- name: youtube-dl
|
||||||
|
- name: zsh
|
||||||
|
|
||||||
|
casks:
|
||||||
|
- 1password
|
||||||
|
- acorn
|
||||||
|
- adium
|
||||||
|
- alfred
|
||||||
|
# - anybar
|
||||||
|
- arq
|
||||||
|
- bartender
|
||||||
|
- bittorrent-sync
|
||||||
|
- black-ink
|
||||||
|
- disk-inventory-x
|
||||||
|
- dropbox
|
||||||
|
- fantastical
|
||||||
|
- firefox
|
||||||
|
- flux
|
||||||
|
- google-chrome
|
||||||
|
- little-snitch
|
||||||
|
# - moom
|
||||||
|
- night-owl
|
||||||
|
- omnifocus
|
||||||
|
- openscad
|
||||||
|
- plug
|
||||||
|
- qlmarkdown
|
||||||
|
- qlstephen
|
||||||
|
- quicklook-csv
|
||||||
|
- quicklook-json
|
||||||
|
- slack
|
||||||
|
- steam
|
||||||
|
# - things
|
||||||
|
- transmission
|
||||||
|
- vlc
|
||||||
|
|
||||||
|
fonts:
|
||||||
|
- hack
|
||||||
|
- sauce-code-powerline
|
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
- name: ensure that Xcode is installed
|
|
||||||
command: command -v xcodebuild
|
|
||||||
|
|
||||||
- name: install homebrew
|
|
||||||
shell: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
|
||||||
args:
|
|
||||||
creates: /usr/local/bin/brew
|
|
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
- include_vars: casks.yml
|
|
||||||
|
|
||||||
- file: path={{ ansible_env.HOME }}/Applications state=directory
|
|
||||||
|
|
||||||
# - homebrew: name=caskroom/cask/brew-cask state=upgraded
|
|
||||||
- homebrew_tap: name=caskroom/cask state=present
|
|
||||||
- homebrew: name=brew-cask state=present
|
|
||||||
|
|
||||||
- homebrew_cask: name={{ item }} state=installed
|
|
||||||
with_items: casks
|
|
||||||
|
|
||||||
- synchronize:
|
|
||||||
src: "{{ item }}"
|
|
||||||
dest: "{{ item | regex_replace(' ', '\ ') }}"
|
|
||||||
rsync_opts: --ignore-existing
|
|
||||||
with_items: prefs
|
|
||||||
tags: prefs
|
|
@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
- include_vars: defaults.yml
|
|
||||||
|
|
||||||
- osx_defaults:
|
|
||||||
domain: "{{ item.domain | default(omit) }}"
|
|
||||||
key: "{{ item.key }}"
|
|
||||||
type: "{{ item.type }}"
|
|
||||||
value: "{{ item.value }}"
|
|
||||||
with_items: osx_defaults
|
|
||||||
notify: restart osx system services
|
|
@ -1,12 +1,20 @@
|
|||||||
---
|
- name: install dockutil
|
||||||
- homebrew: name=dockutil state=present
|
homebrew: name=dockutil state=present
|
||||||
|
|
||||||
- command: /usr/local/bin/dockutil --list
|
- command: /usr/local/bin/dockutil --list
|
||||||
register: dockutil_result
|
register: dockutil_result
|
||||||
- command: /usr/local/bin/dockutil --remove all
|
- name: remove all Dock icons
|
||||||
|
command: /usr/local/bin/dockutil --remove all
|
||||||
when: not (dockutil_result.stdout_lines | length == 1 and dockutil_result.stdout | search("^Downloads"))
|
when: not (dockutil_result.stdout_lines | length == 1 and dockutil_result.stdout | search("^Downloads"))
|
||||||
- command: /usr/local/bin/dockutil --add ~/Downloads
|
- name: add ~/Downloads to the Dock
|
||||||
|
command: /usr/local/bin/dockutil --add ~/Downloads
|
||||||
--view list
|
--view list
|
||||||
--display stack
|
--display stack
|
||||||
--sort datemodified
|
--sort datemodified
|
||||||
when: not (dockutil_result.stdout_lines | length == 1 and dockutil_result.stdout | search("^Downloads"))
|
when: not (dockutil_result.stdout_lines | length == 1 and dockutil_result.stdout | search("^Downloads"))
|
||||||
- homebrew: name=dockutil state=absent
|
|
||||||
|
- name: remove Dockutil
|
||||||
|
homebrew: name=dockutil state=absent
|
||||||
|
|
||||||
|
- name: restart Dock
|
||||||
|
command: killall Dock
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
- include_vars: fonts.yml
|
|
||||||
|
|
||||||
- homebrew_tap: tap=caskroom/fonts state=present
|
|
||||||
|
|
||||||
- homebrew_cask: name={{ item }} state=installed
|
|
||||||
with_items: fonts
|
|
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
- include_vars: formulae.yml
|
|
||||||
- homebrew:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
install_options: "{{ item.install_options | default(omit) }}"
|
|
||||||
state: present
|
|
||||||
with_items: formulae
|
|
||||||
- command: /usr/local/bin/brew linkapps
|
|
@ -1,20 +1,28 @@
|
|||||||
---
|
- name: copy application preferences
|
||||||
- include: bootstrap.yml
|
synchronize:
|
||||||
- include: formulae.yml
|
src: "{{ item }}"
|
||||||
|
dest: "{{ item | regex_replace(' ', '\ ') }}"
|
||||||
|
rsync_opts: --ignore-existing
|
||||||
|
with_items: "{{ app_prefs }}"
|
||||||
|
|
||||||
- include: dock.yml
|
- include: dock.yml
|
||||||
tags: dock
|
|
||||||
- include: casks.yml
|
- name: set OS X defaults
|
||||||
tags: casks
|
osx_defaults:
|
||||||
- include: fonts.yml
|
domain: "{{ item.domain | default(omit) }}"
|
||||||
- include: defaults.yml
|
key: "{{ item.key }}"
|
||||||
tags: defaults
|
type: "{{ item.type }}"
|
||||||
|
value: "{{ item.value }}"
|
||||||
|
with_items: "{{ osx_defaults }}"
|
||||||
|
notify: restart OS X system services
|
||||||
|
|
||||||
- file: path=~/Library/KeyBindings state=directory
|
- file: path=~/Library/KeyBindings state=directory
|
||||||
- file:
|
- name: Symlink Emacs-style keybindings for OS X
|
||||||
|
file:
|
||||||
src: ~/.dotfiles/osx/DefaultKeyBinding.dict
|
src: ~/.dotfiles/osx/DefaultKeyBinding.dict
|
||||||
dest: ~/Library/KeyBindings/DefaultKeyBinding.dict
|
dest: ~/Library/KeyBindings/DefaultKeyBinding.dict
|
||||||
state: link
|
state: link
|
||||||
- file: src=~/.dotfiles/osx/Colors dest=~/Library/Colors state=link
|
|
||||||
|
|
||||||
# TODO This should probably be moved to the dotfiles role.
|
- name: symlink OS X colors palettes
|
||||||
- file: src=~/.dotfiles/osx/.tmux.conf.local dest=~/.tmux.conf.local state=link
|
file: src={{ item }} dest=~/Library/Colors/{{ item | basename }} state=link
|
||||||
|
with_fileglob: ~/.dotfiles/osx/Colors/*
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
casks:
|
|
||||||
- 1password
|
|
||||||
- adium
|
|
||||||
- alfred
|
|
||||||
- anybar
|
|
||||||
- bartender
|
|
||||||
- bittorrent-sync
|
|
||||||
- black-ink
|
|
||||||
- dropbox
|
|
||||||
# - fantastical
|
|
||||||
- firefox
|
|
||||||
- flux
|
|
||||||
- google-chrome
|
|
||||||
- mailbox
|
|
||||||
- moom
|
|
||||||
- plug
|
|
||||||
- qlmarkdown
|
|
||||||
- qlstephen
|
|
||||||
- quicklook-csv
|
|
||||||
- quicklook-json
|
|
||||||
- steam
|
|
||||||
- terminal-notifier
|
|
||||||
- things
|
|
||||||
- transmission
|
|
||||||
- vlc
|
|
||||||
- yorufukurou
|
|
||||||
prefs:
|
|
||||||
- ~/Library/Application Support/Adium 2.0/
|
|
||||||
- ~/Library/Preferences/com.adiumX.adiumX.plist
|
|
||||||
- ~/Library/Preferences/com.adiumX.adiumX.plist
|
|
||||||
- ~/Library/Preferences/com.culturedcode.things.plist
|
|
||||||
- ~/Library/Preferences/com.YoruFukurouProject.YoruFukurou.plist
|
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
fonts:
|
|
||||||
- font-sauce-code-powerline
|
|
||||||
- font-hack
|
|
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
formulae:
|
|
||||||
- name: chruby
|
|
||||||
- name: ctags
|
|
||||||
- name: direnv
|
|
||||||
- name: fasd
|
|
||||||
- name: git
|
|
||||||
- name: macvim
|
|
||||||
install_options: override-system-vim
|
|
||||||
- name: ruby-install
|
|
||||||
- name: reattach-to-user-namespace
|
|
||||||
- name: the_silver_searcher
|
|
||||||
- name: tmux
|
|
||||||
- name: tree
|
|
||||||
- name: youtube-dl
|
|
||||||
- name: zsh
|
|
@ -0,0 +1,13 @@
|
|||||||
|
- name: install Python
|
||||||
|
homebrew: name=python state=present
|
||||||
|
|
||||||
|
- name: install Powerline
|
||||||
|
command: >
|
||||||
|
/usr/local/bin/pip
|
||||||
|
install
|
||||||
|
--user
|
||||||
|
--editable={{ ansible_env.HOME }}/.dotfiles/src/powerline
|
||||||
|
|
||||||
|
- name: symlink Powerline configs
|
||||||
|
file: src={{ item }} dest=/usr/local/bin/{{ item | basename }} state=link
|
||||||
|
with_fileglob: ~/.dotfiles/src/powerline/scripts/*
|
@ -0,0 +1,8 @@
|
|||||||
|
- name: install chruby
|
||||||
|
homebrew: name={{ item }} state=present
|
||||||
|
with_items:
|
||||||
|
- chruby
|
||||||
|
- ruby-install
|
||||||
|
|
||||||
|
- name: install Ruby
|
||||||
|
command: /usr/local/bin/ruby-install ruby
|
@ -0,0 +1,27 @@
|
|||||||
|
- name: install ZSH
|
||||||
|
homebrew: name=zsh state=present
|
||||||
|
|
||||||
|
- name: symlink ~/.zprezto
|
||||||
|
file:
|
||||||
|
src: "{{ ansible_env.HOME }}/.dotfiles/src/prezto"
|
||||||
|
dest: "{{ ansible_env.HOME}}/.zprezto"
|
||||||
|
state: link
|
||||||
|
|
||||||
|
- name: get Prezto runcoms from dotfiles
|
||||||
|
shell: ls ~/.zprezto/runcoms | grep -v README.md
|
||||||
|
register: prezto_runcoms
|
||||||
|
|
||||||
|
- name: symlink Prezto runcoms
|
||||||
|
file:
|
||||||
|
src: "{{ ansible_env.HOME }}/.zprezto/runcoms/{{ item }}"
|
||||||
|
dest: "{{ ansible_env.HOME}}/.{{ item }}"
|
||||||
|
state: link
|
||||||
|
with_items: "{{ prezto_runcoms.stdout_lines }}"
|
||||||
|
|
||||||
|
- name: add /usr/local/bin/zsh to /etc/shells
|
||||||
|
lineinfile: dest=/etc/shells line=/usr/local/bin/zsh state=present
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
- name: set the default user shell to zsh
|
||||||
|
user: name={{ ansible_env.USER }} shell=/usr/local/bin/zsh
|
||||||
|
become: yes
|
@ -1,16 +0,0 @@
|
|||||||
- hosts: prgmr
|
|
||||||
tasks:
|
|
||||||
- name: setup sudo
|
|
||||||
apt: pkg=sudo state=latest
|
|
||||||
- name: add users to sudo group
|
|
||||||
user: name={{ item }} append=yes groups=sudo state=present
|
|
||||||
with_items:
|
|
||||||
- alpha
|
|
||||||
- name: copy sudoers file
|
|
||||||
command: cp -f /etc/sudoers /tmp/sudoers
|
|
||||||
- name: backup sudoers file
|
|
||||||
command: cp -f /tmp/sudoers /tmp/sudoers.bak
|
|
||||||
- name: don't require a password for sudo group in /tmp/sudoers
|
|
||||||
lineinfile: "dest=/tmp/sudoers state=present regexp='^%sudo' line='%sudo ALL=(ALL:ALL) NOPASSWD: ALL'"
|
|
||||||
- name: check /tmp/sudoers and update /etc/sudoers
|
|
||||||
shell: visudo -qcf /tmp/sudoers && cp -f /tmp/sudoers /etc/sudoers
|
|
@ -1,8 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 80;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://localhost:8080;
|
|
||||||
proxy_set_header X-Forwarded-Host $host;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
- include_vars: tiddlywiki/vars.yml.private
|
|
||||||
|
|
||||||
- apt: name={{ item }} state=present
|
|
||||||
sudo: true
|
|
||||||
with_items:
|
|
||||||
- nodejs
|
|
||||||
- nodejs-legacy
|
|
||||||
- npm
|
|
||||||
|
|
||||||
# Use TiddlyWiki from source until this fix is released:
|
|
||||||
# https://github.com/Jermolene/TiddlyWiki5/issues/1474
|
|
||||||
#
|
|
||||||
# - npm: name=tiddlywiki global=yes state=present
|
|
||||||
# sudo: true
|
|
||||||
#
|
|
||||||
- git: repo=https://github.com/Jermolene/TiddlyWiki5.git dest=~/TiddlyWiki5
|
|
||||||
notify: restart tiddlywiki
|
|
||||||
- command: npm link chdir=~{{ user }}/TiddlyWiki5
|
|
||||||
sudo: true
|
|
||||||
|
|
||||||
- command: tiddlywiki ~/tiddlywiki --init server
|
|
||||||
args:
|
|
||||||
creates: ~/tiddlywiki
|
|
||||||
- copy: src=tiddlywiki/nginx.conf dest=/etc/nginx/conf.d/tiddlywiki.conf
|
|
||||||
sudo: true
|
|
||||||
notify: reload nginx
|
|
||||||
- template: src=tiddlywiki/upstart.conf.j2 dest=/etc/init/tiddlywiki.conf
|
|
||||||
sudo: true
|
|
||||||
|
|
||||||
- name: restart tiddlywiki
|
|
||||||
service: name=tiddlywiki state=restarted
|
|
||||||
sudo: true
|
|
@ -1,12 +0,0 @@
|
|||||||
description "TiddlyWiki"
|
|
||||||
author "Alpha Chen"
|
|
||||||
|
|
||||||
start on started network-services
|
|
||||||
stop on stopping network-services
|
|
||||||
|
|
||||||
setuid {{ user }}
|
|
||||||
setgid {{ group }}
|
|
||||||
|
|
||||||
console log
|
|
||||||
|
|
||||||
exec tiddlywiki /home/{{ user }}/tiddlywiki --server 8080 $:/core/save/all text/plain text/html alpha "{{ password }}"
|
|
@ -1,16 +1,21 @@
|
|||||||
dotfiles:
|
conf_dirs:
|
||||||
|
- ~/.bundle
|
||||||
|
- ~/.ssh
|
||||||
|
- ~/.vim_tmp
|
||||||
|
|
||||||
|
conf_symlinks:
|
||||||
gitignore: ~/.gitignore
|
gitignore: ~/.gitignore
|
||||||
.bundle/config: ~/.bundle/config
|
.bundle/config: ~/.bundle/config
|
||||||
|
.config: ~/.config
|
||||||
.gemrc: ~/.gemrc
|
.gemrc: ~/.gemrc
|
||||||
.git_templates: ~/.git_templates
|
.git_templates: ~/.git_templates
|
||||||
.gitconfig: ~/.gitconfig
|
.gitconfig: ~/.gitconfig
|
||||||
.hammerspoon: ~/.hammerspoon
|
.hammerspoon: ~/.hammerspoon
|
||||||
# .pentadactyl: ~/.pentadactyl
|
|
||||||
.pentadactylrc: ~/.pentadactylrc
|
.pentadactylrc: ~/.pentadactylrc
|
||||||
.pryrc: ~/.pryrc
|
.pryrc: ~/.pryrc
|
||||||
.tmux.conf: ~/.tmux.conf
|
.tmux.conf: ~/.tmux.conf
|
||||||
.vim: ~/.vim
|
.vim: ~/.vim
|
||||||
.vimrc: ~/.vimrc
|
.vimrc: ~/.vimrc
|
||||||
private:
|
|
||||||
.config: ~/.config
|
private_symlinks:
|
||||||
.gitconfig.private: ~/.gitconfig.private
|
.gitconfig.private: ~/.gitconfig.private
|
Loading…
Reference in new issue