Skip to content

Instantly share code, notes, and snippets.

@jgsqware
Created January 13, 2017 14:34
Show Gist options
  • Save jgsqware/5e0fe0f056c62937053a787287f980df to your computer and use it in GitHub Desktop.
Save jgsqware/5e0fe0f056c62937053a787287f980df to your computer and use it in GitHub Desktop.
Bootstrap the ansible structure
siteBootstrap() {
echo "Create site.yml"
touch site.yml
echo "---\n# main plays\n- include: all_roles.yml" > site.yml
echo "Create all_roles.yml"
touch all_roles.yml
echo "---\n- hosts: default\n any_errors_fatal: true\n roles:\n - dummy" > all_roles.yml
}
roleBootstrap() {
echo "Create roles folder"
mkdir roles
echo "Create dummy role"
mkdir roles/dummy
mkdir roles/dummy/tasks
mkdir roles/dummy/vars
echo "Create dummy vars main.yml"
touch roles/dummy/vars/main.yml
echo "key: value" > roles/dummy/vars/main.yml
echo "Create dummy tasks main.yml"
touch roles/dummy/tasks/main.yml
echo "---\n\n#- include: prerequisite.yml" > roles/dummy/tasks/main.yml
echo "Create dummy tasks prerequisite.yml"
touch roles/dummy/tasks/prerequisite.yml
echo "---\n\n- name: Prerequisite Task" > roles/dummy/tasks/prerequisite.yml
}
environmentBootstrap() {
echo "Create $1 environment"
mkdir -p environments/$1/group_vars/all
echo "Create $1 group vars"
touch environments/$1/group_vars/all/vars.yml
echo "key: value" > environments/$1/group_vars/all/vars.yml
echo "Create $1 inventory"
touch environments/$1/inventory
echo "[default]\ndefault ansible_host=127.0.0.1 ansible_user=vagrant" > environments/$1/inventory
}
environmentsBootstrap(){
echo "Create environments folder"
mkdir environments
environmentBootstrap dev
environmentBootstrap qa
environmentBootstrap prod
}
vagrantBootstrap() {
echo "Bootstrap Vagrantfile"
rm Vagrantfile
vagrant init centos/6 > /dev/null 2>&1
sed -i.bak '/config.vm.box =/a\
\
\ \ config.vm.provision "ansible" do |ansible|\
\ \ \ \ ansible.verbose = "v"\
\ \ \ \ ansible.playbook = "site.yml"\
\ \ \ \ ansible.limit = "all"\
\ \ end\
' Vagrantfile
rm Vagrantfile.bak
}
echo "##################################"
echo "# Ansible project bootstrapper #"
echo "##################################"
echo
siteBootstrap
roleBootstrap
environmentsBootstrap
vagrantBootstrap
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment