rig 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/conf/accounts/default.yml +39 -13
- data/conf/userdata/chef/userdata.sh.erb +63 -0
- data/conf/userdata/chef/userdata.yml +19 -0
- data/conf/userdata/chef/validation.pem +27 -0
- data/conf/userdata/default/userdata.sh.erb +32 -0
- data/conf/userdata/default/userdata.yml +14 -0
- data/lib/rig/command/abstract.rb +2 -0
- data/lib/rig/command/balancer/list.rb +4 -0
- data/lib/rig/command/environment/list.rb +3 -2
- data/lib/rig/command/main.rb +23 -3
- data/lib/rig/model/balancer.rb +5 -4
- data/lib/rig/model/environment.rb +2 -1
- data/lib/rig/model/userdata.rb +16 -97
- data/lib/rig/version.rb +1 -1
- metadata +7 -2
    
        data/conf/accounts/default.yml
    CHANGED
    
    | @@ -1,47 +1,73 @@ | |
| 1 1 | 
             
            # The region for this account.
         | 
| 2 2 | 
             
            # Each account can have a different region, so you can
         | 
| 3 3 | 
             
            # manage deployments in different regions easily.
         | 
| 4 | 
            -
            region: us-east-1
         | 
| 4 | 
            +
            :region: us-east-1
         | 
| 5 5 |  | 
| 6 6 | 
             
            # The DNS zone to manage.
         | 
| 7 7 | 
             
            # Generally this will be different for each account,
         | 
| 8 8 | 
             
            # but it is possible to have all of your accounts
         | 
| 9 9 | 
             
            # managed under a single zone... IF you are using
         | 
| 10 10 | 
             
            # the same DNS provider for all of your accounts.
         | 
| 11 | 
            -
            dns_zone: blah.com
         | 
| 11 | 
            +
            :dns_zone: blah.com
         | 
| 12 12 |  | 
| 13 13 | 
             
            # this is the key that you will use to SSH to the server
         | 
| 14 | 
            -
            keypair: keyname
         | 
| 14 | 
            +
            :keypair: keyname
         | 
| 15 15 |  | 
| 16 16 | 
             
            # security groups to use when creating instances
         | 
| 17 17 | 
             
            # groups configuration precedence:
         | 
| 18 18 | 
             
            #   template instances -> template -> account -> config
         | 
| 19 | 
            -
            # groups:
         | 
| 19 | 
            +
            # :groups:
         | 
| 20 20 | 
             
            #   - default
         | 
| 21 21 |  | 
| 22 | 
            +
            # Userdata package to use
         | 
| 23 | 
            +
            #
         | 
| 24 | 
            +
            # Userdata packages allow you to further customize the way
         | 
| 25 | 
            +
            # the servers are configured.
         | 
| 26 | 
            +
            #
         | 
| 27 | 
            +
            # You can find these packages in your rig directory (~/.rig by default)
         | 
| 28 | 
            +
            #   ~/.rig/userdata/default
         | 
| 29 | 
            +
            #
         | 
| 30 | 
            +
            # The following are provided:
         | 
| 31 | 
            +
            #   "default" is a vanilla install
         | 
| 32 | 
            +
            #   "chef" is designed to bootstrap a chef implementation
         | 
| 33 | 
            +
            #
         | 
| 34 | 
            +
            # See the corresponding userdata.yml for more information
         | 
| 35 | 
            +
            :userdata: default
         | 
| 36 | 
            +
             | 
| 22 37 | 
             
            # Common settings.
         | 
| 23 38 | 
             
            # In most cases, you will be using the same provider
         | 
| 24 39 | 
             
            # for all of the different components within your
         | 
| 25 40 | 
             
            # infrastructure (Compute, DNS, Balancers, etc).
         | 
| 26 41 | 
             
            # You can store the common keys and secrets here.
         | 
| 27 | 
            -
            common: &common
         | 
| 28 | 
            -
              aws_access_key_id: aws_key
         | 
| 29 | 
            -
              aws_secret_access_key: aws_secret
         | 
| 42 | 
            +
            :common: &common
         | 
| 43 | 
            +
              :aws_access_key_id: aws_key
         | 
| 44 | 
            +
              :aws_secret_access_key: aws_secret
         | 
| 30 45 |  | 
| 31 46 | 
             
            # Compute settings
         | 
| 32 47 | 
             
            # These are passed to Fog when creating a connection
         | 
| 33 | 
            -
            compute:
         | 
| 48 | 
            +
            :compute:
         | 
| 34 49 | 
             
              <<: *common
         | 
| 35 | 
            -
              provider: AWS
         | 
| 36 | 
            -
              region: *region
         | 
| 50 | 
            +
              :provider: AWS
         | 
| 51 | 
            +
              :region: *region
         | 
| 37 52 |  | 
| 38 53 | 
             
            # DNS settings
         | 
| 39 54 | 
             
            # These are passed to Fog when creating a connection
         | 
| 40 | 
            -
            dns:
         | 
| 55 | 
            +
            :dns:
         | 
| 41 56 | 
             
              <<: *common
         | 
| 42 | 
            -
              provider: AWS
         | 
| 57 | 
            +
              :provider: AWS
         | 
| 43 58 |  | 
| 44 59 | 
             
            # Balancer settings
         | 
| 45 60 | 
             
            # These are passed to Fog when creating a connection
         | 
| 46 | 
            -
            balancer:
         | 
| 61 | 
            +
            :balancer:
         | 
| 47 62 | 
             
              <<: *common
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            # Database settings
         | 
| 65 | 
            +
            # MongoDB and MySQL are supported
         | 
| 66 | 
            +
            #:database:
         | 
| 67 | 
            +
            #  :provider: MongoDB # or MySQL
         | 
| 68 | 
            +
            #  :host: localhost
         | 
| 69 | 
            +
            #  :port: 27017
         | 
| 70 | 
            +
            #  :user: username
         | 
| 71 | 
            +
            #  :pass: password
         | 
| 72 | 
            +
            #  :admin_user: admin_username
         | 
| 73 | 
            +
            #  :admin_pass: admin_password
         | 
| @@ -0,0 +1,63 @@ | |
| 1 | 
            +
            #!/bin/bash
         | 
| 2 | 
            +
            set -e -x
         | 
| 3 | 
            +
            exec > ~/userdata.log 2>&1
         | 
| 4 | 
            +
            export DEBIAN_FRONTEND=noninteractive
         | 
| 5 | 
            +
            apt-add-repository -y ppa:brightbox/ruby-ng-experimental
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            apt-get update
         | 
| 8 | 
            +
            apt-get -y install <%= @dependencies.join(' ') %>
         | 
| 9 | 
            +
            mkdir -p /var/log/chef
         | 
| 10 | 
            +
            mkdir -p /var/backups/chef
         | 
| 11 | 
            +
            mkdir -p /var/run/chef
         | 
| 12 | 
            +
            mkdir -p /var/cache/chef
         | 
| 13 | 
            +
            mkdir -p /var/lib/chef
         | 
| 14 | 
            +
            mkdir /etc/chef
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # set up hostname
         | 
| 17 | 
            +
            hostname <%= @name %>.<%= @zone %>
         | 
| 18 | 
            +
            echo "<%= @name %>.<%= @zone %>" > /etc/hostname
         | 
| 19 | 
            +
            echo "127.0.0.1 <%= @name %>.<%= @zone %> <%= @name.split('.')[0] %> <%= @name %> # entered by userdata script" >> /etc/hosts
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            gem install rubygems-update --no-ri --no-rdoc
         | 
| 22 | 
            +
            update_rubygems
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            <% @gems.each do |gem| %>
         | 
| 25 | 
            +
            gem install <%= gem %> --no-ri --no-rdoc
         | 
| 26 | 
            +
            <% end %>
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            cat <<FACTS > /etc/facts.yml
         | 
| 29 | 
            +
            rig_name: <%= @name %>
         | 
| 30 | 
            +
            rig_role: <%= @role %>
         | 
| 31 | 
            +
            rig_environment: <%= @environment %>
         | 
| 32 | 
            +
            FACTS
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            cat <<JSON > /etc/chef/bootstrap.json
         | 
| 35 | 
            +
            {
         | 
| 36 | 
            +
                "run_list": [
         | 
| 37 | 
            +
                    "role[<%= @role %>]"
         | 
| 38 | 
            +
                ]
         | 
| 39 | 
            +
            }
         | 
| 40 | 
            +
            JSON
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            cat <<CLIENT > /etc/chef/client.rb
         | 
| 43 | 
            +
            log_level               :info
         | 
| 44 | 
            +
            log_location            "/var/log/chef/client.log"
         | 
| 45 | 
            +
            ssl_verify_mode         :verify_none
         | 
| 46 | 
            +
            validation_client_name  "chef-validator"
         | 
| 47 | 
            +
            validation_key          "/etc/chef/validation.pem"
         | 
| 48 | 
            +
            client_key              "/etc/chef/client.pem"
         | 
| 49 | 
            +
            chef_server_url         "http://chef.inqlabs.com:4000";
         | 
| 50 | 
            +
            file_cache_path         "/var/cache/chef"
         | 
| 51 | 
            +
            file_backup_path        "/var/backups/chef"
         | 
| 52 | 
            +
            pid_file                "/var/run/chef/client.pid"
         | 
| 53 | 
            +
            node_name               "<%= @name %>";
         | 
| 54 | 
            +
            Chef::Log::Formatter.show_time = true
         | 
| 55 | 
            +
            CLIENT
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            <% @files.each do |file|; local = file["local"]; remote = file["remote"] %>
         | 
| 58 | 
            +
            cat << <%= local.upcase %> > <%= remote %>
         | 
| 59 | 
            +
            <%= File.open("#@directory/#{local}").read %>
         | 
| 60 | 
            +
            <%= local.upcase %>
         | 
| 61 | 
            +
            <% end %>
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            chef-client -N <%= @name %> <%= @chef && @environment ? "-E " + @environment : "" %> --once -j /etc/chef/bootstrap.json 2>&1
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            erb: userdata.sh.erb
         | 
| 2 | 
            +
            files:
         | 
| 3 | 
            +
              - local: validation.pem
         | 
| 4 | 
            +
                remote: /etc/chef/validation.pem
         | 
| 5 | 
            +
            dependencies:
         | 
| 6 | 
            +
              - build-essential
         | 
| 7 | 
            +
              - wget
         | 
| 8 | 
            +
              - curl
         | 
| 9 | 
            +
              - ssl-cert
         | 
| 10 | 
            +
              - ruby1.9.3
         | 
| 11 | 
            +
              - ruby1.9.1-dev
         | 
| 12 | 
            +
              - rubygems
         | 
| 13 | 
            +
              - ruby-switch
         | 
| 14 | 
            +
              - libopenssl-ruby1.9.1
         | 
| 15 | 
            +
              - rdoc1.9.1
         | 
| 16 | 
            +
              - ri1.9.1
         | 
| 17 | 
            +
              - irb1.9.1
         | 
| 18 | 
            +
            gems:
         | 
| 19 | 
            +
              - chef
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            -----BEGIN RSA PRIVATE KEY-----
         | 
| 2 | 
            +
            MIIEpgIBAAKCAQEAxFST0blraLl7mac91QzSxNNZQt7A4Mo4O297e+r6F5b1+Eae
         | 
| 3 | 
            +
            RNAH9w4p9sctLttIT8rI77hWrgS04f6mbamSaY+pAyWje+MX2s5YXizEML1Fdyr6
         | 
| 4 | 
            +
            hV1n/vIMOmhcVwGbF3fg6BKwjur7A1dS+aOM1sEYi77hfbY4NHhLCQiR4v2m4saC
         | 
| 5 | 
            +
            C9SPX7uNIzKvGB2P/5U+HNPaJuo6GAUsrOrTA/YB53Bza4DPMpyp9+Hf/ZR9l6Hd
         | 
| 6 | 
            +
            4tCAp07dUNZ/LKKL4AmsnCqlT5EiYFIsaq2ezzPnS9t2FlFV60a2opbdEvq/QLbz
         | 
| 7 | 
            +
            ouH6H+/4n/+BY9bVBCg1oBXHlLwbZmNl7Xl4wQIDAQABAoIBAQCFDIAkZ5C3psNx
         | 
| 8 | 
            +
            bJoFkKwhQM1D+OsjK0eSV8mKP8J+TAqi11CYd5Z+QbYEjBQ9pdNKZ7VmZzkusvfW
         | 
| 9 | 
            +
            E5m7xWf4a6fw/wfchBh9assN/y5xjULPMGwYByXb6zKIPoMdX3Q4IkBjZY8LO4ki
         | 
| 10 | 
            +
            SYJstP5T5wX4ZkIvzFYokMDg/VLITUZPnxu+OunFF/vfl7mFOIrHtCj6LSpCk5xW
         | 
| 11 | 
            +
            NsQqJWzK6/xjKH8KweWkl+E7k/ILUetXuCjKhj2XjiYUbzRH12e5jJIsEXRKWw8I
         | 
| 12 | 
            +
            Iw5I8N4fWaXbTmoI+NUV+24BqwOfCH0RjoZXcc6LOxmxKDd8a00H3bCYj9GbpLed
         | 
| 13 | 
            +
            oFcCY2OFAoGBAPSj4u2sSI1uMWNMivTbEYC5pYeltJgRYByazFHj5mHtPF7aDs2a
         | 
| 14 | 
            +
            IWBfaaHbRIk7d9mIGYOrEiFFpDi5zWYo1gEbwqqOVw4cxL6coVA5mUMdZFDSGcpL
         | 
| 15 | 
            +
            jwCIp9Yz92mOvygJEQosBIaMaBNTVY2GJPEo8Uhp0OstMDxIR9YrxdwjAoGBAM1y
         | 
| 16 | 
            +
            atxCx8Z7Mua33x6gPxyyQVnqU/Hvpa9uTF0laAcwarsNlXczyfw/5TNJsEyTzbE1
         | 
| 17 | 
            +
            6yJdm5GDS7L6whprx20SCHgpfBcAK6UGMMYsRvRz8kThLI7jgsXQjNXO8MNvaYwO
         | 
