From 2002dea8b7175f917816f927e2b1293cfa3d9783 Mon Sep 17 00:00:00 2001 From: Fernando Torres Date: Fri, 24 Jul 2015 14:01:00 +0100 Subject: [PATCH] Add ansible provisioning to vagrant machine --- Vagrantfile | 14 +++----- provisioning/playbook.yml | 9 +++++ provisioning/roles/common/handlers/empty | 0 provisioning/roles/common/tasks/main.yml | 10 ++++++ provisioning/roles/common/templates/empty | 0 provisioning/roles/nodejs/handlers/empty | 0 provisioning/roles/nodejs/tasks/main.yml | 41 +++++++++++++++++++++++ provisioning/roles/nodejs/templates/empty | 0 provisioning/roles/nodejs/vars/main.yml | 2 ++ 9 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 provisioning/playbook.yml create mode 100644 provisioning/roles/common/handlers/empty create mode 100644 provisioning/roles/common/tasks/main.yml create mode 100644 provisioning/roles/common/templates/empty create mode 100644 provisioning/roles/nodejs/handlers/empty create mode 100644 provisioning/roles/nodejs/tasks/main.yml create mode 100644 provisioning/roles/nodejs/templates/empty create mode 100644 provisioning/roles/nodejs/vars/main.yml diff --git a/Vagrantfile b/Vagrantfile index 0fd74c0..e9e8622 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -64,13 +64,9 @@ Vagrant.configure(2) do |config| # Enable provisioning with a shell script. Additional provisioners such as # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # documentation for more information about their specific syntax and use. - config.vm.provision "shell", inline: <<-SHELL - sudo apt-get update - # Needed installations - sudo apt-get install -y git - sudo apt-get install -y nodejs - sudo apt-get install -y npm - # Needed npm global modules - sudo npm install -g node-inspector forever - SHELL + + config.vm.provision "ansible" do |ansible| + ansible.playbook = "provisioning/playbook.yml" + end + end diff --git a/provisioning/playbook.yml b/provisioning/playbook.yml new file mode 100644 index 0000000..dd6d528 --- /dev/null +++ b/provisioning/playbook.yml @@ -0,0 +1,9 @@ + +--- + +- name: apply common configuration to all nodes + hosts: all + + roles: + - common + - nodejs diff --git a/provisioning/roles/common/handlers/empty b/provisioning/roles/common/handlers/empty new file mode 100644 index 0000000..e69de29 diff --git a/provisioning/roles/common/tasks/main.yml b/provisioning/roles/common/tasks/main.yml new file mode 100644 index 0000000..d0f0c33 --- /dev/null +++ b/provisioning/roles/common/tasks/main.yml @@ -0,0 +1,10 @@ +--- +# This playbook contains common plays that will be run on all nodes. + +- name: Update repositories + apt: update_cache=yes + sudo: yes + +- name: Git + apt: name=git state=installed + sudo: yes diff --git a/provisioning/roles/common/templates/empty b/provisioning/roles/common/templates/empty new file mode 100644 index 0000000..e69de29 diff --git a/provisioning/roles/nodejs/handlers/empty b/provisioning/roles/nodejs/handlers/empty new file mode 100644 index 0000000..e69de29 diff --git a/provisioning/roles/nodejs/tasks/main.yml b/provisioning/roles/nodejs/tasks/main.yml new file mode 100644 index 0000000..91c1d29 --- /dev/null +++ b/provisioning/roles/nodejs/tasks/main.yml @@ -0,0 +1,41 @@ +--- +# This playbook install and update nodejs + +- name: Nodejs + npm + curl + apt: name={{item}} state=installed + with_items: + - nodejs + - npm + - curl + sudo: yes + +- name: Checking installed version of node.js ({{ node.version }}) + shell: /usr/bin/test `node -v` = v{{ node.version }} && echo True + register: nodeversion + ignore_errors: yes + +- name: npm install -g n + npm: name=n global=yes registry=http://registry.npmjs.org/ + sudo: yes + when: nodeversion|failed + +- name: Install last nodejs version ({{ node.version }}) + shell: n {{ node.version }} + sudo: yes + when: nodeversion|failed + +- name: Create symlinks + file: src=/usr/local/n/versions/node/{{ node.version }}/bin/{{ item.src }} dest=/usr/bin/{{ item.dest }} state=link force=yes + with_items: + - { src: 'npm', dest: 'npm' } + - { src: 'node', dest: 'node' } + - { src: 'node', dest: 'nodejs' } + sudo: yes + when: nodeversion|failed + +- name: NPM packages + npm: name={{ item }} global=yes + with_items: + - node-inspector + - forever + sudo: yes diff --git a/provisioning/roles/nodejs/templates/empty b/provisioning/roles/nodejs/templates/empty new file mode 100644 index 0000000..e69de29 diff --git a/provisioning/roles/nodejs/vars/main.yml b/provisioning/roles/nodejs/vars/main.yml new file mode 100644 index 0000000..00eff37 --- /dev/null +++ b/provisioning/roles/nodejs/vars/main.yml @@ -0,0 +1,2 @@ +node: + version: 0.12.7