ansible-role 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +16 -0
- data/.gitignore +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +19 -0
- data/LICENSE +22 -0
- data/README.md +36 -0
- data/Rakefile +1 -0
- data/ansible-role.gemspec +26 -0
- data/bin/ansible-role +5 -0
- data/lib/ansible/role/cli.rb +146 -0
- data/lib/ansible/role/version.rb +5 -0
- data/lib/ansible/role.rb +2 -0
- data/templates/ansible/role/docgen/README.md.tt +72 -0
- data/templates/ansible/role/init/.editorconfig +16 -0
- data/templates/ansible/role/init/.gitignore +5 -0
- data/templates/ansible/role/init/.travis.yml +10 -0
- data/templates/ansible/role/init/LICENSE.tt +22 -0
- data/templates/ansible/role/init/Vagrantfile +23 -0
- data/templates/ansible/role/init/defaults/main.yml.tt +10 -0
- data/templates/ansible/role/init/handlers/main.yml.tt +7 -0
- data/templates/ansible/role/init/meta/main.yml.tt +111 -0
- data/templates/ansible/role/init/meta/readme.yml.tt +34 -0
- data/templates/ansible/role/init/tasks/config.yml.tt +12 -0
- data/templates/ansible/role/init/tasks/install.yml.tt +4 -0
- data/templates/ansible/role/init/tasks/main.yml.tt +30 -0
- data/templates/ansible/role/init/tasks/manage.yml.tt +2 -0
- data/templates/ansible/role/init/tasks/service.yml.tt +7 -0
- data/templates/ansible/role/init/templates/etc/%name%.conf.j2 +1 -0
- data/templates/ansible/role/init/tests/main.yml.tt +8 -0
- data/templates/ansible/role/init/tests/run.sh.tt +13 -0
- data/templates/ansible/role/init/vars/main.yml +1 -0
- metadata +132 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 09ecfd7f63ab640cd8a7e7d0ca75f26f85d7e201
|
4
|
+
data.tar.gz: 041bf0ab35695d73b57f896685647581743d112a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 88b50f036709043190b75edac9bbf92560131f2b6149308927140241ab709846bf6350a4df6354fee607851de497ffd02d545d8aaf2939a10f41e2d6dfdb4184
|
7
|
+
data.tar.gz: b5fb96b6f5fd8b62372f109c885d20ff8da9293262d049a7a2f845eb2db78ed82ad6a5a5e434c12d1d65eae44b302b91921a205fce3bc6a8357a5e5281b6fd2b
|
data/.editorconfig
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# EditorConfig helps developers define and maintain consistent
|
2
|
+
# coding styles between different editors and IDEs
|
3
|
+
# editorconfig.org
|
4
|
+
|
5
|
+
root = true
|
6
|
+
|
7
|
+
[*]
|
8
|
+
# Change these settings to your own preference
|
9
|
+
indent_size = 2
|
10
|
+
indent_style = space
|
11
|
+
|
12
|
+
# We recommend you to keep these unchanged
|
13
|
+
charset = utf-8
|
14
|
+
end_of_line = lf
|
15
|
+
insert_final_newline = true
|
16
|
+
trim_trailing_whitespace = true
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) We Are Interactive
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Ansible Role
|
2
|
+
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/ansible-role.png)](http://badge.fury.io/rb/ansible-role)
|
4
|
+
|
5
|
+
> Gem with some useful Ansible role command line tools.
|
6
|
+
>
|
7
|
+
> * Initialize new ansible roles
|
8
|
+
> * Re-Generate README.md
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
```
|
13
|
+
$ gem install ansible-role
|
14
|
+
```
|
15
|
+
|
16
|
+
## Usage
|
17
|
+
|
18
|
+
```
|
19
|
+
$ ansible-role
|
20
|
+
Commands:
|
21
|
+
ansible-role docgen # Generate README file
|
22
|
+
ansible-role help [COMMAND] # Describe available commands or one specific command
|
23
|
+
ansible-role init # Initialize new role
|
24
|
+
```
|
25
|
+
|
26
|
+
## Contributing
|
27
|
+
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality.
|
28
|
+
|
29
|
+
1. Fork it
|
30
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
31
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
32
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
33
|
+
5. Create new Pull Request
|
34
|
+
|
35
|
+
## License
|
36
|
+
Copyright (c) We Are Interactive under the MIT license.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ansible/role/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "ansible-role"
|
8
|
+
spec.version = Ansible::Role::VERSION
|
9
|
+
spec.authors = ["franklin"]
|
10
|
+
spec.email = ["franklin@weareinteractive.com"]
|
11
|
+
spec.description = %q{Gem with some useful Ansible role command line tools.}
|
12
|
+
spec.summary = %q{Command line snippets.}
|
13
|
+
spec.homepage = "https://github.com/franklinkim/gem-ansible-role"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_runtime_dependency "git"
|
22
|
+
spec.add_runtime_dependency "thor"
|
23
|
+
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
end
|
data/bin/ansible-role
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
require "erb"
|
2
|
+
require "git"
|
3
|
+
require "thor"
|
4
|
+
require "yaml"
|
5
|
+
require "ostruct"
|
6
|
+
|
7
|
+
module Ansible
|
8
|
+
module Role
|
9
|
+
class Cli < Thor
|
10
|
+
include Thor::Actions
|
11
|
+
source_root ::File.expand_path("#{File.dirname(__FILE__)}/../../../")
|
12
|
+
|
13
|
+
# -----------------------------------------------------------------------
|
14
|
+
# Tasks
|
15
|
+
# -----------------------------------------------------------------------
|
16
|
+
|
17
|
+
desc "init", "Initialize new role"
|
18
|
+
def init()
|
19
|
+
|
20
|
+
@data = {}
|
21
|
+
|
22
|
+
# check empty directory
|
23
|
+
abort "Role directory (#{Dir.getwd}) is not empty!" unless Dir["#{Dir.getwd}/*"].empty?
|
24
|
+
|
25
|
+
# initializing git repo
|
26
|
+
g = Git.init(Dir.getwd)
|
27
|
+
|
28
|
+
say "To generate your role, please give me some info about:\n\n", :yellow
|
29
|
+
|
30
|
+
say "• Author", :yellow
|
31
|
+
@data[:author] = prompt " Name", "#{g.config('user.name')} <#{g.config('user.email')}>", true
|
32
|
+
@data[:company] = prompt " Company", nil, true
|
33
|
+
puts ""
|
34
|
+
|
35
|
+
say "• Role", :yellow
|
36
|
+
@data[:name] = prompt " Name", "my-role", true
|
37
|
+
@data[:description] = prompt " Description", "Best role ever!", true
|
38
|
+
@data[:category] = prompt " Category", "development", true
|
39
|
+
@data[:min_ansible_version] = prompt " Min ansible version", "1.9", true
|
40
|
+
@data[:var_name] = @data[:name].sub("-", "_")
|
41
|
+
puts ""
|
42
|
+
|
43
|
+
say "• GitHub", :yellow
|
44
|
+
@data[:github_user] = prompt " User", g.config('user.name'), true
|
45
|
+
@data[:github_name] = prompt " Repository", File.basename(Dir.getwd)
|
46
|
+
@data[:github_path] = "#{@data[:github_user]}/#{@data[:github_name]}"
|
47
|
+
puts ""
|
48
|
+
|
49
|
+
say "• Ansible Galaxy", :yellow
|
50
|
+
@data[:galaxy_user] = prompt " User", ENV['username']
|
51
|
+
puts ""
|
52
|
+
|
53
|
+
@data[:role_name] = "#{@data[:galaxy_user]}.#{@data[:name]}"
|
54
|
+
|
55
|
+
# render templates
|
56
|
+
directory "templates/ansible/role/init", Dir.getwd
|
57
|
+
|
58
|
+
# generate docs
|
59
|
+
docgen
|
60
|
+
|
61
|
+
# add and commit files
|
62
|
+
g.add()
|
63
|
+
g.commit('initial commit')
|
64
|
+
end
|
65
|
+
|
66
|
+
desc "docgen", "Generate README file"
|
67
|
+
def docgen
|
68
|
+
@data = {}
|
69
|
+
|
70
|
+
@data[:defaults] = get_yaml("defaults")
|
71
|
+
@data[:meta] = get_yaml("meta")
|
72
|
+
@data[:tests] = get_yaml("tests")
|
73
|
+
@data[:vars] = get_yaml("vars")
|
74
|
+
|
75
|
+
@data[:files] = {}
|
76
|
+
@data[:files][:defaults] = get_yaml_files("defaults")
|
77
|
+
@data[:files][:tests] = get_yaml_files("tests")
|
78
|
+
@data[:files][:vars] = get_yaml_files("vars")
|
79
|
+
|
80
|
+
# render template
|
81
|
+
template "templates/ansible/role/docgen/README.md.tt", "README.md"
|
82
|
+
end
|
83
|
+
|
84
|
+
no_tasks do
|
85
|
+
|
86
|
+
# ---------------------------------------------------------------------
|
87
|
+
# Public methods
|
88
|
+
# ---------------------------------------------------------------------
|
89
|
+
|
90
|
+
def dot()
|
91
|
+
"."
|
92
|
+
end
|
93
|
+
|
94
|
+
def name
|
95
|
+
@data[:name]
|
96
|
+
end
|
97
|
+
|
98
|
+
# ---------------------------------------------------------------------
|
99
|
+
# Private methods
|
100
|
+
# ---------------------------------------------------------------------
|
101
|
+
|
102
|
+
private
|
103
|
+
|
104
|
+
def abort(msg)
|
105
|
+
say msg, :red
|
106
|
+
exit(1)
|
107
|
+
end
|
108
|
+
|
109
|
+
def prompt(msg, default = nil, required = false)
|
110
|
+
loop do
|
111
|
+
msg += " [#{default}]" if default != nil
|
112
|
+
print "#{msg}: "
|
113
|
+
ret = $stdin.gets.chomp
|
114
|
+
if ret != ""
|
115
|
+
return ret
|
116
|
+
elsif ret == "" && default != nil
|
117
|
+
return default
|
118
|
+
elsif ret == "" && !required
|
119
|
+
return ret
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def get_yaml(path)
|
125
|
+
data = {}
|
126
|
+
Dir["#{Dir.getwd}/#{path}/*.yml"].each do |file_name|
|
127
|
+
basename = File.basename(file_name, '.yml')
|
128
|
+
data.store(:"#{basename}", YAML::load_file(file_name))
|
129
|
+
end
|
130
|
+
data
|
131
|
+
end
|
132
|
+
|
133
|
+
def get_yaml_files(path)
|
134
|
+
data = {}
|
135
|
+
Dir["#{Dir.getwd}/#{path}/*.yml"].each do |file_name|
|
136
|
+
basename = File.basename(file_name, '.yml')
|
137
|
+
file = File.open(file_name, "rb")
|
138
|
+
data.store(:"#{basename}", file.read)
|
139
|
+
end
|
140
|
+
data
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
data/lib/ansible/role.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Ansible <%= @data[:meta][:readme]["galaxy_name"] %> role
|
2
|
+
|
3
|
+
<%= @data[:meta][:readme]["badges"] %>
|
4
|
+
> `<%= @data[:meta][:readme]["galaxy_name"] %>` is an [ansible](http://www.ansible.com) role which:
|
5
|
+
>
|
6
|
+
<%= @data[:meta][:readme]["description"] %>
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Using `ansible-galaxy`:
|
10
|
+
|
11
|
+
```
|
12
|
+
$ ansible-galaxy install <%= @data[:meta][:readme]["galaxy_name"] %>
|
13
|
+
```
|
14
|
+
|
15
|
+
Using `requirements.yml`:
|
16
|
+
|
17
|
+
```
|
18
|
+
- src: <%= @data[:meta][:readme]["galaxy_name"] %>
|
19
|
+
```
|
20
|
+
|
21
|
+
Using `git`:
|
22
|
+
|
23
|
+
```
|
24
|
+
$ git clone https://github.com/<%= @data[:meta][:readme]["github_user"] %>/<%= @data[:meta][:readme]["github_name"] %> <%= @data[:meta][:readme]["galaxy_name"] %>
|
25
|
+
```
|
26
|
+
|
27
|
+
## Dependencies
|
28
|
+
|
29
|
+
* Ansible >= <%= @data[:meta][:main]["galaxy_info"]["min_ansible_version"] %>
|
30
|
+
<% @data[:meta][:main]["dependencies"].each do |dep| %><%= "* #{dep}\n" %><% end %>
|
31
|
+
## Variables
|
32
|
+
|
33
|
+
Here is a list of all the default variables for this role, which are also available in `defaults/main.yml`.
|
34
|
+
|
35
|
+
```
|
36
|
+
<%= @data[:files][:defaults][:main] %>
|
37
|
+
```
|
38
|
+
|
39
|
+
## Usage
|
40
|
+
|
41
|
+
This is an example playbook:
|
42
|
+
|
43
|
+
```
|
44
|
+
<%= @data[:files][:tests][:main] %>
|
45
|
+
```
|
46
|
+
|
47
|
+
## Testing
|
48
|
+
|
49
|
+
```
|
50
|
+
$ git clone https://github.com/<%= @data[:meta][:readme]["github_user"] %>/<%= @data[:meta][:readme]["github_name"] %>.git
|
51
|
+
$ cd <%= @data[:meta][:readme]["github_name"] %>
|
52
|
+
$ vagrant up
|
53
|
+
```
|
54
|
+
|
55
|
+
## Contributing
|
56
|
+
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests and examples for any new or changed functionality.
|
57
|
+
|
58
|
+
1. Fork it
|
59
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
60
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
61
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
62
|
+
5. Create new Pull Request
|
63
|
+
|
64
|
+
To update the `README.md` file please install and run `ansible-role`:
|
65
|
+
|
66
|
+
```
|
67
|
+
$ gem install ansible-role
|
68
|
+
$ ansible-role docgen
|
69
|
+
```
|
70
|
+
|
71
|
+
## License
|
72
|
+
Copyright (c) <%= @data[:meta][:main]["galaxy_info"]["company"] %> under the MIT license.
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# EditorConfig helps developers define and maintain consistent
|
2
|
+
# coding styles between different editors and IDEs
|
3
|
+
# editorconfig.org
|
4
|
+
|
5
|
+
root = true
|
6
|
+
|
7
|
+
[*]
|
8
|
+
# Change these settings to your own preference
|
9
|
+
indent_size = 2
|
10
|
+
indent_style = space
|
11
|
+
|
12
|
+
# We recommend you to keep these unchanged
|
13
|
+
charset = utf-8
|
14
|
+
end_of_line = lf
|
15
|
+
insert_final_newline = true
|
16
|
+
trim_trailing_whitespace = true
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) <%= @data[:company] %>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant.configure("2") do |config|
|
5
|
+
config.vbguest.no_remote = true
|
6
|
+
config.vbguest.auto_update = false
|
7
|
+
|
8
|
+
config.vm.define 'trusty' do |instance|
|
9
|
+
instance.vm.box = 'ubuntu/trusty64'
|
10
|
+
end
|
11
|
+
|
12
|
+
config.vm.define 'precise' do |instance|
|
13
|
+
instance.vm.box = 'ubuntu/precise64'
|
14
|
+
end
|
15
|
+
|
16
|
+
# View the documentation for the provider you're using for more
|
17
|
+
# information on available options.
|
18
|
+
config.vm.provision "ansible" do |ansible|
|
19
|
+
ansible.playbook = "tests/main.yml"
|
20
|
+
ansible.verbose = 'vv'
|
21
|
+
ansible.sudo = true
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
# package name (version)
|
4
|
+
<%= @data[:var_name] %>_package: <%= @data[:name] %>
|
5
|
+
# service name
|
6
|
+
<%= @data[:var_name] %>_service_name: <%= @data[:name] %>
|
7
|
+
# start on boot
|
8
|
+
<%= @data[:var_name] %>_service_enabled: yes
|
9
|
+
# current state: started, stopped
|
10
|
+
<%= @data[:var_name] %>_service_state: started
|
@@ -0,0 +1,111 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
galaxy_info:
|
4
|
+
author: <%= @data[:author] %>
|
5
|
+
company: <%= @data[:company] %>
|
6
|
+
description: <%= @data[:description] %>
|
7
|
+
min_ansible_version: <%= @data[:min_ansible_version] %>
|
8
|
+
license: MIT
|
9
|
+
#
|
10
|
+
# Below are all platforms currently available. Just uncomment
|
11
|
+
# the ones that apply to your role. If you don't see your
|
12
|
+
# platform on this list, let us know and we'll get it added!
|
13
|
+
#
|
14
|
+
platforms:
|
15
|
+
# - name: EL
|
16
|
+
# versions:
|
17
|
+
# - all
|
18
|
+
# - 5
|
19
|
+
# - 6
|
20
|
+
# - name: GenericUNIX
|
21
|
+
# versions:
|
22
|
+
# - all
|
23
|
+
# - any
|
24
|
+
# - name: Fedora
|
25
|
+
# versions:
|
26
|
+
# - all
|
27
|
+
# - 16
|
28
|
+
# - 17
|
29
|
+
# - 18
|
30
|
+
# - 19
|
31
|
+
# - 20
|
32
|
+
# - name: opensuse
|
33
|
+
# versions:
|
34
|
+
# - all
|
35
|
+
# - 12.1
|
36
|
+
# - 12.2
|
37
|
+
# - 12.3
|
38
|
+
# - 13.1
|
39
|
+
# - 13.2
|
40
|
+
# - name: GenericBSD
|
41
|
+
# versions:
|
42
|
+
# - all
|
43
|
+
# - any
|
44
|
+
# - name: FreeBSD
|
45
|
+
# versions:
|
46
|
+
# - all
|
47
|
+
# - 8.0
|
48
|
+
# - 8.1
|
49
|
+
# - 8.2
|
50
|
+
# - 8.3
|
51
|
+
# - 8.4
|
52
|
+
# - 9.0
|
53
|
+
# - 9.1
|
54
|
+
# - 9.1
|
55
|
+
# - 9.2
|
56
|
+
# - name: Ubuntu
|
57
|
+
# versions:
|
58
|
+
# - all
|
59
|
+
# - lucid
|
60
|
+
# - maverick
|
61
|
+
# - natty
|
62
|
+
# - oneiric
|
63
|
+
# - precise
|
64
|
+
# - quantal
|
65
|
+
# - raring
|
66
|
+
# - saucy
|
67
|
+
# - trusty
|
68
|
+
# - name: SLES
|
69
|
+
# versions:
|
70
|
+
# - all
|
71
|
+
# - 10SP3
|
72
|
+
# - 10SP4
|
73
|
+
# - 11
|
74
|
+
# - 11SP1
|
75
|
+
# - 11SP2
|
76
|
+
# - 11SP3
|
77
|
+
# - name: GenericLinux
|
78
|
+
# versions:
|
79
|
+
# - all
|
80
|
+
# - any
|
81
|
+
# - name: Debian
|
82
|
+
# versions:
|
83
|
+
# - all
|
84
|
+
# - etch
|
85
|
+
# - lenny
|
86
|
+
# - squeeze
|
87
|
+
# - wheezy
|
88
|
+
#
|
89
|
+
# Below are all categories currently available. Just as with
|
90
|
+
# the platforms above, uncomment those that apply to your role.
|
91
|
+
#
|
92
|
+
categories:
|
93
|
+
# - cloud
|
94
|
+
# - cloud:ec2
|
95
|
+
# - cloud:gce
|
96
|
+
# - cloud:rax
|
97
|
+
# - database
|
98
|
+
# - database:nosql
|
99
|
+
# - database:sql
|
100
|
+
# - development
|
101
|
+
# - monitoring
|
102
|
+
# - networking
|
103
|
+
# - packaging
|
104
|
+
# - system
|
105
|
+
# - web
|
106
|
+
dependencies: []
|
107
|
+
# List your role dependencies here, one per line. Only
|
108
|
+
# dependencies available via galaxy should be listed here.
|
109
|
+
# Be sure to remove the '[]' above if you add dependencies
|
110
|
+
# to this list.
|
111
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
galaxy_name: <%= @data[:role_name] %>
|
4
|
+
github_user: <%= @data[:github_user] %>
|
5
|
+
github_name: <%= @data[:github_name] %>
|
6
|
+
badges: |
|
7
|
+
[![Build Status](https://img.shields.io/travis/<%= @data[:github_path] %>.svg)](https://travis-ci.org/<%= @data[:github_path] %>)
|
8
|
+
[![Galaxy](http://img.shields.io/badge/galaxy-<%= @data[:role_name] %>-blue.svg)](https://galaxy.ansible.com/list#/roles/<%= @data[:galaxy_id] %>)
|
9
|
+
[![GitHub Tags](https://img.shields.io/github/tag/<%= @data[:github_path] %>.svg)](https://github.com/<%= @data[:github_path] %>)
|
10
|
+
[![GitHub Stars](https://img.shields.io/github/stars/<%= @data[:github_path] %>.svg)](https://github.com/<%= @data[:github_path] %>)
|
11
|
+
description: |
|
12
|
+
> * installs <%= @data[:name] %>
|
13
|
+
> * configures <%= @data[:name] %>
|
14
|
+
> * manages <%= @data[:name] %>
|
15
|
+
> * configures service
|
16
|
+
installation: |
|
17
|
+
Using `ansible-galaxy`:
|
18
|
+
|
19
|
+
```
|
20
|
+
$ ansible-galaxy install <%= @data[:role_name] %>
|
21
|
+
```
|
22
|
+
|
23
|
+
Using `requirements.yml`:
|
24
|
+
|
25
|
+
```
|
26
|
+
- src: <%= @data[:role_name] %>
|
27
|
+
```
|
28
|
+
|
29
|
+
Using `git`:
|
30
|
+
|
31
|
+
```
|
32
|
+
$ git clone https://github.com/<%= @data[:github_path] %> <%= @data[:role_name] %>
|
33
|
+
```
|
34
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
- include: install.yml
|
4
|
+
tags:
|
5
|
+
- <%= @data[:category] %>
|
6
|
+
- install
|
7
|
+
- <%= @data[:name] %>
|
8
|
+
- <%= @data[:name] %>-install
|
9
|
+
|
10
|
+
- include: config.yml
|
11
|
+
tags:
|
12
|
+
- <%= @data[:category] %>
|
13
|
+
- config
|
14
|
+
- <%= @data[:name] %>
|
15
|
+
- <%= @data[:name] %>-config
|
16
|
+
|
17
|
+
- include: manage.yml
|
18
|
+
tags:
|
19
|
+
- <%= @data[:category] %>
|
20
|
+
- manage
|
21
|
+
- <%= @data[:name] %>
|
22
|
+
- <%= @data[:name] %>-manage
|
23
|
+
|
24
|
+
- include: service.yml
|
25
|
+
tags:
|
26
|
+
- <%= @data[:category] %>
|
27
|
+
- service
|
28
|
+
- <%= @data[:name] %>
|
29
|
+
- <%= @data[:name] %>-service
|
30
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
# {{ ansible_managed }}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# define variables
|
4
|
+
ROLE_NAME=<%= @data[:role_name] %>
|
5
|
+
|
6
|
+
# install dependencies
|
7
|
+
# ansible-galaxy install galaxyuser.role_name
|
8
|
+
|
9
|
+
# create role symnlink
|
10
|
+
ln -s $(pwd) /usr/share/ansible/roles/$ROLE_NAME
|
11
|
+
|
12
|
+
# run test playbooks
|
13
|
+
ansible-playbook -vvvv -i 'localhost,' -c local $(pwd)/tests/main.yml
|
@@ -0,0 +1 @@
|
|
1
|
+
---
|
metadata
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ansible-role
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- franklin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: git
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Gem with some useful Ansible role command line tools.
|
70
|
+
email:
|
71
|
+
- franklin@weareinteractive.com
|
72
|
+
executables:
|
73
|
+
- ansible-role
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".editorconfig"
|
78
|
+
- ".gitignore"
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- LICENSE
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- ansible-role.gemspec
|
85
|
+
- bin/ansible-role
|
86
|
+
- lib/ansible/role.rb
|
87
|
+
- lib/ansible/role/cli.rb
|
88
|
+
- lib/ansible/role/version.rb
|
89
|
+
- templates/ansible/role/docgen/README.md.tt
|
90
|
+
- templates/ansible/role/init/.editorconfig
|
91
|
+
- templates/ansible/role/init/.gitignore
|
92
|
+
- templates/ansible/role/init/.travis.yml
|
93
|
+
- templates/ansible/role/init/LICENSE.tt
|
94
|
+
- templates/ansible/role/init/Vagrantfile
|
95
|
+
- templates/ansible/role/init/defaults/main.yml.tt
|
96
|
+
- templates/ansible/role/init/handlers/main.yml.tt
|
97
|
+
- templates/ansible/role/init/meta/main.yml.tt
|
98
|
+
- templates/ansible/role/init/meta/readme.yml.tt
|
99
|
+
- templates/ansible/role/init/tasks/config.yml.tt
|
100
|
+
- templates/ansible/role/init/tasks/install.yml.tt
|
101
|
+
- templates/ansible/role/init/tasks/main.yml.tt
|
102
|
+
- templates/ansible/role/init/tasks/manage.yml.tt
|
103
|
+
- templates/ansible/role/init/tasks/service.yml.tt
|
104
|
+
- templates/ansible/role/init/templates/etc/%name%.conf.j2
|
105
|
+
- templates/ansible/role/init/tests/main.yml.tt
|
106
|
+
- templates/ansible/role/init/tests/run.sh.tt
|
107
|
+
- templates/ansible/role/init/vars/main.yml
|
108
|
+
homepage: https://github.com/franklinkim/gem-ansible-role
|
109
|
+
licenses:
|
110
|
+
- MIT
|
111
|
+
metadata: {}
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options: []
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
requirements: []
|
127
|
+
rubyforge_project:
|
128
|
+
rubygems_version: 2.4.8
|
129
|
+
signing_key:
|
130
|
+
specification_version: 4
|
131
|
+
summary: Command line snippets.
|
132
|
+
test_files: []
|