• Stars
    star
    202
  • Rank 193,649 (Top 4 %)
  • Language
    Ruby
  • License
    Apache License 2.0
  • Created over 13 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Chef knife plug-in for VMware vSphere

knife vSphere

Gem Version Build status Inline docs

Umbrella Project: Knife

Project State: Active

Issues Response Time Maximum: 14 days

Pull Request Response Time Maximum: 14 days

Please refer to the CHANGELOG for version history and known issues.

Installation

This gem ships as part of Chef Workstation so the easiest way to get started is to install Chef Workstation

If you're using bundler as part of a project, add knife and knife-vsphere to your Gemfile:

gem 'knife'
gem 'knife-vsphere

Depending on your system's configuration, you may need to run this command with root privileges.

Configuration

For initial development, the plugin targets all communication at a vCenter instance rather than at specific hosts. Only named user authentication is currently supported; you can add the credentials to your knife.rb file:

knife[:vsphere_host] = "vcenter-hostname"
knife[:vsphere_user] = "privileged username" # Domain logins may need to be "[email protected]"
knife[:vsphere_pass] = "your password"       # or %Q(mypasswordwithfunnycharacters)
knife[:vsphere_dc] = "your-datacenter"

The vSphere password can also be stored in a base64 encoded version (to visually obfuscate it) by prepending 'base64:' to your encoded password. For example:

knife[:vsphere_pass] = "base64:Zm9vYmFyCg=="

If you get the following error, you may need to disable SSL certificate checking:

ERROR: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0
state=SSLv3 read server certificate B: certificate verify failed
knife[:vsphere_insecure] = true

Credentials can also be specified on the command line for multiple vSphere servers/data centers, or see dealing with multiple datacenters.

vCenter Permissions

You need the following permissions (at minimum) on your user to be able to use knife-vsphere.

  • Datastore
    • Allocate space β˜‘οΈ
    • Browse datastore β˜‘οΈ
  • Host
    • Local Operations
      • Create virtual machine β˜‘οΈ
      • Delete virtual machine β˜‘οΈ
      • Manage user groups β˜‘οΈ
      • Reconfigure virtual machine β˜‘οΈ
  • Network
    • Assign Network β˜‘οΈ
  • Resource
    • Assign virtual machine to resource pool β˜‘οΈ
  • Virtual Machine β˜‘οΈ

Description:

This is an Chef Knife plugin to interact with VMware's vSphere. This plugin currently supports the following:

Listings:

  • VMs
  • Folders
  • Templates
  • Datastores
  • VLANs (currently requires distributed vswitch)
  • Resource Pools and Clusters
  • Customization Specifications
  • Hosts in a Pool or Cluster
  • Network cards and VLANs for a VM

VM Operations:

  • Power on/off
  • Clone (with optional chef bootstrap and run list)
  • Delete
  • VMDK addition
  • Migrate
  • Add network
  • Connect/disconnect network
  • Delete network
  • Change network
  • Enable VNC remote console

Clone-specific customization options (for Linux guests):

  • Destination folder
  • CPU core count
  • CPU cores per socket
  • Memory size
  • Memory reservation
  • DNS settings
  • Hostname / Domain name
  • IP addresses / default gateway
  • vlan (currently requires distributed vswitch)
  • datastore
  • resource pool

Note: For Windows guests we can run FIELDS

Basic Examples:

Here are some basic usage examples to help get you started.

  • This clones from a VMware template and bootstraps chef into it. It uses the generic DHCP options.
$ knife vsphere vm clone MACHINENAME --template TEMPLATENAME --bootstrap --cips dhcp
  • This clones a vm from a VMware template bootstraps chef, then uses a Customization template called "SPEC" to help bootstrap. Also calls a different SSH user and Password.
$ knife vsphere vm clone MACHINENAME --template TEMPLATENAME --bootstrap --cips dhcp \
  --cspec SPEC --connection-user USER --connection-password PASSWORD

Note: add a -f FOLDERNAME if you put your --template in someplace other then root folder, and use --dest-folder FOLDERNAME if you want your VM created in FOLDERNAME rather than the root.

A full basic example of cloning from a folder, and putting it in the "Datacenter Root" directory is the following:

$ knife vsphere vm clone MACHINENAME --template TEMPLATENAME -f LOCATIONOFTEMPLATE \
  --bootstrap --start --cips dhcp --dest-folder /
  • Listing the available VMware templates
$ knife vsphere template list
Template Name: ubuntu16-template
$ knife vsphere template list -f FOLDERNAME
Template Name: centos7-template
  • Deleting a machine.
$ knife vsphere vm delete MACHINENAME (-P will remove from the chef server)

Subcommands

This plugin provides the following Knife subcommands. Specific command options can be found by invoking the subcommand with a --help flag

knife vsphere vm list

Enumerates the Virtual Machines registered in the target datacenter. Only name is currently displayed.

-r, --recursive    - Recurse down through sub-folders to the specified folder
--only-folders     - Print only folder names. Implies recursive

knife vsphere vm find

Search for Virtual Machines matching criteria and display selected fields

CRITERIA: Note that all criteria must be satisfied for the VM to be returned

--match-ip IP                match ip
--match-name VMNAME          match name
--match-os OS                match os
--match-tools TOOLSSTATE     match tools state
--powered-off                Show only stopped machines
--powered-on                 Show only started machines

FIELDS:

--alarms                     show alarm status
--cpu                        Show cpu
--cpu-hot-add-enabled        Show cpu hot add enabled flag
--esx-disk                   Show esx disks
--full-path                  Show full folder path to the VM
--short-path                 Show the enclosing folder name
--hostname                   show hostname
--host_name                  Show name of the VM's host
--ip                         Show primary ip
--networks                   Show all networks and IPs
--os                         Show os details
--os-disks                   Show os disks
--ram                        Show ram
--memory-hot-add-enabled     Show memory hot add enabled flag
--snapshots                  Show snapshots
--tools                      show tools status

Example:

$ knife vsphere vm find --snapshots --full-path --cpu --ram --esx-disk \
    --os-disk --os --match-name my_machine_1 --alarms --tools --ip --ips \
    --match-ip 123 --match-tools toolsOk

knife vsphere vm state VMNAME

Manage power state of a virtual machine, aka turn it off and on

-s STATE, --state STATE    - The power state to transition the VM into; one of on|off|suspend|reboot
-w PORT, --wait-port PORT  - Wait for VM to be accessible on a port
-g, --shutdown             - Guest OS shutdown (format: -s off -g)
-r, --recursive            - Recurse down through sub-folders to the specified folder to find the VM

knife vsphere pool list

Enumerates the Resource Pools and Clusters registered in the target datacenter.

knife vsphere template list

Enumerates the VM Templates registered in the target datacenter. Only name is currently displayed.

-f FOLDER       - Look inside the designated folder, default is the root folder

knife vsphere customization list

Enumerates the customization specifications registered in the target datacenter. Only name is currently displayed.

knife vsphere vm clone

Clones an existing VM template into a new VM instance, optionally applying an existing customization specification. If customization arguments such as --chost and --cdomain are specified, or if the customization specification fetched from vSphere is considered, a default customization specification will be attempted.

  • For windows, a sysprep based unattended customization in workgroup mode will be attempted (host name being the VM name unless otherwise specified).

  • For Linux, a fixed named customization using the vmname as the host name unless otherwise specified.

This command has many options which which to customize your VM. The most important part of this is the initial template. We have some guidance on how to make a template

Chef bootstrap options

These options alter the way that your VM will be bootstrapped with Chef after it is created. It is not necessary to bootstrap the VM, but at the very least --bootstrap is required to do so.

--bootstrap - Bootstrap the VM after cloning. Implies --start
--bootstrap-ipv4 - Force using an IPv4 address when a NIC has both IPv4 and IPv6 addresses.
--bootstrap-msi-url URL - Location of the Chef Client MSI if not default from chef.io
--bootstrap-nic INTEGER - Network interface to use when multiple NICs are defined on a template.
--bootstrap-proxy PROXY_URL - The proxy server for the node being bootstrapped
--bootstrap-vault-file VAULT_FILE - A JSON file with a list of vault(s) and item(s) to be updated
--bootstrap-vault-item VAULT_ITEM - A single vault and item to update as "vault:item"
--bootstrap-vault-json VAULT_JSON - A JSON string with the vault(s) and item(s) to be updated
--bootstrap-version VERSION - The version of Chef to install
--fqdn SERVER_FQDN - Fully qualified hostname for bootstrapping
--hint HINT_NAME[=HINT_FILE] Specify Ohai Hint to be set on the bootstrap target.  Use multiple --hint options to specify multiple hints.
--ssh-identity-file IDENTITY_FILE - SSH identity file used for authentication
--json-attributes - A JSON string to be added to the first run of chef-client
--node-name NAME - The Chef node name for your new node
--ssh-verify-host-key - Verify host key. Default is 'always'. Available options are 'always' ,'accept_new accept_new_or_local_tunnel' and  'never'
--node-ssl-verify-mode [peer|none] - Whether or not to verify the SSL cert for all HTTPS requests
--prerelease - Install the pre-release chef gems
--run-list RUN_LIST - Comma separated list of roles/recipes to apply
--secret-file SECRET_FILE - A file containing the secret key to use to encrypt data bag item values
--connection-password PASSWORD - SSH password / winrm password
--connection-port PORT - SSH port / winrm port
--connection-user USERNAME - SSH username / winrm username
--sysprep_timeout TIMEOUT - Wait TIMEOUT seconds for sysprep event before continuing with bootstrap
--winrm-authentication-protocol AUTHENTICATION_PROTOCOL. The authentication protocol used during WinRM communication. The supported protocols are basic,negotiate,kerberos. Default is 'negotiate'.
--winrm-codepage Codepage    The codepage to use for the winrm cmd shell
--winrm-shell SHELL          The WinRM shell type. Valid choices are [cmd, powershell, elevated]. 'elevated' runs powershell in a scheduled task
--winrm-ssl-verify-mode SSL_VERIFY_MODE   The WinRM peer verification mode. Valid choices are [verify_peer, verify_none]
--winrm-ssl  User ssl WinRM transport type
--tags TAG1,TAG2 - Tag the node with the given list of tags

Customization options

These options are related to the customization of the VM by the vSphere agent. They include hardware settings and networking.

--ccpu CUST_CPU_COUNT - Number of CPUs
--ccorespersocket CUST_CPU_CORES_PER_SOCKET - Number of CPU Cores per Socket
--cdomain CUST_DOMAIN - Domain name for customization
--cgw CUST_GW - CIDR IP of gateway for customization
--cdnsips CUST_DNS_IPS - Comma-delimited list of DNS IP addresses
--cdnssuffix CUST_DNS_SUFFIXES - Comma-delimited list of DNS search suffixes
--chostname CUST_HOSTNAME - Unqualified hostname for customization
--cips CUST_IPS - Comma-delimited list of CIDR IPs for customization, or *dhcp* to configure that interface to use DHCP
--cmacs CUST_MACS - Comma-delimited list of MAC addresses, or *auto* to configure that interface to use automatically generated MAC address
--cplugin CUST_PLUGIN_PATH - Path to plugin that implements KnifeVspherePlugin.customize_clone_spec and/or KnifeVspherePlugin.reconfig_vm
--cplugin-data CUST_PLUGIN_DATA - String of data to pass to the plugin.  Use any format you wish.
--cram CUST_MEMORY_GB - Gigabytes of RAM
--cram_reservation CUST_MEMORY_RESERVATION_GB - Gigabytes of RAM
--cspec CUST_SPEC - The name of any customization specifications that are defined in vCenter to apply
--ctz CUST_TIMEZONE - Timezone in valid 'Area/Location' format
--cvlan CUST_VLANS - Comma-delimited list of VLAN names for the network adapters to join
--disable-customization - By default customizations will be applied to the customization specification (see below).  Disable these convention with this switch (default value is `false`)
--random-vmname - Creates a random VMNAME starts with vm-XXXXXXXX
--random-vmname-prefix - Change the VMNAME prefix

VMware options

These options alter the way the VM is created, such as to decide where it is placed.

--datastore STORE    - The datastore into which to put the cloned VM
--datastorecluster STORE - The datastorecluster into which to put the cloned VM
--dest-folder FOLDER - The folder into which to put the cloned VM
--resource-pool POOL|CLUSTER - The resource pool into which to put the cloned VM. Also accepts a cluster name.
--start - Start the VM after cloning.
--sw-uuid SWITCH_UUIDS - Comma-delimited list of virtual switch UUIDs to attach to the network adapters, or *auto* to automatically assign virtual switch
--template TEMPLATE - The source VM / Template to clone from

Examples

$ knife vsphere vm clone NewNode --template UbuntuTemplate --cspec StaticSpec \
    --cips 192.168.0.99/24,192.168.1.99/24 \
    --chostname NODENAME --cdomain NODEDOMAIN

The customization specification defaults can be disabled using the --disable-customization true switch. If you specify a --cspec with this option, that spec will still be applied.

NOTE: if you are specifying a --cspec and the cloning process appears to not be properly applying the spec as defined on vSphere, consider using --disable-customization true as the conventions described above could be erroneously interfering with the spec as defined on vSphere.

Customization specifications can also be specified in code using the --cplugin and/or --cplugin-data arguments. See the plugins section for examples.

The --bootstrap-vault-* options can be used to send chef-vault items to be updated during the hand-off to knife bootstrap.

Example using --bootstrap-vault-json:

$  knife vsphere vm clone NewNode UbuntuTemplate --cspec StaticSpec \
    --cips 192.168.0.99/24,192.168.1.99/24 \
    --chostname NODENAME --cdomain NODEDOMAIN \
    --start true --bootstrap true \
    --bootstrap-vault-json '{"passwords":"default","appvault":"credentials"}'

knife vsphere vm show VMNAME PROPERTY (PROPERTY)

Shows one or more properties of the VM.

See "http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html" for allowed values.

Please note that this command starts at the vm object, where the corresponding knife vsphere vm config command focuses entirely on a customization specification. This gives you more flexibility in what you can query, but means you need to do some translations if you want to read old values and make a change. For example, you would query config.hardware.numCPU with this command but set numCPUs.

Examples:

knife vsphere vm show myvirtualmachine config.hardware.memoryMB config.hardware.numCPU -F json

knife vsphere vm config VMNAME PROPERTY VALUE (PROPERTY VALUE)

Sets a vSphere property (or series of properties), such as CPU or disk, on a VM

See "http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.vm.ConfigSpec.html" for allowed PROPERTY values (any property of type xs:string or numeric is supported)."

Examples:

$ knife vsphere vm config myvirtualmachine memoryMB 4096

knife vsphere vm toolsconfig VMNAME PROPERTY VALUE

--empty           - allows clearing string properties

Sets properties in tools property. See "https://www.vmware.com/support/developer/vc-sdk/visdk25pubs/ReferenceGuide/vim.vm.ToolsConfigInfo.html" for available properties and types.

Examples:

$ knife vsphere vm toolsconfig myvirtualmachine syncTimeWithHost false
$ knife vsphere vm toolsconfig myvirtualmachine pendingCustomization -e

knife vsphere vm delete NAME

Deletes an existing VM, removing it from vSphere inventory and deleting from disk, optionally deleting it from Chef as well.

--purge|-P        - Delete the client and node from Chef as well
-N                - Specify the name of the node and client to delete if it differs from NAME (requires -P)

knife vsphere vm snapshot VMNAME

Manages the snapshots for an existing VM, allowing for creation, removal, and reverting of snapshots.

--list            - List the current tree of snapshots and include snapshot creation timestamp
--create SNAPSHOT - Create a new snapshot off of the current snapshot
--remove SNAPSHOT - Remove a named snapshot.
--revert SNAPSHOT - Revert to a named snapshot.
--revert-current  - Revert to current snapshot.
--start           - Starts the VM after a successful revert
--wait            - Wait for creation/removal to complete rather than returning immediately
--find            - Find the VM instead of specifying the folder with -F
--dump-memory     - Dump the memory when creating the snapshot (default: false)
--quiesce         - Quiesce the VM before snapshotting (default: false)
--snapshot-descr DESCR - Include a description when creating a snapshot

knife vsphere vm cdrom

--datastore DATASTORE - Datastore the image is stored in
--iso                 - Path and filename of the ISO
--attach              - Attach the iso immediately
--disconnect          - Disconnect any iso currently attached
--recursive           - Search for the VM recursively
--folder              - Search for the VM in the specified folder
--on_boot BOOL        - Set the Attach On Boot Boolean

knife vsphere vm disk extend

--diskname DISKNAME - The name of the disk that will be extended (use when vm has multiple disks)

Note: SIZE is in kilobytes

knife vsphere vm disk list

Lists the disks attached to VMNAME

knife vsphere datastore list

Lists all known datastores with capacity and usage

knife vsphere datastore maxfree

Gets the datastore with the most free space

--regex           - Pattern to match the datastore name
--vlan            - Require listed vlan available to datastore's parent
--pool            - Pool or Cluster to search for datastores in

