Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Knife sharp plugin

knife-sharp adds several handy features to knife, adapted to our workflow @ Fotolia. Features:

  • align : sync data bags, roles and cookbook versions between a local git branches and a chef server
  • backup : dump environments, roles and data bags to local json files
  • server : switch between chef servers using multiple knife.rb config files

Tell me more

When you want an environment to reflect a given branch you have to check by hand (or using our consistency plugin), and some mistakes can be made. This plugin aims to help to push the right version into an environment.

It also allows to adopt a review workflow for main chef components :

  • Track data bags, roles (as JSON files) and cookbooks in your Chef git repository
  • Push each modification of any to peer-review
  • Once merged, upload every change with knife sharp align

Show me !

Align

$ git branch
...
master
* syslog_double
...
$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.16
...
$ knife sharp align syslog_double sandboxnico
Will change in environment sandboxnico :
* syslog gets version 0.0.17
Upload and set version into environment sandboxnico ? Y/N
Y
Successfull upload for syslog
Aligning 1 cookbooks
Aligning data bags
* infrastructure/mail data bag item is not up-to-date
Update infrastructure/mail data bag item on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping infrastructure/mail data bag item
Aligning roles
* Dev_Server role is not up-to-date (run list)
Update Dev_Server role on server ? Y/N/(A)ll/(Q)uit [N] n
* Skipping Dev_Server role

Then we can check environment :

$ knife environment show sandboxnico
chef_type: environment
cookbook_versions:
...
syslog: 0.0.17
...
$ knife sharp align syslog_double sandboxnico
Nothing to do : sandboxnico has same versions as syslog_double

It will upload the cookbooks (to ensure they meet the one on the branch you're working on) and will set the version to the required number.

Backup

Making a backup before a large change can be a lifesaver. Knife sharp can do it for you, easily

$ knife sharp backup
Backing up roles
Backing up environments
Backing up databags
$

All these items get stored in the place defined in your config file.

Server

$ knife sharp server
Available servers:
prod (/home/jamiez/.chef/knife-prod.rb)
>> dev (/home/jamiez/.chef/knife-dev.rb)
$ knife sharp server prod
The knife configuration has been updated to use prod.
$ knife sharp server
Available servers:
>> prod (/home/jamiez/.chef/knife-prod.rb)
dev (/home/jamiez/.chef/knife-dev.rb)

Configuration

Dependencies :

  • grit

The plugin will search in 2 places for its config file :

  • "/etc/sharp-config.yml"
  • "~/.chef/sharp-config.yml"

An example config file is provided in ext/.

A working knife setup is also required (cookbook/role/data bag paths depending on the desired features)

Cookbooks path & git

If your cookbook_path is not the root of your git directory then the grit gem will produce an error. This can be circumvented by adding the following directive in your config file :

global:
git_cookbook_path: "/home/nico/sysadmin/chef/"

As we version more than the cookbooks in the repo.

Logging

It's good to have things logged. The plugin can do it for you. Add this to your config file

logging:
enabled: true
destination: "~/.chef/sharp.log"

It will log uploads, bumps and databags to the standard logger format.

Credits

The damn good knife spork plugin from the etsy folks : https://github.com/jonlives/knife-spork

Idea for knife sharp server comes from https://github.com/greenandsecure/knife-block

License

3 clauses BSD

Authors

Nicolas Szalay | https://github.com/rottenbytes Jonathan Amiez | https://github.com/josqu4red

About

A knife plugin

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors