Skip to content

Instantly share code, notes, and snippets.

@ernestas-poskus
Forked from ipedrazas/knife cheat
Created March 5, 2019 11:50
Show Gist options
  • Save ernestas-poskus/f68419cc65523f44a3c00fa7e44eaa1d to your computer and use it in GitHub Desktop.
Save ernestas-poskus/f68419cc65523f44a3c00fa7e44eaa1d to your computer and use it in GitHub Desktop.

Revisions

  1. @ipedrazas ipedrazas revised this gist Oct 15, 2014. No changes.
  2. @ipedrazas ipedrazas created this gist Oct 15, 2014.
    124 changes: 124 additions & 0 deletions knife cheat
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,124 @@
    # knife cheat

    ## Search Examples

    knife search "name:ip*"
    knife search "platform:ubuntu*"
    knife search "platform:*" -a macaddress
    knife search "platform:ubuntu*" -a uptime
    knife search "platform:ubuntu*" -a virtualization.system
    knife search "platform:ubuntu*" -a network.default_gateway
    knife search "platform:*" -a languages.ruby.version
    knife search "platform:*" -a kernel.machine
    knife search users "groups:admin" -i
    knife role list

    ## SSH Examples

    knife ssh "name:arlo*" -x root -P PASSWORD uptime
    knife ssh "NOT platform:win*" -P PASSWORD ls
    knife ssh "chef_environment:Helix-Uptime-VM and NOT platform:win*" \
    -x root -P PASSWORD uptime

    ##Chef Client

    How do I automatically bootstrap a linux box?

    knife bootstrap 10.0.0.2 -N www.racter.com -x root -P PASSWORD

    How do I make the chef client run so it will apply my new recipes?

    knife winrm "platform:windows" -P PASSWORD chef-client
    knife ssh "NOT platform:win*" -x root -P PASSWORD chef-client

    How do I make sure the chef client on the nodes is calling home?

    knife cookbook site install chef-client
    knife cookbook upload chef-client
    knife node run_list add NODENAME 'recipe[chef-client]'

    ##Cookbooks

    How do I create a new cookbook?

    cd ~/chef-repo
    rake new_cookbook COOKBOOK=MyNew-Controller

    How do I upload my new cookbook to the chef server so I can use it?

    knife cookbook upload <cookbookname> –include-dependencies

    How do I download existing recipes from the Chef Community?

    knife cookbook site install awsclient

    How do I add a new recipe to every node?

    knife exec -E "nodes.transform(“chef_environment:dev“) \
    {|n| puts n.run_list.remove(“recipe[chef-client::upgrade]“); n.save }"



    knife exec -E "nodes.find(“role:web_server”) \
    {|n| n.run_list.remove(“role[web_server]“); }"
    knife exec -E "nodes.find(“name:test*”) \
    {|n| n.chef_environment(“dev”);n.save }"



    How do I download the recipes, environments, nodes and everything that is already uploaded to the chef server?

    knife download /

    ##EC2

    How do I launch a new server into the amazon cloud?

    knife ec2 server create -I ami-d0f89fb9 -x ubuntu \
    -E My-PreProduction-Env -r “role[BuildServer]” -g sg-d5d417be

    How do I shut down a old server in the amazon cloud?

    knife ec2 server delete i-234a334 –purge



    ###Nodes

    How do I move nodes between environments?

    #Move all the nodes in _default environment to the production-VM environment

    knife exec -E "nodes.transform(“chef_environment:_default”) \
    { |n| n.chef_environment(“production-VM”) }"

    Remove a recipe from all nodes in an Environment

    knife exec -E "nodes.transform(“chef_environment:dev”) \
    {|n| puts n.run_list.remove(“recipe[chef-client::upgrade]“); n.save }"



    #Roles

    How do I add a Linux role to all the boxes that are not window?

    knife exec -E "nodes.transform(“NOT platform:win*“) \
    {|n| puts n.run_list << “role[linux]“; n.save }"

    How do I remove a Linux role from all the boxes that are not windows?

    knife exec -E "nodes.transform(“NOT platform:win*“) \
    {|n| puts n.run_list.remove(“role[linux]“); n.save }"

    Remove all nodes from a given role

    knife exec -E "nodes.find(“role:web_server”) \
    {|n| n.run_list.remove(“role[web_server]“); n.save}"



    How do I add a role to an environment?

    knife exec -E 'nodes.transform("chef_environment:my-production-env") \
    {|n| puts n.run_list << "role[hosts_file]"; n.save }'