knife vsphere datastore file

Uploads files to a datastore and downloads files from a datastore

--upload-file       - Upload specified local file to remote
--download-file     - Download specified remote file to local
--remote-file FILE  - Remote file name and path
--local-file FILE   - Local file name and path

knife vsphere datastorecluster list

Lists all known datastorecluster with capacity and usage

knife vsphere datastorecluster maxfree

Gets the datastorecluster with the most free space

--regex           - Pattern to match the datastore name

knife vsphere vm execute VMNAME COMMAND ARGS

Executes a program on the guest. Requires vCenter 5.0 or higher.

Command path must be absolute. For Linux guest operating systems, /bin/bash is used to start the program. For Solaris guest operating systems, /bin/bash is used to start the program if it exists. Otherwise /bin/sh is used.

Arguments are optional, and allow for redirection in Linux and Solaris.

--exec-user USERNAME - The username on the guest to execute as.
--exec-passwd PASSWD - The password for the user executing as.
--exec-dir DIRECTORY - Optional: Working directory to execute in. Will default to $HOME of user.

Example:

knife vsphere vm execute myvirtualmachine --exec-user root --exec-passwd 'password' -- /sbin/iptables -F

knife vsphere vm vnc set VMNAME

Enable VNC remote console.

Required arguments:

--vnc-port PORT           -Port to run VNC on
--vnc-password PASSWORD   -Password for connecting to VNC

knife vsphere vm vmdk add VMNAME DISKSIZE_GB

Adds VMDK to VMNAME, given a disk size in Gigabytes.

Optional arguments

--vmdk-type TYPE - VMDK type, "thick" or "thin", defaults to "thin"

knife vsphere vm markastemplate VMNAME

Will mark the VM as a template rather than a runnable VM. By default the search will start at the root folder. --folder should be specified if traversing should be in some other folder than the root. Once found the VM will be converted into a template. This means the VM will become a template and no longer be available as a Virtual Machine. The name given to the template will be the name of VM from which it was created.

knife vsphere hosts list --pool

Lists all hosts in given Pool

knife vsphere vm migrate VMNAME

Migrate VM to resource pool/datastore/host. Resource pool and datastore are mandatory.

--folder FOLDER             - folder in which to search for VM
--resource-pool POOL        - destination resource pool
--dest-host HOST            - destination host (optional)
--dest-datastore DATASTORE  - destination datastore, accessible to HOST
--priority PRIORITY         - migration priority (optional, default defaultPriority )

knife vsphere vm net STATE VMNAME

Set networking state for VMNAME by connecting/disconnecting network interfaces. Possible states are up and down.

knife vsphere vm network set VMNAME NETWORKNAME

Set NETWORKNAME on first interface of VMNAME. Works for both standard and distributed switches.

--nic INTEGER     - NIC to change (optional, default 0)

knife vsphere vm network set example1.test.com vlan123
knife vsphere vm network set example2.test.com vlan234 --nic 1

knife vsphere vm network add VMNAME NETWORKNAME

Add a network card to a VM and connect it to a network.

--adapter-type STRING      - Adapter type eg e1000,vmxnet3
--mac-address STRING       - Adapter MAC address eg. AA:BB:CC:DD:EE:FF

knife vsphere vm network list VMNAME

List the network cards and their VLAN that are connected to a VM.

knife vsphere vm network delete VMNAME NICNAME

Delete a network card from a VM.

knife vsphere vm wait sysprep VMNAME

Wait for vm finishing Sysprep

--sleep SLEEP      - The time in seconds to wait between queries for CustomizationSucceeded event. Default: 60 seconds
--timeout TIMEOUT  - The timeout in seconds before aborting. Default: 300 seconds

knife vsphere cpu ratio

Lists the ratio between assigned virtual CPUs and physical CPUs on all hosts.

Example:

$ knife vsphere cpu ratio
Output:
### Cluster Cluster1 ###
host1.domain.com: 1.8125
host2.domain.com: 2.40625
host3.domain.com: 1.8125

### Cluster Cluster2 ###
host4.domain.com: 1.8125
host5.domain.com: 2.40625

knife vsphere vm move VMNAME

Moves the VM to other datastores or to rename it.

--dest-name NAME      - Destination name of the VM or template
--dest-folder FOLDER  - The destination folder into which the VM or template should be moved
--datastore STORE     - The datastore into which to put the cloned VM
--thin-provision      - Indicates whether disk should be thin provisioned.
--thick-provision     - Indicates whether disk should be thick provisioned.

