2013年4月10日星期三

5 iOS Digital Audio Workstations For Producers On a Budget

5 iOS Digital Audio Workstations For Producers On a Budget:
So you’ve transformed your iPad into an endlessly evolving musical instrument, programmed your own tight drum beats and discovered the huge potential of AudioBus. You’ve sacrificed disk space for samples and your bank balance for virtual analogue warmth – and you’re ready to move on to the next stage.
Sticking with the theme of iOS music creation, today’s article highlights some of the best budget digital audio workstations (DAWs) on the App Store. These apps provide the blank canvas you need to begin putting together your own samples, loops and live recordings, before mixing down and exporting your work. It’s time to lay down a rough mix.

Retronyms Tabletop (Free, iPad-Only)


Free to try with a ton of in-app purchases, Retronyms’ Tabletop seems like an obvious place to start. The app is designed solely for use on the iPad and after a rather large download of nearly 650MB, you will have the barebones you need to begin producing music. There are 12 included “devices” from keyboards to effect modules, with more available for purchase within the application.

Tabletop takes the virtual studio idea to the next level, and approaches inputs and outputs in the same way desktop software like Reason does it, allowing you to create complex chains of effects and triggers. It’s free and most definitely worth checking out if you’re interested in an all-in-one solution, or if you own any Tabletop-compatible apps (at present the AKAI iMPC and iMini). There’s the usual support for AudioCopy and AudioPaste for moving samples between apps, though AudioBus support is currently absent.
Tabletop is an attractive tool at this price point, but once you begin to outgrow the included modules you might find yourself spending rather a lot on in-app purchases, when you could put that money towards bigger and better dedicated synths and route everything through AudioBus. Food for thought.

StudioTrack ($9.99)


StudioTrack is a barebones multi-track recorder for the iPad. It was developed by Sonoma Wire Works, the team who standardised AudioCopy and AudioPaste, so these features were included from the outset (though there’s still no AudioBus, disappointingly). The DAW currently supports up to 8 tracks with features like mute, solo, reverb and a range of effects for each.

It might be a rather basic on the surface, but StudioTrack includes customisable effects, the ability to record from external inputs, bouncing (re-sampling), accurate meters for mixing and a clutter-free UI that won’t make beginners want to run for the hills. Best of all at $10 it won’t break the bank, though if you’re going to need fine control over 8 tracks or more you might want to look elsewhere.

GarageBand ($4.99)


It seems that every time I write an article about iOS and music GarageBand is a mandatory mention, and here it is again. This will be the iOS DAW that most people reach for first, being one of the cheapest ways of repurposing your tablet into a virtual orchestra, drum kit or recording studio. Much like StudioTrack above, GarageBand is limited to 8 simultaneous tracks though Apple included a track merging tool for freeing up space.
GarageBand is probably an altogether better deal than many of the other apps on this list, though the lack of serious control over effects, a rather limited mixer implementation and fiddly sample trimming means this is certainly no professional outfit. To put it altogether more simply: most of the DAWs on this list might not have half the features included in GarageBand but they’ll outperform it when it comes to the main functions of a digital audio workstation.
I’d definitely recommend purchasing GarageBand, just don’t expect to do too much with the timeline editor or mixer functions. Instead you should make use of its guitar amp and stompbox effects for live recording, as well as virtual synths and smart instruments.

MultiTrack DAW ($9.99)


Now we’re talking – MultiTrack DAW offers up to 24 simultaneous stereo tracks for $9.99, with an optional in-app purchase of $7.99 to add 16 more tracks. That’s a total of 40 stereo tracks, each with its own compressor and equaliser and each capable of recording from the in-built mic, headsets, as well as USB devices like sound cards.

There’s a reason that MultiTrack DAW has built up such a loyal following, and that’s down to its simplicity. There are no instruments or generators – this is a tool that is designed for throwing together the grooves, melodies and samples you’ve already made in other apps. With support for AudioCopy as well as AudioBus, monitoring, overdubbing and fine-control over the trimming and arrangement of samples, MultiTrack DAW is a barebones workhorse that does one job, and does it well.

Nanostudio ($14.99)


Nanostudio is another all-in-one DAW solution that comes with the powerful “Eden” synthesizer and a sampler, as well as a 6-track timeline editor which is upgradeable to 16-tracks for a one-off additional purchase of $4.99. Much like MultiTrack DAW above, Nanostudio has been on the App Store for a while and has developed an army of fans, with positive reviews across the board.

Other features include MIDI input, a powerful sequencer for triggering in-built instruments, track effects and AudioCopy and AudioPaste, though AudioBus support is still absent. The features and price make this app ideal for those who want a little more than what MultiTrack DAW provides, though even 16 tracks can feel limiting. If you’re curious and want to know more developers Blip Interactive have made the Mac OS X and Windows versions of Nanostudio free on their website, so you can truly try before you buy.

More Money Than Sense?

The following DAWs are expensive, and thus probably beyond the interest of casual users. If you are thinking of taking your iOS music making to the next level, you might want to consider paying pretty penny for a lot more oomph.

Auria ($49.99) or Audio LE ($24.99)

Offering a total of 48 separate tracks, Auria is one of the most complete tools for iOS recording, mastering and mixing. If $50 for an app seems a little steep to you then Auria LE is a lighter edition with only 24 tracks for half the price. This is an app that’s designed to take your desktop PC out of the equation when it comes to making music, check out the video below for the dazzling array of features.

FL Studio Mobile HD ($19.99)

Initially known as Fruity Loops and later evolving into FL Studio for the Mac and PC, developers Image-Line have finally unleashed a mobile version of their famous workstation. This tool is ideal for anyone who already uses FL Studio on their desktop as you can export your projects to your PC or Mac and carry on where you left off.

Cubasis ($49.99, iPad Only)

Steinberg made quite a name for itself with software like Cubase and now they’re taking on the mobile market with Cubasis. This app promises “unlimited” audio and MIDI tracks on the latest iDevices, and the ability to export back to Cubase too. A serious tool for those already invested in Steinberg’s other software.

Do you use a DAW on your iPhone or iPad? Any recommendations? Share your experience, thoughts and tracks in the comments, below.
The post 5 iOS Digital Audio Workstations For Producers On a Budget appeared first on MakeUseOf.

2013年4月8日星期一

英语学习也玩“阅后即焚”概念,英语口语精华让你每天都学一点点,过后即删除

英语学习也玩“阅后即焚”概念,英语口语精华让你每天都学一点点,过后即删除:


信息爆炸的年代,不缺乏各种学习资料和信息,倒是选择多了,往往让人把时间反而放在如何去选择上了,英语学习同样面临这样的问题。上海一个创业团队推出的“英语口语精华”则借鉴了snapchat的“阅后即焚”这个概念,让你每天只能学习当天的内容,过后这些内容即被删除,希望以这种方式解决面对大量内容时的选择烦恼。

这款应用界面很简单,我甚至觉得太过简陋,主要就是一个练习英语口语的功能(听、说、录音以及对比听),除此之外还有一个与新浪微博打通的社交功能,在里面能看到大家在学习过程中的讨论和问题。它每天的内容会有1个主题类别,根据主题的不同每天会有8-12句的口语。联合创始人张风说每天出现的分类内容都是根据用户的行为来设置,不是随机的。他们的用户群主要是白领用户,因此在周一,由于刚上班,他们会推送商务英语方面的内容,而周六就会推美剧电影等。

而这些推送的内容只会在应用里出现一次,学习过的内容在第二天即消失,这也是我觉得他们借鉴了“阅后即焚”这个概念的原因。

