/ridley-connectors

A Connector API for talking to nodes managed by Chef

Primary LanguageRubyOtherNOASSERTION

Ridley Connectors

Gem Version Build Status Dependency Status

An extension on Ridley adding support for connecting and communicating with nodes in Chef.

Installation

Add ridley-connectors to your Gemfile:

gem 'ridley-connectors'

And run the bundle command to install. Alternatively, you can install the gem directly:

$ gem install ridley-connectors

Usage

You can use ridley-connectors just like using Ridley.

require 'ridley'

Creating a new Ridley client

ridley = Ridley.new(
  server_url: "https://api.opscode.com/organizations/ridley",
  client_name: "me",
  client_key: "/Users/me/.chef/me.pem"
)

ridley-connectors exposes all the usual features of Ridley, but adds some sugar for interacting with nodes.

ridley.node.bootstrap("hostname.to.bootstrap.com") # Bootstraps a hostname or IP
ridley.node.put_secret("hostname") # Puts your configured encrypted data bag secret onto a hostname or IP
ridley.node.chef_run("hostname") # Runs Chef on a hostname or IP

Node Resource

Bootstrapping Unix nodes

ridley = Ridley.new(
  server_url: "https://api.opscode.com",
  organization: "vialstudios",
  validator_client: "vialstudios-validator",
  validator_path: "/Users/reset/.chef/vialstudios-validator.pem",
  ssh: {
    user: "vagrant",
    password: "vagrant"
  }
)

ridley.node.bootstrap("33.33.33.10", "33.33.33.11")

Bootstrapping Windows Nodes

Windows Nodes are bootstrapped using a combination of WinRM, Batch, and PowerShell. You will probably need to tweak some settings on your Windows servers to ensure the commands are successful.

WinRM Settings

  1. Enable WinRM: winrm quickconfig and say Yes.
  2. Set some WinRM settings to ensure that you don't get 401 Unauthorized responses and 500 Responses because of timeouts.
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}
winrm set winrm/config/service @{EnumerationTimeoutms="600000"}
winrm set winrm/config @{MaxTimeoutms="600000"}
winrm set winrm/config/client @{TrustedHosts="*"}

PowerShell Settings

  1. You should also configure your PowerShell profile, so that PowerShell commands have a more lenient timeout period.
mkdir C:\Users\my_user\Documents\WindowsPowerShell
echo "$PSSessionOption = New-PSSessionOption -OpenTimeout 0 -CancelTimeout 0 -IdleTimeout 0 -OperationTimeout 0" > C:\Users\my_user\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Verify the PowerShell settings by opening up the PowerShell Console and entering $PSSessionOption and ensure those values are set, and that there are no errors output.

The following links offer some information about configuring a machine's PowerShell settings:

You may also want to tweak your Windows boxes a bit more ex: turning UAC off, turning off the Windows Firewall.

Authors and Contributors

Thank you to all of our Contributors, testers, and users.