Recursively prints all the folders in the datacenter.

knife vsphere vm property get VMNAME PROPERTY

Gets a vApp property on VMNAME

knife vsphere vm property set VMNAME PROPERTY VALUE

Sets a vApp property on VMNAME to the given value

--ovf-environment-transport STRING  - Comma delimited string.  Configures the transports to use for properties. Supported values are: iso and com.vmware.guestInfo.

knife vsphere folder list

Recursively prints all the folders in the datacenter.

knife vsphere pool show POOLNAME QUERY

Shows information (hosts, networks, resources) about a pool/compute resource.

See "http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.ComputeResource.html\" for allowed QUERY values.".

knife vsphere vlan list

Lists all the VLANs in the datacenter

knife vsphere vlan create NAME VID

Creates a vlan (port group on a distributed virtual switch) with the given name and VLAN ID. If you have multiple distributed switches then use the --switch option to set the switch

Developing, or using the latest code

The master version of this code may be ahead of the gem itself. If it's in master you can generally consider it ready to use. To use master instead of what's published on Ruby gems:

$ gem uninstall knife-vsphere
$ git clone [email protected]:chef/knife-vsphere.git # or your fork
$ cd knife-vsphere
$ rake build                                           # Take note of the version
$ gem install pkg/knife-vsphere-1.1.1.gem              # Use the version above

If you are doing development, then you can run the plugin out of a checked out copy of the source:

$ bundle install # only needs to be done once
$ bundle exec knife vsphere ...

Plugins

knife-vsphere supports some plugins, currently only for the clone operation.

Plugins let you write code to further customize the operation you are sending to vCenter.

The basic idea is that plugins expose well known methods to knife, which are then run at particular times. The values returned from your methods are passed directly to vSphere.

Below are examples of the potential implementations that would be saved to an rb file and passed in the --cplugin argument.

Getting help

If the software isn't behaving the way you think, or you're having trouble doing something, we're happy to help. Try this checklist:

  • Are you running the latest version? gem list knife-vsphere. You can always upgrade with gem install knife-vsphere
  • Try running the same command with -VV to add additional logging messages
  • Are there any errors in the vSphere console or logs?
  • Search for known issues at https://github.com/chef/knife-vsphere/issues

If you're still having problems, head on over to the issues page and create a new issue. Please include:

  • A description of what you are trying to do, what you are seeing
  • The version number of knife-vsphere and of vSphere itself
  • The exact command you're running and the output (sanitize anything you don't want public!)

License

Authors

Copyright
  Copyright Β© 2011-2013 Ezra Pagel
  Copyright Β© 2015-2017 Chef Software, Inc
VMware vSphere is a trademark of VMware, Inc.

Apache License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Software changes provided by Nicholas Brisebois at Dell SecureWorks. For more information on Dell SecureWorks security services please browse to http://www.secureworks.com

Β© Dell SecureWorks 2015

More Repositories

1

chef

Chef Infra, a powerful automation platform that transforms infrastructure into code automating how infrastructure is configured, deployed and managed across any environment, at any scale
Ruby
7,596
star
2

bento

Packer templates for building minimal Vagrant baseboxes for multiple platforms
HCL
4,220
star
3

omnibus

Easily create full-stack installers for your project across a variety of platforms.
Ruby
1,269
star
4

ohai

Ohai profiles your system and emits JSON
Ruby
672
star
5

chef-zero

Simple, easy-run, fast-start in-memory Chef server for testing and solo purposes
Ruby
534
star
6

chef-vault

Securely manage passwords, certs, and other secrets in Chef
Ruby
407
star
7

knife-ec2

Chef knife plug-in for AWS EC2
Ruby
403
star
8

chef-server

Chef Infra Server is a hub for configuration data; storing cookbooks, node policies and metadata of managed nodes.
Erlang
279
star
9

automate

Chef Automate provides a full suite of enterprise capabilities for maintaining continuous visibility into application, infrastructure, and security automation.
Go
227
star
10

supermarket

Chef's community platform
Ruby
214
star
11

knife-windows

Plugin for Chef's knife tool for working with Windows nodes
Ruby
151
star
12

omnibus-software

Open Source Software for use in Omnibus built packages
Ruby
133
star
13

chef-workstation