| 18 | 
            +
            z9uVp+i1OVN0jURPwu6NsHcduSCP4asZwBIIOoPLAoGBAJdZQM5rlKMy9gkJ1Lnx
         | 
| 19 | 
            +
            Qd3SfK7z/EtMDJsFxbwv81rIK14/J4NZhKabwL0q6za/fMEuqyJDVr8Q161kfcdj
         | 
| 20 | 
            +
            IiqjYwajcwY/FBUcz8vTJpdX+rTplp0Jq9nXsYYatkkuz+JT4Z/aZZ5cBRNXrgkV
         | 
| 21 | 
            +
            YYt1GfkDxgWI+luBGDhO8mTjAoGBAJ5j3dreaWKuTLnvfEcCSGX5T8TgkcNufRBZ
         | 
| 22 | 
            +
            Oup9EkyomUCI4ni6JrkhEbWO1CrVsLk01ojyHiP7U3szND5mZaPDSWBKq26YJQ3f
         | 
| 23 | 
            +
            Te8a58FDOr670zx+Tq3vcQTNvHUQChF+weWK5Z7VSNL8goTt8V01Q50x/y4Jf3QI
         | 
| 24 | 
            +
            MDo2udYtAoGBAKk596lHuH5/LEjT5hfVrbarSvUjlXswJusZGnwbtEUERY7abUbG
         | 
| 25 | 
            +
            5mtI+Xme2q6T0Wjf6N977ecNYAi5VwpUzoziZUPeSCQUlRWSyX2o6+fVBngOFpLZ
         | 
| 26 | 
            +
            tRv2ngXlc2sYh9RbnlWSdaK0g+U7V8l2wSsQjcPQ1J2vbIGjwBHDSzjc
         | 
| 27 | 
            +
            -----END RSA PRIVATE KEY-----
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            #!/bin/bash
         | 
| 2 | 
            +
            set -e -x
         | 
| 3 | 
            +
            exec > ~/userdata.log 2>&1
         | 
| 4 | 
            +
            export DEBIAN_FRONTEND=noninteractive
         | 
| 5 | 
            +
            apt-add-repository -y ppa:brightbox/ruby-ng-experimental
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            apt-get update
         | 
| 8 | 
            +
            apt-get -y install <%= @dependencies.join(' ') %>
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            # set up hostname
         | 
| 11 | 
            +
            hostname <%= @name %>.<%= @zone %>
         | 
| 12 | 
            +
            echo "<%= @name %>.<%= @zone %>" > /etc/hostname
         | 
| 13 | 
            +
            echo "127.0.0.1 <%= @name %>.<%= @zone %> <%= @name.split('.')[0] %> <%= @name %> # entered by userdata script" >> /etc/hosts
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            gem install rubygems-update --no-ri --no-rdoc
         | 
| 16 | 
            +
            update_rubygems
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            <% @gems.each do |gem| %>
         | 
| 19 | 
            +
            gem install <%= gem %> --no-ri --no-rdoc
         | 
| 20 | 
            +
            <% end %>
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            cat <<FACTS > /etc/facts.yml
         | 
| 23 | 
            +
            rig_name: <%= @name %>
         | 
| 24 | 
            +
            rig_role: <%= @role %>
         | 
| 25 | 
            +
            rig_environment: <%= @environment %>
         | 
| 26 | 
            +
            FACTS
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            <% @files.each do |file|; local = file["local"]; remote = file["remote"] %>
         | 
| 29 | 
            +
            cat << <%= local.upcase %> > <%= remote %>
         | 
| 30 | 
            +
            <%= File.open("#@directory/#{local}").read %>
         | 
| 31 | 
            +
            <%= local.upcase %>
         | 
| 32 | 
            +
            <% end %>
         | 
    
        data/lib/rig/command/abstract.rb
    CHANGED
    
    | @@ -34,6 +34,7 @@ module Rig | |
| 34 34 | 
             
                      if detailed
         | 
| 35 35 | 
             
                        r << server.private_ip_address.to_s
         | 
| 36 36 | 
             
                      end
         | 
| 37 | 
            +
                      r << server.availability_zone
         | 
| 37 38 | 
             
                      r << server.flavor_id.to_s
         | 
| 38 39 | 
             
                      r << server.id.to_s
         | 
| 39 40 | 
             
                      r << server.state.to_s.downcase
         | 
| @@ -50,6 +51,7 @@ module Rig | |
| 50 51 | 
             
                    cols << "Protected"
         | 
| 51 52 | 
             
                    cols << "Public IP"
         | 
| 52 53 | 
             
                    cols << "Private IP" if detailed
         | 
| 54 | 
            +
                    cols << "AZ"
         | 
| 53 55 | 
             
                    cols << "Size"
         | 
