<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Sean Carolan on Medium]]></title>
        <description><![CDATA[Stories by Sean Carolan on Medium]]></description>
        <link>https://medium.com/@scarolan_hashi?source=rss-a87e3fdea4e0------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*mjbvgJGeL9E8sG1N.jpg</url>
            <title>Stories by Sean Carolan on Medium</title>
            <link>https://medium.com/@scarolan_hashi?source=rss-a87e3fdea4e0------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 09 Apr 2026 20:34:30 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@scarolan_hashi/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[HashiCorp Vault for the Non-Technical]]></title>
            <link>https://medium.com/hashicorp-engineering/hashicorp-vault-for-the-non-technical-79c11ca3a5b?source=rss-a87e3fdea4e0------2</link>
            <guid isPermaLink="false">https://medium.com/p/79c11ca3a5b</guid>
            <category><![CDATA[access-control]]></category>
            <category><![CDATA[passwords]]></category>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[encryption]]></category>
            <category><![CDATA[hashicorp-vault]]></category>
            <dc:creator><![CDATA[Sean Carolan]]></dc:creator>
            <pubDate>Wed, 27 May 2020 18:59:57 GMT</pubDate>
            <atom:updated>2020-05-27T20:35:38.841Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/899/1*2IgKk80AwTucv3SDTqDxGg.png" /><figcaption>Fun fact: The blocks on the logo represent a numeric keypad, like the ones on phones and ATM machines.</figcaption></figure><p><a href="https://www.vaultproject.io/">HashiCorp Vault</a>, or simply Vault for short, is a multi-cloud, API driven, distributed secrets management system. If none of that makes sense, fear not. Grab a cup of your favorite tea or coffee and spend five minutes while we explain HashiCorp Vault with simple analogies and a bit of cryptographic history.</p><h3>What is Secrets Management?</h3><p>Let’s start with secrets. Throughout history humans have built various ways to hide sensitive information or keep it secret. Sometimes we refer to this as cryptography, <a href="https://cs.stanford.edu/people/eroberts/courses/soco/projects/public-key-cryptography/history.html">the art of writing or solving codes</a>. One of the most common uses for cryptography is to keep sensitive data hidden from view. You could also call this <em>secrets management</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*o1ru-ft5t_fqUSP2LYYCNg.png" /><figcaption>The Scytale — an Ancient Greek Encryption Device</figcaption></figure><p>Secrets management is nothing new. One of the most common types of secret is the password. Passwords have been with us for <a href="https://en.wikipedia.org/wiki/Password#History">thousands of years</a>. Roman sentries would use passwords written on wooden tablets to protect their encampments from spies and enemies. Combination locks are a primitive form of password. And of course, passwords have been with us since the <a href="https://www.wired.com/insights/2014/04/evolution-authentication/">dawn of computing</a>.</p><h3>The Origins of the Computer Password</h3><p>Here’s a little known secret…computer passwords were never designed for security. The grandfather of the modern computer password, MIT professor Fernando Corbato, simply wanted a way to keep users’ files separate on a mainframe computer. This was back in 1961. It was only a year later that the world’s first documented incident of password theft occurred when another computer scientist managed to print a copy of the master password list. The passwords were soon common knowledge. Users began to log onto other accounts and <a href="https://www.wired.com/2012/01/computer-password/">taunt the lab director</a> with humorous messages in what may be the first documented incident of Internet trolling.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/780/1*xvdVGZy4S8MhILDEOiGkaw.jpeg" /><figcaption>Prof. Fernando “Corby” Corbató, inventor of the modern computer password</figcaption></figure><p>Passwords were a terrible security measure, and Professor Corbató <a href="https://www.businessinsider.com/inventor-of-the-password-2014-5">admitted as much in a 2014 interview</a>:</p><blockquote>“Unfortunately it’s become kind of a nightmare with the World Wide Web. I don’t think anybody can possibly remember all the passwords that are issued or set up. That leaves people with two choices. Either you maintain a crib sheet, a mild no-no, or you use some sort of program as a password manager. Either one is a nuisance.”</blockquote><p>The classic 80&#39;s hacker movie <a href="https://en.wikipedia.org/wiki/WarGames">WarGames</a> highlights our password problem perfectly. In the movie teenager David Lightman manages to guess Professor Falken’s password and gain back door access to the NORAD computer system, the W.O.P.R. If you haven’t seen WarGames yet, rent it this weekend and learn what it was like to <a href="https://www.youtube.com/watch?v=gsNaR6FRuO0">connect to the the net</a> back in 1983.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KgqsqkbEZIZHMnZTwnqQFw.jpeg" /><figcaption><strong>Movie Trivia:</strong> The WarGames NORAD command center was the most expensive movie set ever built. Flat screen monitors hadn’t been invented yet, so those are actually rear-projection movie screens.</figcaption></figure><p>For better or worse the computer password was here to stay. In the early days of the Internet nobody cared about security. It was just a bunch of college professors and students posting files and messages to newsgroups and bulletin board systems. As the internet continued to expand during the 80s, 90s and 2000s, password usage increased exponentially. Unfortunately, so also did password theft. Various attempts have been made over the years to improve password security. Most websites and applications have complexity and length requirements for passwords, making it even more onerous for users to remember them all.</p><h3>Personal Password Managers</h3><p>Enter the password manager. You may have heard of applications such as <a href="https://www.lastpass.com/">LastPass</a> or <a href="https://1password.com/">1Password</a>. These applications are designed to simplify things by giving you a password vault where you can store all your passwords. This way you only have to have one master password that can be used to unlock the rest of your passwords. Most modern web browsers also have built-in password storage that you can unlock with a master password or even a fingerprint. The basic idea is the same. Forget about memorizing all your passwords, just store them in a password vault and fetch passwords from the vault when you need them.</p><p>Think for a moment about all the websites and applications where you have an account. Each one of them is supposed to have its own separate, complex password that is not shared anywhere else. Now imagine this problem and multiply it a thousand fold. This is the problem faced by any organization that uses computers, which is basically all of them. Well, maybe not <a href="https://www.theatlantic.com/technology/archive/2010/11/would-the-amish-use-this-hand-cranked-laptop/65423/">the Amish</a>. But certainly every company has passwords and secrets that have to be managed.</p><p>You see, in the world of internet applications, passwords are just the tip of the iceberg. There are many other types of secrets that are used not only for humans to log onto machines and apps, but for machine-to-machine communication as well. The simple process of logging onto your bank’s website involves a complex web of transactions that may touch dozens or hundreds of different computers. All of that communication has to be safely encrypted and kept private to protect your personal financial data.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hDbWbj79iH8QKXMJzR0oWA.jpeg" /><figcaption>Computer Hacker or <a href="https://lotr.fandom.com/wiki/Nazg%C3%BBl">Nazgûl Ringwraith?</a></figcaption></figure><p>The basic problem is still the same. How do we protect secrets and sensitive data from prying eyes, while still being able to use those secrets for secure communication. It’s a tricky problem to solve.</p><h3>Use Case #1: Password Storage</h3><p>This is the problem that HashiCorp Vault aims to solve. How can large companies and organizations protect their passwords and other sensitive information? You can think of Vault as a kind of supercharged password manager that businesses use in the cloud to secure their secret data.</p><p>When you think of the word <em>vault</em>, you might imagine a huge safe in a bank with a big heavy door. Vault can certainly store your passwords, but it can do a lot more. Another useful analogy is the hotel front desk…</p><h3>Use Case #2: Dynamic Credentials</h3><p>Whenever you walk into a hotel and approach the check-in desk, what’s the first question the staff asks?</p><blockquote>“May I please see a valid form of identification and a credit card?”</blockquote><p>In order to check in and get your room keys you must <em>identify</em> yourself. Once you’ve provided a valid identity and proof that you have a reservation (and can pay for it), you’ll get some room keys. Most modern hotels use plastic key cards with a magnetic stripe. Depending on the length of your stay and type of reservation, your key cards will be able to access different parts of the hotel. Your keys will open your hotel room, the gym, the front door and perhaps the executive lounge if you have enough travel points. These hotel keys are uniquely coded for each guest, and they have an expiration date. After your reservation is complete the keys expire and no longer work to access anything in the hotel.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ABfpF_o_k2P_K3tSxeA1EA.jpeg" /><figcaption>Guild Member of the Society of the Crossed Keys — 1930</figcaption></figure><p>In this simple example, Vault is like the front desk of the hotel, while the rest of the hotel facility represents your IT infrastructure. Vault is the central location where you can identify as an application or human user, and fetch secrets that grant you access to different parts of the environment. For example, you may store the password to a Linux server in Vault, and allow access only to the sysadmin team.</p><p>Or you may have an application that needs the username and password for its database. Vault can even generate dynamic passwords that expire, just like those hotel room keys. If you lose your hotel key, no problem! Visit the front desk and they’ll make you another one. You will of course, have to produce some valid identification to get a new key. Just make sure you’re <a href="https://www.youtube.com/watch?v=Ek7AMJ5sL8g">wearing pants</a> if you get locked out of your room!</p><h3>Use Case #3: Encryption as a Service</h3><p>So far we’ve covered two of the main uses for Vault, namely password storage, and generating dynamic credentials that expire like hotel keys. Vault can also be used to encrypt any plain text into an encoded form that is nearly impossible to crack, even with a supercomputer. Think about that s<a href="https://en.wikipedia.org/wiki/Scytale">cytale</a> device in the photo earlier in this post. This was a simple encryption device used by ancient Greeks to deliver sensitive information on the battlefield. Cracking the code only requires a stick with the same diameter as the one used to encode the text. A more modern example would be the secret decoder ring, like the one featured in the movie A Christmas Story.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/659/1*GKdQrQNbrWwZOLkmZhdNLw.jpeg" /><figcaption>Poor Ralphie spent weeks decoding this advertisement for Ovaltine</figcaption></figure><p>The basic idea behind encryption as a service is just like that decoder ring or the Enigma machines of World War II. If you had the right formula or machine, you could encode and decode secret messages. Fortunately for us modern encryption is much harder to crack than a simple strap of leather wrapped around a belt. Vault is a super-powered decoder ring. It lets you encrypt any kind of sensitive data such as credit card numbers, personal information, or passwords. You can also use Vault to decrypt the same data. Or you can have one application perform the encryption, and another application do the decryption.</p><h3>Summary</h3><p>HashiCorp Vault, is a multi-cloud, API driven, distributed secrets management system. Vault can be used for the following purposes:</p><ul><li><a href="https://www.vaultproject.io/use-cases/secrets-management">Store any type of password</a> or secret data</li><li>Generate <a href="https://learn.hashicorp.com/vault/getting-started/dynamic-secrets">temporary, expiring credentials</a> that work like disposable hotel keys</li><li><a href="https://www.vaultproject.io/use-cases/data-encryption">Encrypt any type of sensitive data</a> so that it cannot be read by unauthorized individuals, even on untrusted networks</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=79c11ca3a5b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hashicorp-engineering/hashicorp-vault-for-the-non-technical-79c11ca3a5b">HashiCorp Vault for the Non-Technical</a> was originally published in <a href="https://medium.com/hashicorp-engineering">HashiCorp Solutions Engineering Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Deploy a Production Ready Vault Cluster on AWS in ~5 Minutes]]></title>
            <link>https://medium.com/@scarolan_hashi/deploy-a-production-ready-vault-cluster-on-aws-in-5-minutes-52fdc820d56f?source=rss-a87e3fdea4e0------2</link>
            <guid isPermaLink="false">https://medium.com/p/52fdc820d56f</guid>
            <dc:creator><![CDATA[Sean Carolan]]></dc:creator>
            <pubDate>Fri, 01 May 2020 20:40:46 GMT</pubDate>
            <atom:updated>2020-05-01T20:40:46.550Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/899/1*2IgKk80AwTucv3SDTqDxGg.png" /></figure><h3>What is this Vault thing, anyway?</h3><p><a href="https://www.vaultproject.io/">HashiCorp Vault</a> is a multi-cloud, API-driven secrets management system. You can use it to store passwords, keys and certificates. Vault can also handle many kinds of encryption and credentials management. You can use Vault to <a href="https://play.instruqt.com/hashicorp/tracks/vault-aws-dynamic-secrets">dispense temporary cloud credentials</a>, <a href="https://learn.hashicorp.com/vault/encryption-as-a-service/eaas-transit">encrypt sensitive data</a> like credit card numbers, or to <a href="https://www.vaultproject.io/docs/secrets/pki/">manage SSL certificates</a> for your applications. You can find a complete list of Vault Secrets Engines on <a href="https://www.vaultproject.io/docs/secrets/">the Vault Project website</a>.</p><p>Think of it as a Swiss Army knife for secrets management.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZWldZpUglXmXtpYXmDdv8Q.jpeg" /><figcaption>The Wenger Giant comes with a whopping *87* different tools</figcaption></figure><p>Sounds cool, right? But how do I get this nifty multipurpose secrets engine installed into my cloud account? This is not a simple process because there are quite a few moving parts. Vault is a highly-available application meaning that it runs on a cluster of machines. If one or two of those machines fails the cluster is designed to stay up and running. A properly configured Vault cluster should be able to withstand a natural disaster like a tornado or meteor strike. Well, maybe a <a href="https://www.youtube.com/watch?time_continue=7&amp;v=rnBvSNYy-EY&amp;feature=emb_logo">small meteor strike</a>.</p><h3>Highly Available and Disaster Resistant</h3><p>Here’s an example from our reference architecture that shows a typical garden variety Vault cluster running across three separate zones:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/841/1*ClAtilSFP0d2xNV35hKb4Q.png" /><figcaption>Open Source HashiCorp Vault Cluster with Consul Storage Backend</figcaption></figure><p>You might be curious why we have eight separate machines in the Vault cluster. Three of them are Vault servers, and there are five Consul servers on the backend that serve as our storage device. You can think of those Consul servers as a low-latency distributed storage disk. A little bit like a SAN or RAID array. The basic idea is to distribute the data across multiple locations so that if any two of them fail, your cluster will still remain operational. All the data is encrypted, but we store it in five separate locations just in case part of the cluster becomes unavailable.</p><p>Besides the eight cloud instances required to run the standard production architecture Vault cluster, there are several other parts that need to be configured. A valid SSL certificate is required for secure communication, and we also need a load balancer in front of the Vault cluster to route our traffic to the cluster nodes.</p><p><em>NOTE: If you want a more compact cluster that still offers high availability, check out the </em><a href="https://releases.hashicorp.com/vault/1.4.0-beta1/"><em>new integrated storage option for Vault</em></a><em>. This allows you to run a three-node Vault cluster that can tolerate the loss of a single node. This feature is currently in beta at the time of this writing.</em></p><h3>Complex Doesn’t Have to be Complicated</h3><p>That’s a lot of complexity. When you’re solving complex problems (such as managing your secrets safely on someone else’s network), sometimes you need a complex solution. That doesn’t mean installing Vault has to be complicated. You can use Infrastructure as Code to distill all the build steps into a simple document that defines the entire environment.</p><p>You’re probably thinking to yourself…why aren’t we using Terraform to do this? Terraform is an infrastructure as code tool and language that allows you to build cloud infrastructure on any platform. You can even <a href="https://github.com/hashicorp/terraform-aws-vault">install Vault with Terraform</a>. But not every shop uses Terraform. You might already be using Cloudformation for your other infrastructure. The great thing about HashiCorp tools is you can use them separately or together. In other words, you don’t require any Terraform expertise to get up and running with Vault.</p><h3>Easy Automated Deployment of Vault</h3><p>This blog post is for new and intermediate AWS users who want to get up and running quickly and securely with HashiCorp Vault, with minimal effort and setup time. We have built an <a href="https://aws.amazon.com/cloudformation/">AWS Cloudformation</a> template that builds a reference architecture Vault cluster from start to finish with only a few inputs required by the user. Wherever possible we have utilized AWS native services such as Route 53 DNS, Key Management Service (KMS), Secrets Manager and AWS Certificate Manager. The template and Packer scripts for building your AMIs can be found here:</p><p><a href="https://github.com/scarolan/vault-aws-cf/">https://github.com/scarolan/vault-aws-cf/</a></p><p>Here’s a quick overview of what gets built:</p><ul><li>VPC with 3 public and 3 private subnets</li><li>Operating system for Vault and Consul is CentOS 7</li><li>Operating system for the Bastion host is AWS Linux (latest)</li><li>3 Vault servers and 5 Consul servers distributed across the private subnets</li><li>A bastion host for connecting to the other servers, which are not directly accessible from the Internet</li><li>A real SSL certificate tied to your FQDN, managed by Amazon Certificate Manager</li><li>Automatic unsealing of Vault using AWS Key Management Service to store the unseal key</li><li>The Vault cluster will be ready in 10–15 minutes. The cluster comes up in an uninitialized state. The API listens on port 8200 and is accessible from the Internet.</li></ul><h3>Installation Prerequisites</h3><p>There are a couple of prerequisites that you’ll need to use this template. The first is building your source AMIs. HashiCorp has another great tool called <a href="https://packer.io/">Packer</a> that allows you to easily build custom AMIs with your own software and configuration on them. If you’ve never used Packer before, go take it for a spin and <a href="https://packer.io/intro/getting-started/build-image.html">build your first image</a>. The Packer templates will build one AMI for Vault, and a second AMI for your Consul storage backend. We won’t cover Packer details in this blog post.</p><p>The second prerequisite is a DNS zone hosted in <a href="https://aws.amazon.com/route53/">AWS Route 53</a>. If you purchase your domain name from AWS, they will also handle renewals automatically for you. The Route 53 zone is what allows you to automatically generate DNS host names and SSL certificates. In this blog post we’ll use fto.hashidemos.io as our DNS zone in all the examples.</p><p>Once you’ve got your AMIs built with Packer, and a domain or subdomain in a Route 53 Zone, you can use the <a href="https://github.com/scarolan/vault-aws-cf/blob/master/cloudformation/aws_vault_cf.yml">Cloudformation template</a>. Make sure your AMIs are configured in the Mappings section of the template. If you intend to build Vault clusters in different regions, you’ll need to build Packer AMIs for each region. For our example below we’ll be using the us-east-1 region.</p><h3>Build the Cluster via the AWS Console</h3><p>The rest of the steps can be completed on the AWS Console. Let’s walk through them. First you’ll log onto the AWS console and browse to the <a href="https://console.aws.amazon.com/route53/home?region=us-east-1">Route 53 controls</a>. Find the <strong>Hosted Zone ID </strong>for the zone you want to use with your Vault cluster. Make note of it as you’ll need it in a moment.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SB_ZjXhPzYMcM_dnazUY-w.png" /><figcaption>Save the Hosted Zone ID for later</figcaption></figure><p>Next, head over to the <a href="https://console.aws.amazon.com/cloudformation/home?region=us-east-1">Cloudformation settings</a> and click on <strong>Create Stack</strong>. We already have a template so you can select <strong>Template is Ready</strong>. You can store your template in Amazon S3, or you can upload it from your machine. If you’re uploading from your local machine, browse to the <strong>aws_vault_cf.yml </strong>file and upload it into the console:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sPw6prVEyIBEUydchUvV9g.png" /><figcaption>Upload Your Cloudformation Template</figcaption></figure><p>Click <strong>Next</strong> and fill in the required parameters. First you’ll need to give your Cloudformation stack a name. This name shows up in the console and can only have letters, numbers, and dashes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/791/1*Ku6G9-mmDEZtOY12_jt-TQ.png" /></figure><p>Set a hostname for your vault cluster. This must be the entire, fully-qualified domain name. Example: vaultdemo.fto.hashidemos.io</p><p>Next, choose three availability zones from the drop down list. It doesn’t matter which three you choose but you have to pick <a href="https://youtu.be/xOrgLj9lOwk?t=88">three, no more, no less</a>.</p><p>Select an SSH key from the drop-down list. This is in case you need to SSH into the bastion host, which is the only way to remotely connect to your backend machines.</p><p>Finally select the correct Route 53 zone from the drop-down list. This must match the FQDN you used for your Vault cluster!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/777/1*Wd0iMYHA9hrpk5BBgcF5SA.png" /><figcaption>Example Configuration for Vault Cluster.</figcaption></figure><p>That’s it! All the main setup steps are done. Click <strong>Next</strong> to continue and add any optional tags to your stack. The rest of the settings may be left at their defaults.</p><p>Before you hit the <strong>Create Stack</strong> button you’ll need to check this box to agree that this template will be allowed to create IAM resources. This is because our template creates roles that allow your Vault and Consul instances to talk to AWS services such as Secrets Manager and KMS. You can inspect the roles in the Cloudformation template if you want to see <a href="https://github.com/scarolan/vault-aws-cf/blob/master/cloudformation/aws_vault_cf.yml#L140-L146">what types of permissions</a> are granted.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*MWY4aNsLrlMcV_ZmQJKfqA.png" /><figcaption>Check that box and click “Create Stack” to start building your Vault cluster</figcaption></figure><p>There’s one last step you’ll need to do to finish building the Vault cluster. It only has to be done once per domain name. Head on over to the <a href="https://console.aws.amazon.com/acm/home?region=us-east-1#/">AWS Certificate Manager</a> page and you’ll see your new domain name with a Pending Validation status. Click the small arrows to reveal the blue <strong>Create record in Route 53</strong> button. Click the button to create a DNS record to verify your SSL certificate. This only needs to be done the first time you build a cluster with this domain name. Subsequent rebuilds will go faster and automatically use the already verified DNS.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*04BGiz-C9rOZMtrC_RdreQ.png" /><figcaption>Verify Ownership of your Domain Name</figcaption></figure><p>Now you can go back to the <a href="https://console.aws.amazon.com/cloudformation/">Cloudformation page</a> and watch your build finish. It can take up to 30 minutes to complete. Now, I know what you are thinking…“You said 5 minutes!”</p><p>Before you grab your torches and pitchforks, this only happens on the first build with a new DNS name and ACM certificate. Once the DNS record for your SSL certificate has been created and verified, subsequent rebuilds of the cluster go much faster as long as you use the same name. There’s nothing we can do about this initial setup delay. You may wish to do this step in advance for clusters that need to be up and running fast, for example as part of a disaster recovery plan. During testing we were timed the Cloudformation build which took just a little over five minutes:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/654/1*D-NEaLDG7MhTkNnU4WjyFA.png" /><figcaption>Ok, so we rounded down a little bit.</figcaption></figure><p>If you click on the <strong>Resources</strong> tab for your Cloudformation stack you can watch each of the different parts of your Vault cluster being built. There are 72 separate components defined in the template and they are all built in order. First Cloudformation lays down the network infrastructure, then it builds out your certificates, virtual machines, DNS record and load balancer.</p><p>When the stack is done building you’ll see the status change to CREATE_COMPLETE. This means that all the core infrastructure has been built, but your Vault cluster may not be ready for traffic yet. You can click on the <strong>Outputs</strong> tab to see the public URL of your Vault cluster:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qbEuLI_qj4AmZfESQ8ZSZw.png" /><figcaption>A Wild Vault Cluster Appears!</figcaption></figure><p>Click on that link to launch the Vault UI. You should see the initial Vault setup screen:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/836/1*nOmZOs0NwvNrdbsi-SfnYA.png" /></figure><p>Next you’ll create the master key that will be used to unseal your Vault. You can enter 1 for both <strong>Key shares</strong> and for <strong>Key threshold</strong>. This simply means that we don’t want to split the key into multiple parts. Click on the Initialize button.</p><p>Next you’ll want to copy your root token and unseal key and store them in a safe place. We recommend printing these out or saving them on a USB key, and storing them in a physical safe. These are important for disaster recovery or emergency situations. An encrypted copy of the master key is also saved in the storage backend, and it can only be decrypted with the correct <a href="https://learn.hashicorp.com/vault/operations/ops-autounseal-aws-kms">AWS KMS key</a>.</p><p>It can take two to three minutes after initialization for your Vault cluster to settle and start receiving requests. Click on <strong>Continue to Authenticate</strong> and use the root token to log in. If you get an error message just wait a minute or so, reload the page and log in again. Once the load balancer has found the primary vault node the cluster stabilizes and will be ready for API traffic. You’ll know it’s working when you are able to log in and see this screen:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/847/1*AFEhwkTYenu1gEJdL_tMKA.png" /><figcaption>Voila! A production-grade, highly available Vault cluster with auto-renewing SSL</figcaption></figure><p><strong>Congratulations! </strong>Your Vault cluster is ready for initial configuration and setup. We’ve got a whole bunch of tutorials on how to configure your Vault cluster with different secrets engines. You might want to try our <a href="https://learn.hashicorp.com/vault?track=secrets-management#secrets-management">Secrets Management</a> learning track to see what your new cluster can do.</p><p><em>Disclaimer: All of the software used in this blog post is open source. While you can use it in production, you need to be prepared to support it yourself. If you require commercial support for Vault please reach out to your local HashiCorp representative, or drop us a line via our contact page:</em></p><p><a href="https://www.hashicorp.com/contact/">Contact HashiCorp</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=52fdc820d56f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Stop Hammering Nails with a Screwdriver]]></title>
            <link>https://medium.com/hashicorp-engineering/stop-hammering-nails-with-a-screwdriver-9a2c6c5706ac?source=rss-a87e3fdea4e0------2</link>
            <guid isPermaLink="false">https://medium.com/p/9a2c6c5706ac</guid>
            <category><![CDATA[terraform]]></category>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[infrastructure-as-code]]></category>
            <category><![CDATA[provisioning]]></category>
            <dc:creator><![CDATA[Sean Carolan]]></dc:creator>
            <pubDate>Sun, 14 Jul 2019 14:17:54 GMT</pubDate>
            <atom:updated>2019-07-14T14:17:54.173Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Choosing the Right Provisioning Tool</em></p><p>You may have heard the saying “Choose the right tool for the job.” Sure, in a pinch you could pound a nail with a screwdriver or rock and it might get the job done. But you’d be no match for a skilled carpenter with a good hammer.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*wGV8LHGpHraoxSn-plQoGg.gif" /><figcaption>John “Hammerhead” Ferraro Driving Nails the Hard Way</figcaption></figure><p>Choosing the right (or wrong) tools for the job can make a huge difference in your deployment times, frequency of outages, number of rollbacks, and risk profile. In some industries poorly built software may even endanger people’s lives. Not only are the wrong tools slower but they may produce unexpected results.</p><h3>What’s in your toolbox?</h3><p>Operations people love their tools. We rely on these tools to quickly and efficiently build and maintain our application infrastructure. We have tools for provisioning, testing, configuration, security, and monitoring. It’s easy to spot the <a href="https://devops-research.com/research.html">DevOps people</a> sporting a thick layer of stickers on their laptop.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/520/1*7GuQQL8I7cyvqtB1rTCn-Q.png" /><figcaption><em>What story does your laptop tell? (Photo by Seth Kenlon. </em><a href="https://creativecommons.org/licenses/by-sa/4.0/"><em>CC BY-SA 4.</em></a><em>0)</em></figcaption></figure><p>Like that laptop covered in logos, there are so many different tools available to the modern IT shop. It’s hard to make sense of what they do and how they work (or don’t work) together. Engineers sometimes become very attached to particular tools, especially if they help relieve pain or solve a particular problem. Perhaps someone used a particular tool at their previous job and likes working with what they already know. Some companies even offer multi-function tools or platforms that hide all this complexity from the user.</p><h3>What Outcomes Do You Want?</h3><p>Take a step back and look at the big picture. Think about what outcomes you wish to achieve before deciding what tools to use. Be clear and concise, and write down your requirements. For example:</p><p><em>“We want to improve Linux server delivery time by 50%.”</em></p><p><em>“Developers should be able to create their own dev environments on demand, while remaining compliant with security policy.”</em></p><p><em>“Our application should be deployed in two public clouds within six months.”</em></p><p>Don’t get into lists of features and tools yet. Resist the temptation to immediately start debating the merits of various tools and platforms. Instead stick only to the high-level, specific outcomes that you wish to achieve. Once you have a clear idea of your goals, you can begin researching tools.</p><h3>Which Tool for Provisioning?</h3><p>In this blog post, we’ll focus on provisioning tools. Provisioning tools are used to build and configure OS or application infrastructure. Here are a handful of popular tools that you might be familiar with:</p><ul><li>Chef</li><li>Puppet</li><li>CFEngine</li><li>Ansible</li><li>AWS Cloudformation</li><li>Azure Resource Manager</li><li>Google Deployment Manager</li><li>HashiCorp Terraform (disclaimer — I work here)</li><li>Bourne again shell (Bash)</li><li>Powershell</li></ul><p>That’s just a sample of what’s available. There are platform tools that run on top of other tools, and some of these come in both open source and paid versions. Is it any wonder that people often throw up their hands and try to outsource the whole thing?</p><h3>What is Provisioning?</h3><p>In the technology world, <em>provisioning</em> generally means to provide some kind of service or infrastructure for humans and/or machines to utilize. This may or may not include the <em>configuration</em> of whatever was provisioned. For example, your systems administrator might build a Linux Virtual Machine and run some setup scripts on it. This is basic provisioning with a bit of config management.</p><p>To keep things clear we’ll use the following definitions.</p><p><strong>Provisioning Tools</strong>: Build infrastructure and optionally prepare it for Day 1 operations.</p><p><strong>Configuration Management Tools</strong>: Manage infrastructure or applications for Day N+1 operations.</p><p><strong>Operations Tools: </strong>Manage application runtime settings, monitoring, security, reporting, etc.</p><h3><em>Operations Tools</em></h3><p>Let’s start with the Operations tool group. Scripting languages like Bash, Powershell, Python, Perl and Ruby all fit in this bucket. The benefits of scripting languages are that they can be used to write<em> glue code </em>that does anything from rotating log files, to sending alerts, stopping or restarting services, or configuring applications. The downside of scripting languages is that it’s easy to write code that nobody else can understand or use.</p><p>Can I use Powershell to provision virtual machines in the cloud? Yes, absolutely. But is it the best tool for the job? Probably not. Powershell and Bash can both be used to automate cloud provisioning, but you’ll end up with a bunch of scripts held together with duct tape and bailing wire.</p><h3>Config Management Tools</h3><p>Next, we’ll look at the family of Configuration Management tools. These are purpose-built tools that are designed to configure your operating system and application settings. Cfengine, Puppet, Chef and Ansible all fall into this category. Cfengine, Puppet, and Chef all share a similar feature set and philosophy about configuration management. Each of these tools runs an agent on every machine you wish to manage. This can be incredibly useful if you have to patch a server or continue to maintain it for months or years. The agent on the machine is autonomous, in other words each and every machine is responsible for keeping itself up to date. Typically the agent will run every 30 minutes or so and run through its checklist to ensure the machine is configured correctly.</p><p>Ansible is also used to configure servers but does not use an agent, instead, it relies on remote communication with each machine that needs to be configured. The benefit of Ansible is that it’s really easy to get started with and does not require any software to be installed on your target machines. The downside is that it requires remote access to every machine you want to manage, and machines are not able to repair themselves the way the other config tools do.</p><h3>Provisioning Tools</h3><p>Finally, there are the provisioning tools. These tools are designed to provision new infrastructure onto cloud or on-premise data centers. Provisioning tools include Terraform, AWS Cloudformation, Azure Resource Manager, or Google Cloud Deployment Manager.</p><p>The three big cloud vendors, AWS, Google, and Microsoft, each have their own provisioning tool. All of them work basically the same way. You create a set of template files in <a href="https://www.w3schools.com/whatis/whatis_json.asp">JSON</a> or <a href="https://en.wikipedia.org/wiki/YAML">YAML</a> format, feed the template into the cloud provider’s API, and your infrastructure gets built. Each tool is designed to work specifically with one cloud provider. The benefits of these tools are that they are supported by each cloud vendor, and generally work well if you follow the instructions. The downside of these very custom, specialized tools are that they are not portable. In other words, you can’t take your AWS Cloudformation template over to Azure and expect it to build anything. The cloud vendors each have their own API and native provisioning method.</p><p><a href="https://www.terraform.io/">Terraform</a> is a multi-cloud provisioning tool that is easy to learn and easy to use. The Terraform language expresses your provisioning instructions as human-friendly, machine-readable code. Think of maybe a set of adjustable ratchet wrenches. Instead of having to carry around different tools for each cloud, you can simply use Terraform to provision onto all the different clouds. The benefits of Terraform are that it works on all the major public and private clouds, is easy to learn, and is open source software. The only downside is that it takes a few hours to learn how to use and configure it correctly. This is true of all the other tools as well!</p><h3>Choose Your Tools and Learn to Use Them</h3><p>You know your environment and employees better than anyone else. Do your homework, research the available tools, and understand the pros and cons of each. Ask your engineers, developers, and operations folks which tools they already know, try to understand where your bottlenecks and inefficient processes are, and create clearly defined outcomes. Try some tools out and see if they work for you. Ask other users of the tools how they like them. All these steps will help you choose the right tools for your infrastructure and application provisioning and configuration management. Soon you’ll be provisioning infrastructure like a pro with your handy tools.</p><p>Watch master carpenter <a href="https://www.finehomebuilding.com/author/larry-haun">Larry Haun</a> drive the point home:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*zKzCxBCaz_EzYndBY3ZlIA.gif" /><figcaption>Stop…Hammer Time!</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9a2c6c5706ac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hashicorp-engineering/stop-hammering-nails-with-a-screwdriver-9a2c6c5706ac">Stop Hammering Nails with a Screwdriver</a> was originally published in <a href="https://medium.com/hashicorp-engineering">HashiCorp Solutions Engineering Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Terraform for the Non-Technical]]></title>
            <link>https://medium.com/hashicorp-engineering/terraform-for-the-non-technical-6dd92e5dde7c?source=rss-a87e3fdea4e0------2</link>
            <guid isPermaLink="false">https://medium.com/p/6dd92e5dde7c</guid>
            <category><![CDATA[terraform]]></category>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[google-cloud-platform]]></category>
            <category><![CDATA[aws]]></category>
            <dc:creator><![CDATA[Sean Carolan]]></dc:creator>
            <pubDate>Sun, 30 Jun 2019 01:55:29 GMT</pubDate>
            <atom:updated>2019-06-30T05:50:32.384Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*UOcSdMEB69NtrJZqFjuzTA.png" /></figure><p><a href="http://www.terraform.io">Terraform</a> is a tool that works behind the scenes to build many of the websites and applications that you already use today. But, what exactly is it? How does it work? How can I explain what it does to my non-technical boss?</p><p>Let’s start with a website. Everyone who has a smartphone or computer understands what a website is. You open a browser window, type in a web address, and you get a website that you can interact with. Most of us don’t give much thought to how the website actually works behind the scenes.</p><p>Take your bank’s website for example. There are dozens or even hundreds of computers networked together in various ways to keep that website up and running. All these machines and application processes support the website so you can check your bills or transfer money 24 hours a day, 7 days a week.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*eF-p3gTOh2nAqWu6XQnSqg.jpeg" /><figcaption>What’s behind the scenes of this bank website?</figcaption></figure><p>Each and every one of those machines that works together to power the bank website has to be built by someone. When you buy a new laptop, it comes with an operating system but you still have to install and configure all your favorite applications to get it working the way you like. Web servers on the internet are no different. The people who build and configure these servers are called <strong>systems administrators</strong>. A systems administrator might be in charge of a few hundred or even a few thousand individual machines. Automation tools can push this number even higher. In some shops, a single person might be in charge of <em>20,000 servers or more</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*dbhj9wOjswj_ZekpJvDQZg.jpeg" /><figcaption>Most data centers do not look this cool…</figcaption></figure><p>Where do all these computers live? They are stacked into large buildings called <a href="https://en.wikipedia.org/wiki/Data_center"><strong>data centers</strong></a>. Imagine a warehouse outlet store, but instead of racks of food and consumer products, it’s all servers. From floor to ceiling, one server stacked upon another. Some of them are web servers, others might be network devices, and others are huge arrays of hard drives which provide storage for the web servers.</p><p>Data centers are really loud, due to all of the cooling fans running inside of all these machines. It’s not uncommon for a single data center to have ten thousand machines inside of it. Some companies run their own data centers, but nowadays you can also simply pay to use someone else’s data center. This is basically what cloud providers do.</p><p><a href="https://aws.amazon.com">Amazon</a>, <a href="https://azure.microsoft.com">Microsoft</a>, <a href="https://cloud.google.com">Google</a>, and other providers offer what they call <a href="https://en.wikipedia.org/wiki/Cloud_computing"><strong>cloud computing</strong></a>. They have used their immense purchasing power and technology to build giant data centers and allow their customers to utilize the servers inside on demand. Instead of maintaining a costly building with a bunch of hardware, you simply rent your compute time and storage from one of these cloud providers. It’s incredibly fast and affordable to get started building websites and applications in the cloud.</p><p>When a system administrator needs to build a few hundred servers on one of these cloud providers, automation tools are a must. Imagine how long it took you to install a few pieces of software on your work or home computer. Now multiply that time by several hundred — can you see the problem? Systems administrators use automation like shell scripts and provisioning tools to build many servers quickly. <em>Terraform is the world’s most popular provisioning tool.</em></p><p>Terraform is a tool for provisioning computer and network infrastructure. Terraform is <a href="https://www.apache.org/licenses/LICENSE-2.0">Open Source Software</a> (OSS) which means you can download and use it for free, or modify it to suit your own use cases. Terraform is popular among system administrators and developers because it makes the process of provisioning hundreds of servers and applications very easy.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/842/1*n3eWfT-H_IuofakZCuhMlQ.png" /><figcaption>Example Terraform Code</figcaption></figure><p>The Terraform language, or <a href="https://github.com/hashicorp/hcl2">Hashicorp Config Language </a>(HCL), is a human-friendly, machine-readable language for describing infrastructure. You can think of it as ‘executable documentation’. Terraform code is easy to learn, and easy to read or troubleshoot. Even a non-technical user can pick up the basics in less than a few hours. The Terraform language works on all the major cloud providers, and with on-premise data center platforms like <a href="https://www.terraform.io/docs/providers/vsphere/index.html">VMware</a> or <a href="https://www.terraform.io/docs/providers/openstack/index.html">Openshift</a>. In other words, you can use it to provision all your infrastructure everywhere. Terraform is a multi-cloud tool that can build on Azure, GCP, or AWS or VMware, all using the same language and framework.</p><p>Why should my organization use Terraform? Terraform provides the following benefits:</p><ul><li>Increased speed of provisioning</li><li>Fewer errors and inconsistencies</li><li>Reduced risk</li><li>Ability to safely test changes</li><li>Support for multiple cloud platforms</li></ul><p>In a nutshell:</p><p><em>Terraform is a multi-cloud provisioning tool that can be used to build all of your network and application infrastructure no matter where it runs.</em></p><p>Want to learn more? Check out this introductory video by our CTO, Armon Dadgar:</p><p><a href="https://www.youtube.com/watch?v=h970ZBgKINg&amp;feature=youtu.be">https://www.youtube.com/watch?v=h970ZBgKINg</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6dd92e5dde7c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hashicorp-engineering/terraform-for-the-non-technical-6dd92e5dde7c">Terraform for the Non-Technical</a> was originally published in <a href="https://medium.com/hashicorp-engineering">HashiCorp Solutions Engineering Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>