Chef Workstation gives you everything you need to get started with Chef, so you can automate how you audit, configure, and manage applications end environments.
Go
133
star
14

mixlib-shellout

mixin library for subprocess management, output collection
Ruby
132
star
15

chef-web-docs

All The Documentation
HTML
127
star
16

mixlib-cli

A mixin for creating command line applications - gives an easy DSL for argument specification and processing
Ruby
123
star
17

knife-openstack

Chef Infra knife plug-in for OpenStack
Ruby
120
star
18

cookstyle

A linting tool that helps you to write better Chef Infra cookbooks and InSpec profiles by detecting and automatically correcting style, syntax, and logic mistakes in your code.
Ruby
107
star
19

os_release

A repo containing the /etc/os-release file from various Linux distros
81
star
20

chef-oss-practices

Documentation and Practices for Open Source Development at Chef
Ruby
81
star
21

knife-azure

Chef knife plug-in for Microsoft Azure
Ruby
72
star
22

artifactory-client

A simple, lightweight Ruby client for interacting with the Artifactory API.
Ruby
68
star
23

knife-google

Chef knife plug-in for Google Compute
Ruby
67
star
24

win32-service

A Ruby library that allows users to inspect, control or create services on MS Windows
Ruby
65
star
25

mixer

Mix in functions from other modules
Erlang
64
star
26

concrete

Concrete enhances your rebar based Erlang project by providing a common Makefile wrapper, a dialyzer make target that caches PLT analysis of your project's dependencies, and a mechanism to specify development only dependencies.
Erlang
56
star
27

mixlib-config

A simple class based Config mechanism, similar to the one found in Chef
Ruby
51
star
28

sqerl

General purpose RDBMS abstraction layer
Erlang
42
star
29

vscode-chef

Chef Infra Extension for Visual Studio Code
TypeScript
39
star
30

cheffish

Resources and tools for testing and interacting with Chef and Chef Server.
Ruby
39
star
31

knife-tidy

Report on stale Chef Server nodes/cookbooks, clean those up and additionally clean data integrity issues from a knife-ec-backup object based backup!
Ruby
37
star
32

homebrew-chef

A homebrew tap for ChefDK, Workstation, and InSpec
Ruby
36
star
33

mixlib-log

A simple class based Log mechanism, similar to Merb and Chef, that you can mix in to your project.
Ruby
34
star
34

effortless

Automated best practices for Chef Infra and Chef InSpec
Shell
33
star
35

chef-load

chef-load - a tool for simulating load on a Chef Infra Server and/or a Chef Automate server
Roff
32
star
36

knife-ec-backup

Backup and restore Chef Infra Server in a repository-compatible format
Ruby
31
star
37

mini_s3

Minimal AWS S3 client for Erlang
Erlang
28
star
38

okta_aws

Tool for accessing the AWS API for an account you normally access via okta
Python
27
star
39

dep-selector

Fast Dependency Solver for Ruby using Gecode
Ruby
25
star
40

omnitruck

Web service to automate the release of Omnibus artifacts
Ruby
25
star
41

win32-process

A Ruby library that adds or redefines several methods for the Process module
Ruby
25
star
42

kitchen-vcenter

A test-kitchen driver for vCenter REST API
Ruby
25
star
43

omnibus-ctl

Provides service control for omnibus packages
Ruby
23
star
44

mixlib-authentication

AuthN signing and verification. Appears in both the client and server
Ruby
22
star
45

knife-cloud

Library for Chef knife cloud plugins
Ruby
18
star
46

win32-taskscheduler

A Ruby interface for the task scheduler on MS Windows
Ruby
17
star
47

mixlib-versioning

General purpose Ruby library that allows you to parse, compare, and manipulate version strings in multiple formats.
Ruby
17
star
48

win32-eventlog

The win32-eventlog library provides a Ruby interface for reading from and writing to the Windows Event Log
Ruby
17
star
49

chefstyle

Version Pinned RuboCop with Chef approved Cop list for linting software - NOT FOR COOKBOOKS
Ruby
15
star
50

chef-cli

The 'chef' command line tool included in Chef Workstation
Ruby
14
star
51

win32-file

Extra methods, and redefined methods, for the File class on MS Windows
Ruby
14
star
52

anka-buildkite-plugin

Run Buildkite steps inside Veertu Anka Virtual Machines
Shell
14
star
53

appbundler