不过这可能会让人不解,因为对于很多人来说,学习英语显然需要不断的重复,这样“阅后即焚”似乎有违传统英语学习模式。对于这个问题,张风给出了他的理由:

  1. 用户其实都爱贪多,都喜欢要海量的内容。但事实上,不管是线上还是线下,用户每天接受的信息是有限的,比如学生背单词,往往翻几页就扔在那里了。与其那样,还不如每天有精炼的内容,让用户保持一种新鲜期待感。张风说目前他们的日活跃用户在1万左右,周留存为35%。
  2. 结合移动端用户的特点: 每天打开两三次,每次玩三四分钟,用户的这种行为不具备做海量内容的特质。因此我们精选我们微博(51万粉丝)用户喜欢的7大类的内容,每天一类,这样学起来也不累,效果还很好。

目前英语口语精华的团队主要依靠一款叫做微卡的产品来获得盈利,也就是我们之前用过的学习卡片,由一些教育机构出内容,他们负责制作以及维护,最后共同销售。张风说他们已经与新航道开始合作,并且与环球雅思的洽谈也已经开始。微卡上的内容由这些机构的老师编写,学生通过二维码扫描后是一个微课堂,能听到老师的扩展讲解。



张风认为,网络教育的时代还没有真正来临,这里边有很多原因,其中一个是老师对学生不了解,不像线下物理的课堂环境,交流起来很方便;通过走访很多老师他们发现,老师不愿意去线上教学的原因主要有: 对学生两眼一摸黑,不知道学生的背景,不知道学生的优势和劣势分别是什么,这样造成线上教学效率非常低。

因此,他们想借助移动端的教学做一些数据挖掘的工作,为以后老师能完全使用线上教学打基础。他们期望移动端能够区分出来,哪部分人群在哪个时间段最喜欢学哪部分的内容,甚至哪种人的付费转化率更高等。张风说即将发布的新版本将有一个"微课堂''功能,这个功能能对你的口语口音进行矫正,并且能听到老师的扩展讲解。

张风谈到了他们的理念:机器能解决的机器做,人能解决的做高端。但他认为这个高端不好做,尤其是移动端的教学。他们的想法是,把内容尽量的碎片化,然后抓住每个用户最刚性的需求。

张风毕业于University of Waterloo的MBET专业,创业之前曾担任Weblishpal.com 的商务拓展与投资关系总监。 和我们之前报道过的“爱卡微口语”一样,他们也是从微博草根账号转而做的App。

下载地址:iOS版Andriod版
除非注明,本站文章均为原创或编译,转载请注明: 文章来自 36氪

36氪官方iOS应用正式上线,支持『一键下载36氪报道的移动App』和『离线阅读』 立即下载!

英语学习也玩“阅后即焚”概念,英语口语精华让你每天都学一点点,过后即删除

英语学习也玩“阅后即焚”概念,英语口语精华让你每天都学一点点,过后即删除:


信息爆炸的年代,不缺乏各种学习资料和信息,倒是选择多了,往往让人把时间反而放在如何去选择上了,英语学习同样面临这样的问题。上海一个创业团队推出的“英语口语精华”则借鉴了snapchat的“阅后即焚”这个概念,让你每天只能学习当天的内容,过后这些内容即被删除,希望以这种方式解决面对大量内容时的选择烦恼。

这款应用界面很简单,我甚至觉得太过简陋,主要就是一个练习英语口语的功能(听、说、录音以及对比听),除此之外还有一个与新浪微博打通的社交功能,在里面能看到大家在学习过程中的讨论和问题。它每天的内容会有1个主题类别,根据主题的不同每天会有8-12句的口语。联合创始人张风说每天出现的分类内容都是根据用户的行为来设置,不是随机的。他们的用户群主要是白领用户,因此在周一,由于刚上班,他们会推送商务英语方面的内容,而周六就会推美剧电影等。

而这些推送的内容只会在应用里出现一次,学习过的内容在第二天即消失,这也是我觉得他们借鉴了“阅后即焚”这个概念的原因。

