فهرست منبع

Added externally maintained alfred role

Till Klocke 9 سال پیش
والد
کامیت
faf5749f8f
27فایلهای تغییر یافته به همراه452 افزوده شده و 0 حذف شده
  1. 2 0
      galaxy-roles/dereulenspiegel.alfred/.gitignore
  2. 36 0
      galaxy-roles/dereulenspiegel.alfred/.kitchen.yml
  3. 23 0
      galaxy-roles/dereulenspiegel.alfred/.travis.yml
  4. 7 0
      galaxy-roles/dereulenspiegel.alfred/Gemfile
  5. 46 0
      galaxy-roles/dereulenspiegel.alfred/README.md
  6. 6 0
      galaxy-roles/dereulenspiegel.alfred/defaults/main.yml
  7. 5 0
      galaxy-roles/dereulenspiegel.alfred/handlers/main.yml
  8. 1 0
      galaxy-roles/dereulenspiegel.alfred/meta/.galaxy_install_info
  9. 20 0
      galaxy-roles/dereulenspiegel.alfred/meta/main.yml
  10. 15 0
      galaxy-roles/dereulenspiegel.alfred/tasks/debian.yml
  11. 32 0
      galaxy-roles/dereulenspiegel.alfred/tasks/main.yml
  12. 20 0
      galaxy-roles/dereulenspiegel.alfred/templates/libcap.patch.j2
  13. 2 0
      galaxy-roles/dereulenspiegel.alfred/test/ansible.cfg
  14. 10 0
      galaxy-roles/dereulenspiegel.alfred/test/application/alfred_all.yml
  15. 10 0
      galaxy-roles/dereulenspiegel.alfred/test/application/alfred_pure.yml
  16. 10 0
      galaxy-roles/dereulenspiegel.alfred/test/application/alfred_travis.yml
  17. 19 0
      galaxy-roles/dereulenspiegel.alfred/test/integration/alfred_all/serverspec/alfred_spec.rb
  18. 23 0
      galaxy-roles/dereulenspiegel.alfred/test/integration/alfred_pure/serverspec/test_spec.rb
  19. 1 0
      galaxy-roles/dereulenspiegel.alfred/test/local.ini
  20. 17 0
      galaxy-roles/dereulenspiegel.alfred/test/run_vagrant_kitchen.sh
  21. 98 0
      galaxy-roles/dereulenspiegel.alfred/test/travis_run.py
  22. 11 0
      galaxy-roles/dereulenspiegel.alfred/vars/Debian-jessie.yml
  23. 11 0
      galaxy-roles/dereulenspiegel.alfred/vars/Debian-wheezy.yml
  24. 11 0
      galaxy-roles/dereulenspiegel.alfred/vars/Ubuntu-precise.yml
  25. 11 0
      galaxy-roles/dereulenspiegel.alfred/vars/Ubuntu-trusty.yml
  26. 2 0
      galaxy-roles/dereulenspiegel.alfred/vars/main.yml
  27. 3 0
      requirements.yml

+ 2 - 0
galaxy-roles/dereulenspiegel.alfred/.gitignore

@@ -0,0 +1,2 @@
+.kitchen/
+secrets

+ 36 - 0
galaxy-roles/dereulenspiegel.alfred/.kitchen.yml

@@ -0,0 +1,36 @@
+---
+driver:
+  name: vagrant
+
+provisioner:
+    name               : ansible_push
+    verbose            : "vvvv"
+    ansible_config     : "test/ansible.cfg"
+    idempotency_test   : False
+    sudo               : True
+    #chef_bootstrap_url : False
+    #extra_vars        : "@kitchen_vars.yml"
+
+platforms:
+    - name: Ubuntu-precise
+      driver:
+        box: ubuntu/precise64
+    - name: Debian-jessie
+      driver:
+        box: debian/jessie64
+    - name: Debian-wheezy
+      driver:
+        box: debian/wheezy64
+    - name: Ubuntu-trusty
+      driver:
+        box: ubuntu/trusty64
+
+suites:
+  - name: alfred_all
+    provisioner:
+      playbook: "test/application/alfred_all.yml"
+      extra_vars: {'kitchen_connection': 'smart'}
+  - name: alfred_pure
+    provisioner:
+      playbook: "test/application/alfred_pure.yml"
+      extra_vars: {'kitchen_connection': 'smart'}

+ 23 - 0
galaxy-roles/dereulenspiegel.alfred/.travis.yml

@@ -0,0 +1,23 @@
+---
+language: python
+python: "2.7"
+
+before_install:
+  # Make sure everything's up to date.
+  - sudo apt-get update -qq
+  - sudo apt-get install -qq python-apt python-pycurl git python-pip ruby ruby-dev build-essential autoconf
+  - gem install bundler
+
+install:
+  - sudo pip install ansible
+
+
+script:
+    #- cd test
+    - ansible --version
+    - bundle install
+    - KITCHEN_YAML=.kitchen.travis.yml bundle exec kitchen test travis
+
+
+after_success:
+    - echo "Success"

+ 7 - 0
galaxy-roles/dereulenspiegel.alfred/Gemfile

@@ -0,0 +1,7 @@
+source "https://rubygems.org"
+
+gem "test-kitchen"
+gem "kitchen-ansiblepush"
+gem "kitchen-ansible"
+gem "kitchen-vagrant"
+gem "kitchen-localhost"

+ 46 - 0
galaxy-roles/dereulenspiegel.alfred/README.md

@@ -0,0 +1,46 @@
+alfred [![Build Status](https://travis-ci.org/dereulenspiegel/ansible-alfred.svg?branch=master)](https://travis-ci.org/dereulenspiegel/ansible-alfred)
+=========
+
+This role installs [alfred](http://www.open-mesh.org/projects/open-mesh/wiki/Alfred).
+
+Requirements
+------------
+
+Ansible of course
+
+Role Variables
+--------------
+
+### Default Variables
+
+Name | Default | Description
+---- | ------- | -----------
+alfred_version | 2015.0 | The version of alfred to install
+alfred_source_url | http://downloads.open-mesh.org/batman/stable/sources/alfred/alfred-{{alfred_version}}.tar.gz | The URL to download alfred from
+alfred_gps | true | Wether to build alfred-gpsd
+alfred_vis | true | Wether to build batadv-vis
+
+
+Dependencies
+------------
+
+None
+
+Example Playbook
+----------------
+
+Simply depend on this role
+
+    - hosts: servers
+      roles:
+         - { role: dereulenspiegel.alfred, alfred_gps: false }
+
+License
+-------
+
+MIT
+
+Author Information
+------------------
+
+Till Klocke [dereulenspiegel](https://twitter.com/dereulenspiegel) on Twitter

+ 6 - 0
galaxy-roles/dereulenspiegel.alfred/defaults/main.yml

@@ -0,0 +1,6 @@
+---
+# defaults file for alfred
+alfred_version: 2015.0
+alfred_source_url: http://downloads.open-mesh.org/batman/stable/sources/alfred/alfred-{{alfred_version}}.tar.gz
+alfred_gps: true
+alfred_vis: true

+ 5 - 0
galaxy-roles/dereulenspiegel.alfred/handlers/main.yml

@@ -0,0 +1,5 @@
+---
+# handlers file for alfred
+
+- name: Mount all
+  shell: mount -a

+ 1 - 0
galaxy-roles/dereulenspiegel.alfred/meta/.galaxy_install_info

@@ -0,0 +1 @@
+{install_date: 'Thu Aug 13 15:07:39 2015', version: v1.0}

+ 20 - 0
galaxy-roles/dereulenspiegel.alfred/meta/main.yml

@@ -0,0 +1,20 @@
+---
+galaxy_info:
+  author: Till Klocke
+  description: Install alfred daemon
+  company: Freifunk Dortmund
+  license: MIT
+  min_ansible_version: 1.2
+  platforms:
+  - name: Ubuntu
+    versions:
+    - trusty
+    - precise
+  - name: Debian
+    versions:
+    - wheezy
+    - jessie
+  categories:
+  - monitoring
+  - networking
+dependencies: []

+ 15 - 0
galaxy-roles/dereulenspiegel.alfred/tasks/debian.yml

@@ -0,0 +1,15 @@
+- include_vars: "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
+
+- name: Ensure Alfred build deps are installed
+  apt: name={{item}} state=present
+  with_items: "{{alfred_build_deps}}"
+
+- name: Ensure alfred-gpsd build deps are installed
+  when: alfred_gps
+  apt: name={{item}} state=present
+  with_items: "{{alfred_gpsd_build_deps}}"
+
+- name: Ensure that debugfs is mounted. Alfred seems to depend on it
+  when: ansible_distribution_release == 'wheezy'
+  lineinfile: dest=/etc/fstab line="none /sys/kernel/debug     debugfs   defaults   0  0"
+  notify: Mount all

+ 32 - 0
galaxy-roles/dereulenspiegel.alfred/tasks/main.yml

@@ -0,0 +1,32 @@
+---
+# tasks file for alfred
+
+- include: debian.yml
+  when: ansible_os_family == 'Debian'
+
+- name: Download alfred source code
+  get_url: dest=/usr/src url={{alfred_source_url}}
+
+- name: Extract alfred source code
+  unarchive: src=/usr/src/alfred-{{alfred_version}}.tar.gz dest=/usr/src copy=no
+
+- name: Copy libcap patch to src directory
+  when: alfred_libcap_dev_broken
+  template: src=libcap.patch.j2 dest=/usr/src/alfred-{{alfred_version}}/libcap.patch
+
+- name: Patch makefile to fix broken libcap-dev package on Debian and Ubuntu
+  when: alfred_libcap_dev_broken
+  patch: basedir=/usr/src/alfred-{{alfred_version}} src=/usr/src/alfred-{{alfred_version}}/libcap.patch remote_src=True strip=0
+
+- set_fact:
+    alfred_config_gps: "CONFIG_ALFRED_GPSD=n"
+  when: not alfred_gps
+
+- set_fact:
+    alfred_config_vis: "CONFIG_ALFRED_VIS=n"
+  when: not alfred_vis
+
+- name: Compile and install alfred
+  shell: "make {{alfred_config_gps|default('')}} {{alfred_config_vis|default('')}} && make {{alfred_config_gps|default('')}} {{alfred_config_vis|default('')}} install"
+  args:
+    chdir: /usr/src/alfred-{{alfred_version}}

+ 20 - 0
galaxy-roles/dereulenspiegel.alfred/templates/libcap.patch.j2

@@ -0,0 +1,20 @@
+--- ../alfred_/Makefile 2015-05-01 23:47:25.179644579 +0000
++++ Makefile    2015-05-02 00:11:56.251644579 +0000
+@@ -83,11 +83,12 @@
+ 
+   ifeq ($(origin LIBCAP_CFLAGS) $(origin LIBCAP_LDLIBS), undefined undefined)
+     LIBCAP_NAME ?= libcap
+-    ifeq ($(shell $(PKG_CONFIG) --modversion $(LIBCAP_NAME) 2>/dev/null),)
+-      $(error No $(LIBCAP_NAME) development libraries found!)
+-    endif
+-    LIBCAP_CFLAGS += $(shell $(PKG_CONFIG) --cflags $(LIBCAP_NAME))
+-    LIBCAP_LDLIBS +=  $(shell $(PKG_CONFIG) --libs $(LIBCAP_NAME))
++#    ifeq ($(shell $(PKG_CONFIG) --modversion $(LIBCAP_NAME) 2>/dev/null),)
++#      $(error No $(LIBCAP_NAME) development libraries found!)
++#    endif
++#    LIBCAP_CFLAGS += $(shell $(PKG_CONFIG) --cflags $(LIBCAP_NAME))
++#    LIBCAP_LDLIBS +=  $(shell $(PKG_CONFIG) --libs $(LIBCAP_NAME))
++    LIBCAP_LDLIBS += -lcap
+   endif
+   CFLAGS += $(LIBCAP_CFLAGS)
+   CPPFLAGS += -DCONFIG_ALFRED_CAPABILITIES

+ 2 - 0
galaxy-roles/dereulenspiegel.alfred/test/ansible.cfg

@@ -0,0 +1,2 @@
+[defaults]
+roles_path=../:../../:/spec/

+ 10 - 0
galaxy-roles/dereulenspiegel.alfred/test/application/alfred_all.yml

@@ -0,0 +1,10 @@
+---
+- name         : Install and configure alfred
+  hosts        : all
+  gather_facts : yes
+  connection   : "{{ kitchen_connection | default('local') }}"
+  vars         :
+                 alfred_gps: true
+                 alfred_vis: true
+  roles        :
+                 - "ansible-alfred"

+ 10 - 0
galaxy-roles/dereulenspiegel.alfred/test/application/alfred_pure.yml

@@ -0,0 +1,10 @@
+---
+- name         : Install and configure alfred without alfred-gpsd or batadv-vis
+  hosts        : all
+  gather_facts : yes
+  connection   : "{{ kitchen_connection | default('local') }}"
+  vars         :
+                 alfred_gps: false
+                 alfred_vis: false
+  roles        :
+                 - "ansible-alfred"

+ 10 - 0
galaxy-roles/dereulenspiegel.alfred/test/application/alfred_travis.yml

@@ -0,0 +1,10 @@
+---
+- name         : Install and configure alfred
+  hosts        : localhost
+  gather_facts : yes
+  connection   : "{{ kitchen_connection | default('local') }}"
+  vars         :
+                 alfred_gps: true
+                 alfred_vis: true
+  roles        :
+                 - "ansible-alfred"

+ 19 - 0
galaxy-roles/dereulenspiegel.alfred/test/integration/alfred_all/serverspec/alfred_spec.rb

@@ -0,0 +1,19 @@
+require 'serverspec'
+
+# Required by serverspec
+set :backend, :exec
+
+describe file('/usr/local/sbin/alfred') do
+  it { should exist }
+  it { should be_executable }
+end
+
+describe file('/usr/local/sbin/alfred-gpsd') do
+  it { should exist }
+  it { should be_executable }
+end
+
+describe file('/usr/local/sbin/batadv-vis') do
+  it { should exist }
+  it { should be_executable }
+end

+ 23 - 0
galaxy-roles/dereulenspiegel.alfred/test/integration/alfred_pure/serverspec/test_spec.rb

@@ -0,0 +1,23 @@
+require 'serverspec'
+
+# Required by serverspec
+set :backend, :exec
+
+describe file('/usr/local/sbin/alfred') do
+  it { should exist }
+  it { should be_executable }
+end
+
+describe file('/usr/local/sbin/alfred-gpsd') do
+  it { should_not exist }
+  it { should_not be_executable }
+end
+
+describe file('/usr/local/sbin/batadv-vis') do
+  it { should_not exist }
+  it { should_not be_executable }
+end
+
+describe package('libgps-dev') do
+  it { should_not be_installed }
+end

+ 1 - 0
galaxy-roles/dereulenspiegel.alfred/test/local.ini

@@ -0,0 +1 @@
+localhost ansible_connection='local'

+ 17 - 0
galaxy-roles/dereulenspiegel.alfred/test/run_vagrant_kitchen.sh

@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+set -e
+echo "**** Box setup ***"
+
+echo "* mkdir /kitchen"
+mkdir -p /kitchen
+
+#echo "* cp -ar /mnt/shared /kitchen"
+#cp -r /mnt/shared/. /kitchen
+echo "* ln -sf /mnt/shared /kitchen"
+ln -sf /mnt/shared/* /kitchen/
+
+echo "* cd /kitchen"
+cd /kitchen/*
+
+echo "* python test/travis_run.py"
+python test/travis_run.py

+ 98 - 0
galaxy-roles/dereulenspiegel.alfred/test/travis_run.py

@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+# https://github.com/ahelal/travis-in-box
+
+import yaml
+import subprocess
+import sys
+import os.path
+
+
+class TravisExec(object):
+    def __init__(self, filename="travis.yml"):
+        self.fail = False
+        stream = open(filename, 'r')
+        yaml_file = yaml.load(stream)
+        # language
+        self.language = yaml_file.get("language", None)
+
+        # Section
+        self.section_before_install = yaml_file.get("before_install", None)
+        self.section_install = yaml_file.get("install", None)
+        self.section_before_script = yaml_file.get("before_script", None)
+        self.section_script = yaml_file.get("script", None)
+
+        #self.section_after_script = yaml_file.get("after_script", None)
+        self.section_after_failure = yaml_file.get("after_failure", None)
+        self.section_after_success = yaml_file.get("after_success", None)
+
+    def _setup(self):
+        if self.language == "python":
+            print "********** Setup Python  **********"
+            print ""
+            # Since we are not using container we have to install various lang our self
+            # So this is probably not the best way to do it
+            self._execute_command(["sudo apt-get install python-setuptools python-pip -y"])
+        else:
+            print "Errors unsupported language {}".format(self.language)
+            exit(1)
+
+    def life_cycle(self):
+        # See http://docs.travis-ci.com/user/build-configuration/
+
+            # 1. setup language
+            self._setup()
+            # 4. Run before_install commands
+            self.run_command("before_install", self.section_before_install, self.section_after_failure)
+            # 5. Run install commands
+            self.run_command("install", self.section_install, self.section_after_failure)
+            # 6. Run before_script commands
+            self.run_command("before_script", self.section_before_script, self.section_after_failure)
+            # 7. Run test script commands
+            self.run_command("script", self.section_script, self.section_after_failure)
+            # 8 . if we reach this point we made it run after_success
+            self.run_command("after_success", self.section_after_success, None)
+
+    @staticmethod
+    def _execute_command(command):
+        new_command = ["echo '> " + item.rstrip('\n') + "' && { " + item.rstrip('\n') + " ; }" for item in command]
+        new_command = " && ".join(new_command)
+
+        p = subprocess.Popen(new_command, shell=True, stderr=subprocess.PIPE)
+        while True:
+            out = p.stderr.read(1)
+            if out == '' and p.poll() is not None:
+                break
+            if out != '':
+                sys.stdout.write(out)
+                sys.stdout.flush()
+        print ""
+        return p.returncode
+
+    def run_command(self, section_name=None, command=None, execute_on_failure=None):
+        if command:
+            print ""
+            print "********** Running '{}' **********".format(section_name)
+            return_code = self._execute_command(command)
+            if return_code != 0:
+                print ""
+                print "********** Failed in '{}' **********".format(section_name)
+                if execute_on_failure:
+                    print ""
+                    print "********** Running after_failure  **********".format(section_name)
+                    self._execute_command(execute_on_failure)
+                    exit(1)
+
+filename = None
+if len(sys.argv) == 1:
+    filename = ".travis.yml"
+elif len(sys.argv) == 2:
+    filename = sys.argv[1]
+else:
+    print "Invalid number of arguments"
+    exit(1)
+
+if os.path.exists(filename):
+    TravisExec(filename).life_cycle()
+else:
+    print "Could not file travis file '{}'".format(filename)
+    exit(1)

+ 11 - 0
galaxy-roles/dereulenspiegel.alfred/vars/Debian-jessie.yml

@@ -0,0 +1,11 @@
+alfred_build_deps:
+  - build-essential
+  - pkg-config
+  - libcap2
+  - libcap-dev
+
+alfred_gpsd_build_deps:
+  - libgps21
+  - libgps-dev
+
+alfred_libcap_dev_broken: false

+ 11 - 0
galaxy-roles/dereulenspiegel.alfred/vars/Debian-wheezy.yml

@@ -0,0 +1,11 @@
+alfred_build_deps:
+  - build-essential
+  - pkg-config
+  - libcap2
+  - libcap-dev
+
+alfred_gpsd_build_deps:
+  - libgps20
+  - libgps-dev
+
+alfred_libcap_dev_broken: true

+ 11 - 0
galaxy-roles/dereulenspiegel.alfred/vars/Ubuntu-precise.yml

@@ -0,0 +1,11 @@
+alfred_build_deps:
+  - build-essential
+  - pkg-config
+  - libcap2
+  - libcap-dev
+
+alfred_gpsd_build_deps:
+  - libgps20
+  - libgps-dev
+
+alfred_libcap_dev_broken: true

+ 11 - 0
galaxy-roles/dereulenspiegel.alfred/vars/Ubuntu-trusty.yml

@@ -0,0 +1,11 @@
+alfred_build_deps:
+  - build-essential
+  - pkg-config
+  - libcap2
+  - libcap-dev
+
+alfred_gpsd_build_deps:
+  - libgps20
+  - libgps-dev
+
+alfred_libcap_dev_broken: true

+ 2 - 0
galaxy-roles/dereulenspiegel.alfred/vars/main.yml

@@ -0,0 +1,2 @@
+---
+# vars file for alfred

+ 3 - 0
requirements.yml

@@ -15,6 +15,9 @@
 - src: dereulenspiegel.fastd
   path: galaxy-roles
 
+- src: dereulenspiegel.alfred
+  path: galaxy-roles
+
 - src: jdauphant.nginx
   path: galaxy-roles