vlad_freebsd 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,3 +4,6 @@
4
4
 
5
5
  * Birthday!
6
6
 
7
+ === 1.0.1 / 2010-04-27
8
+
9
+ * Rdoc & README
data/README.txt CHANGED
@@ -1,30 +1,36 @@
1
1
  = vlad_freebsd
2
2
 
3
- * FIX (url)
3
+ * http://www.bitbucket.org/mml/vlad_freebsd
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
- FIX (describe your package)
7
+ A few simple functions to ease provisioning FreeBSD systems.
8
8
 
9
9
  == FEATURES/PROBLEMS:
10
10
 
11
- * FIX (list of features or problems)
11
+ * Create users
12
+ * Update ports tree
13
+ * Install ports with custom flags.
12
14
 
13
15
  == SYNOPSIS:
14
16
 
15
- FIX (code sample of usage)
17
+ Simply
18
+
19
+ require 'vlad/freebsd' in your rakefile to gain access to the functions.
16
20
 
17
21
  == REQUIREMENTS:
18
22
 
19
- * FIX (list of requirements)
23
+ * portupgrade package
24
+ * sudo
25
+ * a login with sudo access on the FreeBSD system
20
26
 
21
27
  == INSTALL:
22
28
 
23
- * FIX (sudo gem install, anything else)
29
+ * gem install vlad_freebsd
24
30
 
25
31
  == DEVELOPERS:
26
32
 
27
- After checking out the source, run:
33
+ See rdoc for more information on available functions
28
34
 
29
35
  $ rake newb
30
36
 
@@ -35,7 +41,7 @@ and generate the RDoc.
35
41
 
36
42
  (The MIT License)
37
43
 
38
- Copyright (c) 2010 FIX
44
+ Copyright (c) 2010 McClain Looney
39
45
 
40
46
  Permission is hereby granted, free of charge, to any person obtaining
41
47
  a copy of this software and associated documentation files (the
@@ -1,15 +1,37 @@
1
+ #This file defines a number of methods for manipulating a FreeBSD system. Simply require this file into your vlad rakefile.
2
+ #
3
+ #Some examples:
4
+ #
5
+ # remote_task :on_app, :roles => :app do
6
+ # pass_ruby = "/usr/local/bin/ruby"
7
+ # put_template 'etc/nginx.conf.erb', '/usr/local/etc/nginx/nginx.conf', binding
8
+ # install_port "devel/ruby-gems"
9
+ # install_port "www/nginx" do |cmdar|
10
+ # cmdar.last << "-M 'WITH_HTTP_UPLOAD_PROGRESS=1 WITH_HTTP_UPLOAD_MODULE=1 WITH_PASSENGER_MODULE=1'"
11
+ # end
12
+ # install_port "databases/postgresql84-client" do |cmdar|
13
+ # cmdar.last << "-M 'WITHOUT_NLS=1 WITHOUT_XML=1 WITHOUT_LDAP=1 WITH_TZDATA=1 WITH_INTDATE=1'"
14
+ # end
15
+ # end
16
+
17
+ # Uploads file as a public key
18
+ # [user] username
19
+ # [keyfile] keyfile to upload (.ssh/id_dsa.pub is a popular choice)
1
20
  def upload_pubkey(user, keyfile)
2
21
  run sudo "mkdir -pvm 755 ~#{user}/.ssh"
3
- put_template keyfile, '.ssh/authorized_keys', binding
4
- run "chown #{user}:#{user} ~#{user}/.authorized_keys"
22
+ put_template keyfile, '~/#{user}/.ssh/authorized_keys', binding
23
+ run "chown #{user}:#{user} ~#{user}/.ssh/.authorized_keys"
5
24
  end
6
25
 
26
+ # Updates ports, uses portsnap update.
7
27
  def update_ports
8
28
  sudo "portsnap update"
9
29
  end
10
30
 
11
- #this is a driver for the pw command. pass arguments in as a hash of k-v. simple flags map to nil.
12
- #will only add a user if it doesn't exist
31
+ # This is a driver for the pw command. pass arguments in as a hash of k-v. simple flags map to nil.
32
+ # will only add a user if it doesn't exist
33
+ # You can pass arbitrary arguments to pw using the args hash in the form:
34
+ # {'-flag'=>'value'}. See the pw man page for extensive documentation.
13
35
  def adduser(username, args={})
14
36
  args = { '-s' => '/usr/local/bin/bash', "-c"=>"'service user'", "-n"=>username, "-m"=>nil, '-w'=>'no'}.merge(args)
15
37
  slug = "if [ $(id -u sophia > /dev/null) ];then \n"
@@ -22,7 +44,9 @@ def adduser(username, args={})
22
44
  sudo slug
23
45
  end
24
46
 
25
-
47
+ # Installs a port. Uses the portinstall command in --batch mode. Note that if a block is passed, an array is yielded
48
+ # allowing the caller to manipulate the actually executed command; handy for setting make args and the like. See
49
+ # portinstall manpage for extensive documentation.
26
50
  def install_port(port)
27
51
  commands = []
28
52
  commands << "portinstall --batch #{port} "
@@ -32,6 +56,12 @@ def install_port(port)
32
56
  commands.each {|x| sudo x}
33
57
  end
34
58
 
59
+ # Upload a file and copy it into a final location. Uses sudo to copy after uploading. Templating
60
+ # is done via ERB, the user passes in the desired binding.
61
+ #
62
+ # [tmpl] template file
63
+ # [dest] destination path
64
+ # [b] binding
35
65
  def put_template(tmpl, dest, b)
36
66
  tmpl = File.read(tmpl)
37
67
  buf = ERB.new(tmpl).result(b)
@@ -1,5 +1,5 @@
1
1
  puts "executing #{__FILE__}"
2
2
  require 'vlad/freebsd'
3
3
  class Vlad::Freebsd
4
- VERSION = '1.0.0'
4
+ VERSION = '1.0.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vlad_freebsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - McClain Looney
@@ -42,7 +42,7 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: 2.5.0
44
44
  version:
45
- description: FIX (describe your package)
45
+ description: A few simple functions to ease provisioning FreeBSD systems.
46
46
  email:
47
47
  - m@loonsoft.com
48
48
  executables: []
@@ -85,6 +85,6 @@ rubyforge_project: vlad_freebsd
85
85
  rubygems_version: 1.3.5
86
86
  signing_key:
87
87
  specification_version: 3
88
- summary: FIX (describe your package)
88
+ summary: A few simple functions to ease provisioning FreeBSD systems.
89
89
  test_files: []
90
90