Generate locked binstubs for ruby applications
Ruby
14
star
54

stats_hero

General purpose stats collection
Erlang
13
star
55

wmi-lite

Lightweight, low-dependency wrapper for basic WMI functionality on Windows.
Ruby
13
star
56

knife-vrealize

Plugin for Chef's knife tool to interact with VMware vRealize products
Ruby
13
star
57

chef-apply

The ad-hoc execution tool for the Chef ecosystem.
Ruby
13
star
58

ffi-libarchive

A Ruby FFI binding to libarchive.
Ruby
13
star
59

mixlib-install

A library for interacting with Chef Software Inc's software distribution systems.
Ruby
12
star
60

chef_authn

Erlang API request authentication signing and verification for Chef
Erlang
11
star
61

ffi-yajl

Ruby FFI gem wrapper around yajl2 library
Ruby
11
star
62

corefoundation

FFI based Ruby bindings for the CoreFoundation frameworks
Ruby
11
star
63

fixie

Low level manipulation tool for chef in sql
Ruby
10
star
64

dep-selector-libgecode

Bundled Gecode Libraries for dep-selector
Ruby
10
star
65

win32-certstore

Ruby library for accessing the certificate store on Windows
Ruby
10
star
66

chef-workstation-app

The Chef Workstation desktop application.
TypeScript
10
star
67

win32-security

A Ruby interface for security aspects of MS Windows
Ruby
9
star
68

knife-vcenter

Chef knife plug-in for VMware REST API
Ruby
9
star
69

architecture-center

Ruby
9
star
70

win32-dir

A series of constants, and extra or redefined methods, for the Dir class on Windows
Ruby
8
star
71

chef_backup

A library to backup an Chef server
Ruby
8
star
72

chef-vault-testfixtures

provides an RSpec shared context for testing Chef cookbooks that use chef-vault
Ruby
7
star
73

opscoderl_httpc

Opscode helper application for being an HTTP client
Erlang
7
star
74

license-acceptance

Chef Software libraries for accepting usage license
Ruby
7
star
75

rubydistros

Dockerfiles for Ruby on various Linux distros
Dockerfile
7
star
76

win32-mmap

A Ruby interface for memory mapped files on MS Windows
Ruby
7
star
77

chef-analyze

A CLI to analyze artifacts from a Chef Infra Server
Go
6
star
78

win32-event

A Ruby interface to Event objects on MS Windows
Ruby
6
star
79

license_scout

Discovers license information of the dependencies of a project.
Ruby
6
star
80

.github

.github files that are inherited by all org repos unless specifically included in a repo
6
star
81

cookbook-omnifetch

Fetch Chef Cookbooks from Various Sources to a Local Cache
Ruby
6
star
82

win32-ipc

A Ruby abstract base class for synchronization objects on MS Windows
Ruby
5
star
83

github-workflows

Github Actions Workflows
5
star
84

appbundle-updater

A little help when you want to update an appbundled project inside of a Chef/ChefDK omnibus package
Ruby
5
star
85

ci-studio-common

Shared helpers for use inside CIs (like Travis) and a Habitat Studio
Go
5
star
86

omnibus-toolchain

Omnibus packaging for Omnibus toolchain
Ruby
5
star
87

chef-web-core

Shared resources for Chef web properties
Ruby
5
star
88

gatherlogs-reporter

Inspec profiles for examining gatherlog output from chef-products for support.
Ruby
5
star
89

chocolatey-packages

PowerShell
4
star
90

compliance-workshop-environment

Ruby
4
star
91

inspec-extra-resources

Ruby
4
star
92

folsom_graphite

Send data from folsom automatically to graphite
Erlang
4
star
93

chef-powershell-shim

.NET 4.0/COM wrapper around PowerShell host
Ruby
4
star
94

cookstylist

Cookstyle GitHub app
Ruby
4
star
95

automate-liveness-agent

Agent that sends "keep alive" messages to Chef Automate
Ruby
4
star
96

community_cookbook_releaser

A simple script to aid in version bumps and changelog generation for Chef managed community cookbooks
Ruby
4
star
97

habitat_exporter

Go
4
star
98

mixlib-archive

A very simple gem to create and extract archives.
Ruby
4
star
99

win32-mutex

A Ruby interface for mutexes on MS Windows
Ruby
3
star
100

chef_dictionary

A dictionary file of words in the Chef ecosystem
Ruby
3
star