PageSourceSearch

https://developers.minds.com/assets/js/585b7486.98662d7d.js

js minds.com collected 2026-10-01 07:39:12 UTC 5,883 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2653],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>f});var n=t(7294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?o(Object(t),!0).forEach((function(r){a(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function l(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var u=n.createContext({}),s=function(e){var r=n.useContext(u),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},c=function(e){var r=s(e.components);return n.createElement(u.Provider,{value:r},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(t),m=a,f=d["".concat(u,".").concat(m)]||d[m]||p[m]||o;return t?n.createElement(f,i(i({ref:r},c),{},{components:t})):n.createElement(f,i({ref:r},c))}));function f(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=m;var l={};for(var u in r)hasOwnProperty.call(r,u)&&(l[u]=r[u]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=t[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,t)}m.displayName="MDXCreateElement"},7360:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>u,default:()=>f,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var n=t(7462),a=t(3366),o=(t(7294),t(3905)),i=["components"],l={id:"terraform",title:"Terraform"}
1,u=void 0,s={unversionedId:"infrastructure/terraform",id:"infrastructure/terraform",title:"Terraform",description:"Terraform",source:"@site/docs/infrastructure/terraform.md",sourceDirName:"infrastructure",slug:"/infrastructure/terraform",permalink:"/docs/infrastructure/terraform",draft:!1,editUrl:"https://gitlab.com/minds/docs/edit/master/docs/docs/infrastructure/terraform.md",tags:[],version:"current",lastUpdatedBy:"Zack Wynne",lastUpdatedAt:1698126701,formattedLastUpdatedAt:"Oct 24, 2023",frontMatter:{id:"terraform",title:"Terraform"},sidebar:"tutorialSidebar",previous:{title:"Tagging",permalink:"/docs/infrastructure/tagging"},next:{title:"Plugins",permalink:"/docs/category/plugins"}},c={},d=[{value:"Terraform",id:"terraform",level:2},{value:"Shared Infrastructure Repo",id:"shared-infrastructure-repo",level:3},{value:"Individual Modules",id:"individual-modules",level:3}],p={toc:d},m="wrapper";function f(e){var r=e.components,t=(0,a.Z)(e,i);return(0,o.kt)(m,(0,n.Z)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"terraform"},"Terraform"),(0,o.kt)("p",null,"We make use of Terraform for deploying and managing cloud infrastructure."),(0,o.kt)("h3",{id:"shared-infrastructure-repo"},"Shared Infrastructure Repo"),(0,o.kt)("p",null,'The "main" Terraform repository contains the relevant code for networking and compute. This can be found ',(0,o.kt)("a",{parentName:"p",href:"https://gitlab.com/minds/infrastructure/minds-terraform"},"here"),"."),(0,o.kt)("p",null,"The repo has the following structure:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},".\n\u251c\u2500\u2500 legacy  # Legacy Terraform Code\n\u251c\u2500\u2500 live    # Terragrunt Workspaces\n\u2502   \u251c\u2500\u2500 aws\n\u2502   \u251c\u2500\u2500 bridge\n\u2502   \u2514\u2500\u2500 oci\n\u2502       \u2514\u2500\u2500 minds-oci-kubernetes\n\u2502           \u251c\u2500\u2500 ops\n\u2502           \u251c\u2500\u2500 production\n\u2502           \u2514\u2500\u2500 sandbox\n\u2514\u2500\u2500 modules # Modules for shared infrastructure\n    \u251c\u2500\u2500 aws\n    \u251c\u2500\u2500 bridge\n    \u2514\u2500\u2500 oci\n")),(0,o.kt)("p",null,"As this repo uses ",(0,o.kt)("inlineCode",{parentName:"p"},"terragrunt"),", you will need to deploy changes to the Kubernetes module using the ",(0,o.kt)("inlineCode",{parentName:"p"},"live/oci/minds-oci-kubernetes/$ENVIRONMENT")," folder:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'ENVIRONMENT="sandbox"\n\ncd live/oci/minds-oci-kubernetes/$ENVIRONMENT\nterragrunt init\nterragrunt plan\nterragrunt apply\n')),(0,o.kt)("h3",{id:"individual-modules"},"Individual Modules"),(0,o.kt)("p",null,"Most Terraform will not be in the shared repo, but in the individual module repositories. For example, the Terraform code for Mautic is ",(0,o.kt)("a",{parentName:"p",href:"https://gitlab.com/minds/infrastructure/modules/mautic/-/tree/master/terraform"},"here"),". Usually this will be in a ",(0,o.kt)("inlineCode",{parentName:"p"},"terraform")," subfolder for the module."),(0,o.kt)("p",null,"These modules typically do not use ",(0,o.kt)("inlineCode",{parentName:"p"},"terragrunt"),", but instead are deployed with ",(0,o.kt)("inlineCode",{parentName:"p"},"terraform")," directly:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cd terraform\nterraform init\nterraform plan\nterraform apply\n")))}f.isMDXComponent=!0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.