不过这可能会让人不解,因为对于很多人来说,学习英语显然需要不断的重复,这样“阅后即焚”似乎有违传统英语学习模式。对于这个问题,张风给出了他的理由:

  1. 用户其实都爱贪多,都喜欢要海量的内容。但事实上,不管是线上还是线下,用户每天接受的信息是有限的,比如学生背单词,往往翻几页就扔在那里了。与其那样,还不如每天有精炼的内容,让用户保持一种新鲜期待感。张风说目前他们的日活跃用户在1万左右,周留存为35%。
  2. 结合移动端用户的特点: 每天打开两三次,每次玩三四分钟,用户的这种行为不具备做海量内容的特质。因此我们精选我们微博(51万粉丝)用户喜欢的7大类的内容,每天一类,这样学起来也不累,效果还很好。

目前英语口语精华的团队主要依靠一款叫做微卡的产品来获得盈利,也就是我们之前用过的学习卡片,由一些教育机构出内容,他们负责制作以及维护,最后共同销售。张风说他们已经与新航道开始合作,并且与环球雅思的洽谈也已经开始。微卡上的内容由这些机构的老师编写,学生通过二维码扫描后是一个微课堂,能听到老师的扩展讲解。



张风认为,网络教育的时代还没有真正来临,这里边有很多原因,其中一个是老师对学生不了解,不像线下物理的课堂环境,交流起来很方便;通过走访很多老师他们发现,老师不愿意去线上教学的原因主要有: 对学生两眼一摸黑,不知道学生的背景,不知道学生的优势和劣势分别是什么,这样造成线上教学效率非常低。

因此,他们想借助移动端的教学做一些数据挖掘的工作,为以后老师能完全使用线上教学打基础。他们期望移动端能够区分出来,哪部分人群在哪个时间段最喜欢学哪部分的内容,甚至哪种人的付费转化率更高等。张风说即将发布的新版本将有一个"微课堂''功能,这个功能能对你的口语口音进行矫正,并且能听到老师的扩展讲解。

张风谈到了他们的理念:机器能解决的机器做,人能解决的做高端。但他认为这个高端不好做,尤其是移动端的教学。他们的想法是,把内容尽量的碎片化,然后抓住每个用户最刚性的需求。

张风毕业于University of Waterloo的MBET专业,创业之前曾担任Weblishpal.com 的商务拓展与投资关系总监。 和我们之前报道过的“爱卡微口语”一样,他们也是从微博草根账号转而做的App。

下载地址:iOS版Andriod版
除非注明,本站文章均为原创或编译,转载请注明: 文章来自 36氪

36氪官方iOS应用正式上线,支持『一键下载36氪报道的移动App』和『离线阅读』 立即下载!

Puppet Labs : Module of the Week: riverbed/stingray – Installs and Configures the Stingray Traffic Manager

Puppet Labs : Module of the Week: riverbed/stingray – Installs and Configures the Stingray Traffic Manager:
Purpose Install and configure the Stingray Traffic Manager
Module riverbed/stingray
Puppet Version 2.7+
Platforms Linux x86, x86_64 ‐ Kernel 2.6 (2.6.8+, 2.6.22+ for IPv6), glibc 2.3.6+
Riverbed Stingray Traffic Manager is a full performance software and virtual Layer 7 application delivery controller (ADC) that enables enterprises and cloud operators to create, manage, and deliver key services more quickly, more flexibly, and at a lower cost. Stingray Traffic Manager offers much more than just load balancing. It controls and optimizes end-user services by inspecting, transforming, prioritizing, and routing application traffic.
The Stingray Traffic Manager Puppet module will automatically download and install the Stingray Traffic Manager software onto a node.

Installing the module

Complexity Easy
Installation Time 5 minutes
Installing the Stingray Traffic Manager Puppet module is as simple as using the Puppet module tool, available in Puppet 2.7.14+ and Puppet Enterprise 2.5+:

# puppet module install riverbed/stingray
Notice: Preparing to install into /etc/puppet/modules ...
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ riverbed-stingray (v0.1.1)
  └── puppetlabs-stdlib (v3.2.0)

Resource Overview

This reference guide has descriptions of all the resources available.

Configuring the module

Complexity Easy
Installation Time 5 minutes
To install the Stingray Traffic Manager software, put the following in your node definition once you have read the Riverbed End User License Agreement:

class {'stingray':
    accept_license => 'accept'
}

There are some optional parameters as well. The full list of parameters is below:
  • ‘install_dir’: Directory to install the Stingray software to (default: /usr/local/stingray/).
  • ‘version’: The version of Stingray to install (default: 9.1).
  • ‘tmp_dir’: Temp directory to use during installation (default: /tmp).
  • ‘accept_license’: Use of this software is subject to the terms of the Riverbed End User License Agreement. Set this to ‘accept’ once you have read the license (default: reject).
  • The node definition can either be directly in the site manifest file (either /etc/puppet/manifests/site.pp or /etc/puppetlabs/puppet/manifests/site.pp) or in a separate file imported to the site manifest file.

    Example usage

    The below example configures the Stingray Traffic Manager to manage a simple website named Northern Lights. It creates a pool with two backend nodes, a virtual server, and a traffic IP group. It also creates a Transparent Session affinity based persistence class as well as an HTTP health monitor. Both are assigned to the pool.
    node 'stmtest' {
        class {'stingray':
            accept_license => 'accept'
        }
    
        stingray::new_cluster{'new_cluster':
        }
    
        stingray::pool{'Northern Lights':
            nodes       => ['192.168.22.121:80', '192.168.22.122:80'],
            algorithm   => 'Least Connections',
            persistence => 'NL Persistence',
            monitors    => 'NL Monitor'
        }
    
        stingray::virtual_server{'Northern Lights':
            pool    => 'Northern Lights',
            address => '!NL TIP',
            enabled => 'yes',
        }
    
        stingray::trafficipgroup{'NL TIP':
            ipaddresses => '10.32.147.85',
            machines    => 'stmtest',
            enabled     => yes,
        }
    
        stingray::monitor{'NL':
            type       => 'HTTP',
            path       => '/',
            body_regex => '.*'
        }
    }
    
    The above example can be expanded to decrypt SSL traffic by adding in the below code snippet, which creates an additional virtual server to take in and decrypt SSL traffic and imports the certificate that virtual server will use.
    stingray::virtual_server { 'Northern Lights SSL':
            address         => '!NL TIP',
            protocol        => 'HTTP',
            port            => 443,
            pool            => 'Northern Lights',
            enabled         => 'yes',
            ssl_decrypt     => 'yes',
            ssl_certificate => 'My SSL Certificate'
        }
    
        stingray::ssl_certificate{'My SSL Certificate':
            certificate_file => 'puppet:///modules/stingray/cert.public',
            private_key_file => 'puppet:///modules/stingray/cert.private'
        }
    

    Conclusion

    With the Stingray Puppet module you can easily provision and configure a Stingray Traffic Manager deployment in the cloud or in your private data center. The Stingray Puppet module will automatically:
    • Download the Stingray Traffic Manager software from the Riverbed Support site and install it on the target machine
    • Join existing clusters or create new ones
    • Create Virtual Servers, Traffic IP Groups, Pools, Monitors, and Persistence classes

    Learn More:


2013年3月18日星期一

Design Your Own Rocket

Design Your Own Rocket:
A lot of the software packages I've covered in recent articles have
been focused strictly on doing computations on your machine, separate
from the real world. So in this article, I explore how to use your computer to
design something you can build and use in the real world: your
own model rocket. more>>

2013年3月17日星期日

Automatic挑战高门槛汽车领域,软硬件配合欲使汽车更智能

Automatic挑战高门槛汽车领域,软硬件配合欲使汽车更智能:


“汽车算是我们买的最贵但却最愚笨的计算机系统。”这是Automatic发明者Thejo Kote的观点。

的确,虽然汽车配备车载系统已经有好几十年的历史,车载系统也的确越来越智能,但封闭性依然存在。而且由于天生门槛高,很少有开发人员敢尝试把自己的服务推广到汽车平台上。而近日,Automatic敢为人先,带着它的硬软件设备进军汽车领域。

Automatic的小硬件设备可以和车内数据接口OBD-II进行连接,然后读出汽车的燃料、里程数和发动机信息等仪表盘中的数据,最后再通过蓝牙将数据传送给Automatic在手机上的app。



利用这些信息,Automatic的app可以做什么呢?首先,它可以结合Google地图数据告诉车主最近的加油站在哪里,同时它再结合从仪表盘读出的数据告诉车主应该加多少油,需要多少油费。

此外,它还可帮车主养成良好驾车习惯。快速启动、急刹车、超速都是不良的行车方式,据数据统计会导致耗油量增加约33%。而Automatic则会在车主出现上述情况时发出柔和的提示音,并且会从其燃料评分中扣去分数,以此培养车主节约驾驶的习惯。

最后,Automatic还能访问车载系统中引擎警报的对应代码,查明并报告具体警报原因。这样一来就能防止车主一听到警报就不管三七二十一拿到汽车修理店去修。毕竟一些小问题车主还是能自己解决的。



无论如何,汽车行业的门槛的确很高,Automatic的服务是否能得到汽车行业的普遍认可还未可知,但Thejo Kote表示有足够的资源和信心做出第一次尝试。

Automatic的同名硬软件组合售价为69.95美元,预计在今年5月上市。
除非注明,本站文章均为原创或编译,转载请注明: 文章来自 36氪

36氪官方iOS应用正式上线,支持『一键下载36氪报道的移动App』和『离线阅读』 立即下载!

2013年2月25日星期一

Puppet Labs : Module of the Week: java_ks – Build Java Keystores From Existing Keys and Certificates

Puppet Labs : Module of the Week: java_ks – Build Java Keystores From Existing Keys and Certificates:
Purpose Build Java keystores form existing keys and certificates.
Module puppet/java_ks
Puppet Version 2.7+
Platforms OpenJDK 6, OpenJDK 7
This module attempts to ease and shorten the workflow associated with Java applications.
  • When building a Java keystore outside of the Java tool chain, you have to go through a process that spans a couple different tools and intermediary formats before you have a valid keystore. The java_ks module attempts to relieve this by giving you one interface: Puppet. Puppet handles the conversion and intermediary formats for you.
  • This module contains no manifests, only a composite namevar type and its supporting provider.
  • This module allows for keystores to be provisioned along with your Puppet deployed Java application servers.
The reason this module came to life was my frustration over the workflow needed to get a SSL protected ActiveMQ broker set up. When I wanted to integrate the Java keystore build workflow into the rest of ActiveMQ’s setup using a Puppet manifest… well, it got ugly. Converting a string of shell commands into Puppet exec resources eventually led me to a dark dark place. Personally I find that if you are running into a need for a lot of exec resources, especially when they are using the same command or operating on the same file, it is time to grab a copy of Puppet Types and Providers and get your hands dirty with some Ruby. You’ll usually notice a speed increase of your agent runs after a conversion to a type/provider to replace all the exec resources and always end up with easier to maintain manifests.


Installing the module

Complexity Easy
Installation Time 10 minutes
Installation is straightforward thanks to the Puppet Forge.
  • Make sure Java is installed on your Java application nodes by installing the “puppetlabs/java” module.


    root@pm01:~# puppet module install puppetlabs/java
    Notice: Preparing to install into /etc/puppet/modules ...
    Notice: Downloading from https://forge.puppetlabs.com ...
    Notice: Installing -- do not interrupt ...
    /etc/puppet/modules
    └─┬ puppetlabs-java (v0.2.0)
      └── puppetlabs-stdlib (v3.2.0)
  • Classify your Java application node (this is probably highly dependent on your organization).


    class { 'java': distribution => 'jre' }
  • Install the java_ks module from the Puppet Forge


    root@pm01:~# puppet module install puppetlabs/java_ks
    Notice: Preparing to install into /etc/puppet/modules ...
    Notice: Downloading from https://forge.puppetlabs.com ...
    Notice: Installing -- do not interrupt ...
    /etc/puppet/modules
    └── puppetlabs-java_ks (v0.0.6)
  • Make sure pluginsync is set to true on your puppet master and agents.

Resource Overview

Java_ks is special in that it uses an uncommonly used feature of Puppet’s resource api, the composite namevar. A composite namevar allows you to construct unique resource definitions from more than one resource parameter. This is employed to overcome the possible need to install the same certificate into multiple keystores from within the same catalog.
Example 1: Defining the resource with an arbitrary title.
java_ks { 'accounting_dev_broker':
  ensure       => latest,
  name         => 'accounting.dev.example.com',
  certificate  => '/etc/ssl/certs/accounting.dev.example.com.crt',
  private_key  => '/etc/ssl/private/accounting.dev.example.com.key',
  target       => '/etc/activemq/broker.jks',
  password     => 'not_so_secret',
}

Example 2: Defining a resource where title maps to name AND target parameters. You’ll notice that “:” is between the fqdn of the cert, which I am using as the name of this resource and the path to the broker.ks file. The “:” is the namevar separator I chose for this type.
java_ks { 'accounting.dev.example.com:/etc/activemq/broker.jks':
  ensure       => latest,
  certificate  => '/etc/ssl/certs/accounting.dev.example.com.crt',
  private_key  => '/etc/ssl/private/accounting.dev.example.com.key',
  password     => 'not_so_secret',
}

Example 3: Build two keystores, one for our activemq broker and another for a Java web application.
java_ks { 'accounting_dev_broker':
  ensure       => latest,
  name         => 'accounting.dev.example.com',
  certificate  => '/etc/ssl/certs/accounting.dev.example.com.crt',
  private_key  => '/etc/ssl/private/accounting.dev.example.com.key',
  target       => '/etc/activemq/broker.jks',
  password     => 'not_so_secret',
}

java_ks { 'accounting_dev_app':
  ensure       => latest,
  name         => 'accounting.dev.example.com',
  certificate  => '/etc/ssl/certs/accounting.dev.example.com.crt',
  private_key  => '/etc/ssl/private/accounting.dev.example.com.key',
  target       => '/etc/tomcat/application.jks',
  password     => 'not_so_secret',
}

Testing the module

Because this module is 100% Ruby, it ships with a set of rspec unit tests.
  • Running tests:
    • Install your operating system’s Ruby Development package.

    • gem install puppetlabs_spec_helper

    • cd /etc/puppet/modules/java_ks
    • rspec spec
  • If tests fail…

Configuring the module

Complexity N/A
Installation Time N/A
This module being just a type and provider means there is not further configuration beyond installation.

Example usage

I illustrated some example usage while we were reviewing the resources earlier. To see this type actually used in the wild, you can take a look at the puppetlabs-operations fork of the puppetlabs-activemq module, which unfortunately isn’t Puppet Forge ready.

Conclusion

This type reduced the number of resources I needed to configure my Java keystore from six to two, one to create the store and then a simple file resource to manage permissions. It also helped readability enormously. Anyone that has ever used an exec resource knows that reading inline bash can be eye straining.
  • Possible improvements
    • The unit tests currently stub the return on some commands and methods more frequently than they should. This reduces the validity of the tests when applied to a real world environment.
    • Passwords for private keys and keystores are currently set to the same thing. This means you need to either know the password to the private key and use it when you create the keystore or you need to strip the password from the private key.

Learn More