| 54 56 | 
             
                    cols << "Instance ID"
         | 
| 55 57 | 
             
                    cols << "State"
         | 
| @@ -17,9 +17,10 @@ module Rig | |
| 17 17 | 
             
                        rows = []
         | 
| 18 18 | 
             
                        envs.each do |e|
         | 
| 19 19 | 
             
                          env = Rig::Model::Environment.find(e)
         | 
| 20 | 
            -
                           | 
| 20 | 
            +
                          zones = env.servers.collect {|e| e.availability_zone }
         | 
| 21 | 
            +
                          rows << [env.name, env.template, env.region, env.servers.count, env.balancers.count, env.protected?, zones]
         | 
| 21 22 | 
             
                        end
         | 
| 22 | 
            -
                        print_table(%w{Name Template Region Servers# Balancers# Protected?}, rows)
         | 
| 23 | 
            +
                        print_table(%w{Name Template Region Servers# Balancers# Protected? AZs}, rows)
         | 
| 23 24 | 
             
                      end
         | 
| 24 25 | 
             
                    end
         | 
| 25 26 | 
             
                  end
         | 
    
        data/lib/rig/command/main.rb
    CHANGED
    
    | @@ -25,6 +25,17 @@ module Rig | |
| 25 25 | 
             
                    File.open(dest, "w") {|f| f.write(new.to_yaml)}
         | 
| 26 26 | 
             
                  end
         | 
| 27 27 |  | 
| 28 | 
            +
                  subcommand "userdata", "test userdata" do
         | 
| 29 | 
            +
                    parameter "NAME", "name of server"
         | 
| 30 | 
            +
                    parameter "ROLE", "role of server"
         | 
| 31 | 
            +
                    parameter "ENVIRONMENT", "environment of server"
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    def execute
         | 
| 34 | 
            +
                      userdata = Rig::Model::Userdata.create(name, role, environment)
         | 
| 35 | 
            +
                      puts "USERDATA:\n#{userdata}"
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 28 39 | 
             
                  subcommand "init", "initialize configuration directory" do
         | 
| 29 40 | 
             
                    option %w{-f --force}, :flag, "force creation of files", :default => false
         | 
| 30 41 | 
             
                    option %w{-d --directory}, "DIRECTORY", "configuration directory", :default => "~/.rig"
         | 
| @@ -34,7 +45,17 @@ module Rig | |
| 34 45 | 
             
                      back = "#{dir}.bak.#{Time.now.to_i}"
         | 
| 35 46 | 
             
                      conf = File.expand_path("../../../../conf", __FILE__)
         | 
| 36 47 |  | 
| 37 | 
            -
                      files =  | 
| 48 | 
            +
                      files = %w{
         | 
| 49 | 
            +
                        config.yml
         | 
| 50 | 
            +
                        accounts/default.yml
         | 
| 51 | 
            +
                        templates/solo.yml
         | 
| 52 | 
            +
                        templates/multi.yml
         | 
| 53 | 
            +
                        userdata/default/userdata.sh.erb
         | 
| 54 | 
            +
                        userdata/default/userdata.yml
         | 
| 55 | 
            +
                        userdata/chef/userdata.sh.erb
         | 
| 56 | 
            +
                        userdata/chef/userdata.yml
         | 
| 57 | 
            +
                        userdata/chef/validation.pem
         | 
| 58 | 
            +
                      }
         | 
| 38 59 |  | 
| 39 60 | 
             
                      unless dir
         | 
| 40 61 | 
             
                        puts "directory could not be found: tried environment variables RIG_CONFIG (#{ENV['RIG_CONFIG']}) and HOME (#{ENV['HOME']}"
         | 
| @@ -50,12 +71,11 @@ module Rig | |
| 50 71 |  | 
| 51 72 | 
             
                      puts "[create] #{dir}/"
         | 
| 52 73 | 
             
                      FileUtils.mkdir_p(dir)
         | 
| 53 | 
            -
                      FileUtils.mkdir_p("#{dir}/accounts")
         | 
| 54 | 
            -
                      FileUtils.mkdir_p("#{dir}/templates")
         | 
| 55 74 |  | 
| 56 75 | 
             
                      files.each do |file|
         | 
| 57 76 | 
             
                        src  = "#{conf}/#{file}"
         | 
| 58 77 | 
             
                        dest = "#{dir}/#{file}"
         | 
| 78 | 
            +
                        FileUtils.mkdir_p(File.dirname(dest))
         | 
| 59 79 | 
             
                        if File.exists?(dest) && !force?
         | 
| 60 80 | 
             
                          puts "[skip] #{dest}"
         | 
| 61 81 | 
             
                        else
         | 
    
        data/lib/rig/model/balancer.rb
    CHANGED
    
    | @@ -8,18 +8,19 @@ module Rig | |
| 8 8 | 
             
                      Rig::Connection.balancer.load_balancers.all
         | 
| 9 9 | 
             
                    end
         | 
| 10 10 |  | 
| 11 | 
            -
                    def new(name, listeners=[])
         | 
| 11 | 
            +
                    def new(name, listeners=[], zones=[])
         | 
| 12 | 
            +
                      fog = Rig::Connection.balancer
         | 
| 12 13 | 
             
                      listeners.map! do |listener|
         | 
| 13 14 | 
             
                        ld = new_listener_description(listener)
         | 
| 14 15 | 
             
                        #ap ld
         | 
| 15 16 | 
             
                        ld
         | 
| 16 17 | 
             
                      end
         | 
| 17 18 | 
             
                      #ap listeners
         | 
| 18 | 
            -
                       | 
| 19 | 
            +
                      fog.load_balancers.new({ :id => name, "ListenerDescriptions" => listeners, :availability_zones => zones })
         | 
| 19 20 | 
             
                    end
         | 
| 20 21 |  | 
| 21 | 
            -
                    def create(name, listeners=[])
         | 
| 22 | 
            -
                      b = self.new(name, listeners)
         | 
| 22 | 
            +
                    def create(name, listeners=[], zones=[])
         | 
| 23 | 
            +
                      b = self.new(name, listeners, zones)
         | 
| 23 24 | 
             
                      b.save if b
         | 
| 24 25 | 
             
                      puts ".. created: #{name}"
         | 
| 25 26 | 
             
                      b
         | 
| @@ -90,7 +90,8 @@ module Rig | |
| 90 90 |  | 
| 91 91 | 
             
                        if tmpl[:balance]
         | 
| 92 92 | 
             
                          puts "creating balancer"
         | 
| 93 | 
            -
                           | 
| 93 | 
            +
                          zones = setinstances.collect {|e| e.availability_zone }
         | 
| 94 | 
            +
                          balancer = Rig::Model::Balancer.create("#{name}-#{role}", tmpl[:listeners], zones)
         | 
| 94 95 | 
             
                          balancer.register_instances(setinstances.collect { |e| e.id })
         | 
| 95 96 | 
             
                          balancer.save
         | 
| 96 97 |  | 
    
        data/lib/rig/model/userdata.rb
    CHANGED
    
    | @@ -1,111 +1,30 @@ | |
| 1 1 | 
             
            require 'erubis'
         | 
| 2 | 
            +
            require 'awesome_print'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Rig
         | 
| 4 5 | 
             
              module Model
         | 
| 5 6 | 
             
                class Userdata
         | 
| 6 7 | 
             
                  class << self
         | 
| 7 8 | 
             
                    def create(name, role, environment, opts={ })
         | 
| 8 | 
            -
                       | 
| 9 | 
            +
                      package = Rig.get_config(:userdata)
         | 
| 10 | 
            +
                      directory = "#{Rig.configdir}/userdata/#{package}"
         | 
| 11 | 
            +
                      config = YAML.load_file("#{directory}/userdata.yml")
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                      data = {
         | 
| 9 14 | 
             
                          :name         => name,
         | 
| 10 15 | 
             
                          :role         => role,
         | 
| 11 16 | 
             
                          :environment  => environment,
         | 
| 12 17 | 
             
                          :zone         => Rig.get_config(:dns_zone),
         | 
| 13 | 
            -
                          :dependencies =>  | 
| 14 | 
            -
             | 
| 15 | 
            -
                          : | 
| 16 | 
            -
                          : | 
| 17 | 
            -
             | 
| 18 | 
            -
                       | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
            apt-add-repository -y ppa:brightbox/ruby-ng-experimental
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            apt-get update && apt-get upgrade -y
         | 
| 26 | 
            -
            apt-get -y install <%= @dependencies.join(' ') %>
         | 
| 27 | 
            -
            mkdir -p /var/log/chef
         | 
| 28 | 
            -
            mkdir -p /var/backups/chef
         | 
| 29 | 
            -
            mkdir -p /var/run/chef
         | 
| 30 | 
            -
            mkdir -p /var/cache/chef
         | 
| 31 | 
            -
            mkdir -p /var/lib/chef
         | 
| 32 | 
            -
            mkdir /etc/chef
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            # set up hostname
         | 
| 35 | 
            -
            hostname <%= @name %>.<%= @zone %>
         | 
| 36 | 
            -
            echo "<%= @name %>.<%= @zone %>" > /etc/hostname
         | 
| 37 | 
            -
            echo "127.0.0.1 <%= @name %>.<%= @zone %> <%= @name.split('.')[0] %> <%= @name %> # entered by userdata script" >> /etc/hosts
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            gem install rubygems-update --no-ri --no-rdoc
         | 
| 40 | 
            -
            update_rubygems
         | 
| 41 | 
            -
             | 
| 42 | 
            -
            <% @gems.each do |gem| %>
         | 
| 43 | 
            -
            gem install <%= gem %> --no-ri --no-rdoc
         | 
| 44 | 
            -
            <% end %>
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            cat <<FACTS > /etc/facts.yml
         | 
| 47 | 
            -
            inq_name: <%= @name %>
         | 
| 48 | 
            -
            inq_role: <%= @role %>
         | 
| 49 | 
            -
            inq_environment: <%= @environment %>
         | 
| 50 | 
            -
            FACTS
         | 
| 51 | 
            -
             | 
| 52 | 
            -
            cat <<JSON > /etc/chef/bootstrap.json
         | 
| 53 | 
            -
            {
         | 
| 54 | 
            -
              "run_list": [
         | 
| 55 | 
            -
                "role[<%= @role %>]"
         | 
| 56 | 
            -
              ]
         | 
| 57 | 
            -
            }
         | 
| 58 | 
            -
            JSON
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            cat <<CLIENT > /etc/chef/client.rb
         | 
| 61 | 
            -
            log_level               :info
         | 
| 62 | 
            -
            log_location            "/var/log/chef/client.log"
         | 
| 63 | 
            -
            ssl_verify_mode         :verify_none
         | 
| 64 | 
            -
            validation_client_name  "chef-validator"
         | 
| 65 | 
            -
            validation_key          "/etc/chef/validation.pem"
         | 
| 66 | 
            -
            client_key              "/etc/chef/client.pem"
         | 
| 67 | 
            -
            chef_server_url         "http://chef.inqlabs.com:4000";
         | 
| 68 | 
            -
            file_cache_path         "/var/cache/chef"
         | 
| 69 | 
            -
            file_backup_path        "/var/backups/chef"
         | 
| 70 | 
            -
            pid_file                "/var/run/chef/client.pid"
         | 
| 71 | 
            -
            node_name               "<%= @name %>";
         | 
| 72 | 
            -
            Chef::Log::Formatter.show_time = true
         | 
| 73 | 
            -
            CLIENT
         | 
| 74 | 
            -
             | 
| 75 | 
            -
            cat <<VALID > /etc/chef/validation.pem
         | 
| 76 | 
            -
            -----BEGIN RSA PRIVATE KEY-----
         | 
| 77 | 
            -
            MIIEpgIBAAKCAQEAxFST0blraLl7mac91QzSxNNZQt7A4Mo4O297e+r6F5b1+Eae
         | 
| 78 | 
            -
            RNAH9w4p9sctLttIT8rI77hWrgS04f6mbamSaY+pAyWje+MX2s5YXizEML1Fdyr6
         | 
| 79 | 
            -
            hV1n/vIMOmhcVwGbF3fg6BKwjur7A1dS+aOM1sEYi77hfbY4NHhLCQiR4v2m4saC
         | 
| 80 | 
            -
            C9SPX7uNIzKvGB2P/5U+HNPaJuo6GAUsrOrTA/YB53Bza4DPMpyp9+Hf/ZR9l6Hd
         | 
| 81 | 
            -
            4tCAp07dUNZ/LKKL4AmsnCqlT5EiYFIsaq2ezzPnS9t2FlFV60a2opbdEvq/QLbz
         | 
| 82 | 
            -
            ouH6H+/4n/+BY9bVBCg1oBXHlLwbZmNl7Xl4wQIDAQABAoIBAQCFDIAkZ5C3psNx
         | 
| 83 | 
            -
            bJoFkKwhQM1D+OsjK0eSV8mKP8J+TAqi11CYd5Z+QbYEjBQ9pdNKZ7VmZzkusvfW
         | 
| 84 | 
            -
            E5m7xWf4a6fw/wfchBh9assN/y5xjULPMGwYByXb6zKIPoMdX3Q4IkBjZY8LO4ki
         | 
| 85 | 
            -
            SYJstP5T5wX4ZkIvzFYokMDg/VLITUZPnxu+OunFF/vfl7mFOIrHtCj6LSpCk5xW
         | 
| 86 | 
            -
            NsQqJWzK6/xjKH8KweWkl+E7k/ILUetXuCjKhj2XjiYUbzRH12e5jJIsEXRKWw8I
         | 
| 87 | 
            -
            Iw5I8N4fWaXbTmoI+NUV+24BqwOfCH0RjoZXcc6LOxmxKDd8a00H3bCYj9GbpLed
         | 
| 88 | 
            -
            oFcCY2OFAoGBAPSj4u2sSI1uMWNMivTbEYC5pYeltJgRYByazFHj5mHtPF7aDs2a
         | 
| 89 | 
            -
            IWBfaaHbRIk7d9mIGYOrEiFFpDi5zWYo1gEbwqqOVw4cxL6coVA5mUMdZFDSGcpL
         | 
| 90 | 
            -
            jwCIp9Yz92mOvygJEQosBIaMaBNTVY2GJPEo8Uhp0OstMDxIR9YrxdwjAoGBAM1y
         | 
| 91 | 
            -
            atxCx8Z7Mua33x6gPxyyQVnqU/Hvpa9uTF0laAcwarsNlXczyfw/5TNJsEyTzbE1
         | 
| 92 | 
            -
            6yJdm5GDS7L6whprx20SCHgpfBcAK6UGMMYsRvRz8kThLI7jgsXQjNXO8MNvaYwO
         | 
| 93 | 
            -
            z9uVp+i1OVN0jURPwu6NsHcduSCP4asZwBIIOoPLAoGBAJdZQM5rlKMy9gkJ1Lnx
         | 
| 94 | 
            -
            Qd3SfK7z/EtMDJsFxbwv81rIK14/J4NZhKabwL0q6za/fMEuqyJDVr8Q161kfcdj
         | 
| 95 | 
            -
            IiqjYwajcwY/FBUcz8vTJpdX+rTplp0Jq9nXsYYatkkuz+JT4Z/aZZ5cBRNXrgkV
         | 
| 96 | 
            -
            YYt1GfkDxgWI+luBGDhO8mTjAoGBAJ5j3dreaWKuTLnvfEcCSGX5T8TgkcNufRBZ
         | 
| 97 | 
            -
            Oup9EkyomUCI4ni6JrkhEbWO1CrVsLk01ojyHiP7U3szND5mZaPDSWBKq26YJQ3f
         | 
| 98 | 
            -
            Te8a58FDOr670zx+Tq3vcQTNvHUQChF+weWK5Z7VSNL8goTt8V01Q50x/y4Jf3QI
         | 
| 99 | 
            -
            MDo2udYtAoGBAKk596lHuH5/LEjT5hfVrbarSvUjlXswJusZGnwbtEUERY7abUbG
         | 
| 100 | 
            -
            5mtI+Xme2q6T0Wjf6N977ecNYAi5VwpUzoziZUPeSCQUlRWSyX2o6+fVBngOFpLZ
         | 
| 101 | 
            -
            tRv2ngXlc2sYh9RbnlWSdaK0g+U7V8l2wSsQjcPQ1J2vbIGjwBHDSzjc
         | 
| 102 | 
            -
            -----END RSA PRIVATE KEY-----
         | 
| 103 | 
            -
            VALID
         | 
| 104 | 
            -
             | 
| 105 | 
            -
            chef-client -N <%= @name %> <%= @chef && @environment ? "-E " + @environment : "" %> --once -j /etc/chef/bootstrap.json 2>&1
         | 
| 106 | 
            -
                      EOF
         | 
| 107 | 
            -
                      erb = Erubis::Eruby.new(template)
         | 
| 108 | 
            -
                      out = erb.evaluate(data)
         | 
| 18 | 
            +
                          :dependencies => [],
         | 
| 19 | 
            +
                          :gems         => [],
         | 
| 20 | 
            +
                          :files        => [],
         | 
| 21 | 
            +
                          :directory    => directory,
         | 
| 22 | 
            +
                          :template     => "userdata.sh.erb",
         | 
| 23 | 
            +
                      }.merge(config).merge(opts)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                      template = File.open("#{directory}/#{data[:template]}").read
         | 
| 26 | 
            +
                      erb      = Erubis::Eruby.new(template)
         | 
| 27 | 
            +
                      out      = erb.evaluate(data)
         | 
| 109 28 | 
             
                    end
         | 
| 110 29 | 
             
                  end
         | 
| 111 30 | 
             
                end
         | 
    
        data/lib/rig/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rig
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4. | 
| 4 | 
            +
              version: 0.4.5
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-05- | 
| 12 | 
            +
            date: 2012-05-24 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: clamp
         | 
| @@ -126,6 +126,11 @@ files: | |
| 126 126 | 
             
            - conf/config.yml
         | 
| 127 127 | 
             
            - conf/templates/multi.yml
         | 
| 128 128 | 
             
            - conf/templates/solo.yml
         | 
| 129 | 
            +
            - conf/userdata/chef/userdata.sh.erb
         | 
| 130 | 
            +
            - conf/userdata/chef/userdata.yml
         | 
| 131 | 
            +
            - conf/userdata/chef/validation.pem
         | 
| 132 | 
            +
            - conf/userdata/default/userdata.sh.erb
         | 
| 133 | 
            +
            - conf/userdata/default/userdata.yml
         | 
| 129 134 | 
             
            - lib/rig.rb
         | 
| 130 135 | 
             
            - lib/rig/capistrano.rb
         | 
| 131 136 | 
             
            - lib/rig/chef.rb
         |