Skip to content

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - praymann/sortinghat: Have auto-scaling instances name themselves! · GitHub
Skip to content

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Sortinghat

Sortinghat is a unqiue Ruby gem that allows AWS AutoScaling instances to name themselves.

We all understand that naming your cattle is bad, they shouldn't be pets.. but hostnames are handy and readable, and [insert reason].

When the Sorting Hat is given specific arguments, it can find the gaps in current prefixes or +1 from the last current prefix and name the instance accordingly; along with updating Route53.

It follows a specific pattern for hostnames/fqdn:

[client]-[environment]-[type][prefix].[domain].com.

For example:

nike-prod-nginx09.prod-nike.com

Installation:

Install however you please to your AMI(s) with:

$ gem install sortinghat

Requirements:

The gem itself was developed under Ruby 2.0.0 to work with CentOS 7.

It requires the following gems:

  • aws-sdk 2.1.2
  • pure_json

The v2.1.2 dependency comes from the fact that as of this writting the latest codedeploy-agent (installed via .rpm) breaks if it does not have v2.1.2.

During actually usage, the gem requires that the instance have the following IAM actions allowed via policy:

  • autoscaling:DescribeAutoScalingInstances
  • autoscaling:DescribeAutoScalingGroups
  • ec2:DescribeInstances
  • ec2:CreateTags
  • route53:ListHostedZones
  • route53:ChangeResourceRecordSets

Usage:

Note: The Sorting Hat requires root privileges to write to files under /etc/.

Have cloud-init, cfn-init, or [x/y/z], issue the following command:

$ sortinghat -c [client] -e [environment] -t [type] -r [region] -z [domain]

Note: [domain] should be in the format of [domain].com, just like the AWS Console reports for the HostedZone. No need to add the trailing dot, it will be added should you forget.

The Sorting Hat will log to syslog for information.

The Sorting Hat may be re-run, provided you remove the empty file located at '/etc/.sorted'.

Development

Need to develop on an EC2 instance with metadata available or spoof it somehow.

Clone:

$ git clone https://github.com/praymann/sortinghat

Execute:

$ bundle install

Run:

$ bundle exec bin/sortinghat -h

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/praymann/sortinghat.

License

The gem is available as open source under the terms of the MIT License.

About

Have auto-scaling instances name themselves!

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages