2020-01-01ãã1å¹´éã®è¨äºä¸è¦§
é»å製å ææ© EL ãã¬ã å®¶å · ã´ãç®± ã½ã¼ããã£ã¹ãã³ãµã¼ é§å¹ã Echo dot PCå¨ã Macbook Air ãã©ãã¯ãã¼ã«ãã¦ã¹ HHKB Professional HYBRID Type-S 4K ãã£ã¹ãã¬ã¤ é»å製å ææ© EL ãã¬ã 使ã£ã¦ãã液æ¶ãã¬ãã«æ»²ã¿ãçºçããããããè²·ãæ¿ããâ¦
2020 å¹´ã¯ã¨ã«ããå¤å¿ãªå¹´ã§ããã ããã¾ã§ã¯ããã¸ã§ã¯ãã«å ¥ã£ã¦ãªã¼ãã£ã³ã°ãããã¸ã¡ã³ãã主ã¨ãã¦è¡ãªã£ã¦ããã®ã§ããã4 æããã¯æå±é¨ç½²ãå¤ãããå ¨ç¤¾ã¸æ§ã ãªæ½çãä»æãå±éããå½¹å²ãæ ãããã«ãªãã¾ããã ããã«ä¼´ããè¦æ±ããããã¨ãâ¦
ä¹ ãã¶ãã«ä¼ç¤¾ã§ Perl ã®è©±ããã¾ãããä½ã®è©±ãã¨ãã㨠B::Deparseã§ãã æè¿ Perl ã使ãã®ã¯ One-Liner ããããªã®ã§ãããä¸è¬ã« One-Liner ã¯å¯èªæ§ãç ç²ã«ãªãã¾ãã ä¸ä½ãã® One-Liner ã¯ä½ããã¦ããã®ããã¨ããã®ã説æããã¨ãã«ã¯ B::Deparâ¦
GitLab CI/CD ãã ECR 㸠PUSH ããã¨ãããä½ãã¾ãããã¤ãã¿ããã£ã¦å¤§å¤ã«æéã溶ããã¾ããã alpine ãã¼ã¹ã® Docker Image ã« AWS CLI v2 ãã¤ã³ã¹ãã¼ã«ããã®ãã¤ãã Docker ã®ãã°ãå¼ãã¦ãã¾ã£ã¦ GitLab CI/CD ä¸ã§ã® DinD ããã¾ãåããªãâ¦
ãã£ã¬ã¯ããªãã¨ã«ç°å¢å¤æ°ãåãæ¿ãããã¨ããã¦ã¼ã¹ã±ã¼ã¹ã¯ããããã¾ããããããå®ç¾ãã¦ãããã®ã direnv ã§ãã ã¼ãããã® direnv ãå©ç¨ãã¦ãAWS ã¢ã«ã¦ã³ããã¨ã®ã¢ã¯ã»ã¹ãã¼ãåãæ¿ããããã¦ãã¾ãã direnv ã¯é常ãåã·ã§ã«ã® cd ã®å®è¡â¦
ãªã½ã¼ã¹å¹çã¯ãã»ã¨ãã©ã®æ¥çã§éè¦ããã¦ããã®ã§ã¯ãªãã§ãããããéã£ã¦ãã人ã«ã¯ã§ããã ãä»äºããããã®ã¯ãwikipedia:æ©ä¼è²»ç¨ ã®èãæ¹ãããã¦ãå½ããåã§ããããä¸äººã®ã¨ã³ã¸ãã¢ã«ã¯ä¸äººæã®ä»äºãå²ãæ¯ãã¨ããã®ãããã種ãªã½ã¼ã¹å¹çâ¦
Terraform 0.12 ç³»ããéãè °ããã㦠0.13 ç³»ã«ãããä½æ¥ãé²ãã¦ãã¾ããããããã¤ãã¨ã©ã¼ãçºçããã®ã§ããã®å¯¾å¿ã®é¡æ«ã«ã¤ãã¦ã terraform ã® version constraint ã§ã¨ã©ã¼ã«ãªã terraform init 㧠Failed to decode current backend config ã¨ã©â¦
æ°åã³ããã®å½±é¿ã§ãåºæ¬çã«ä»äºã¯å®¶ã§è¡ããã¨ã«ãªãã¾ããã ããã¾ã§å¹³æ¥ã¯å®¶ã§éããæéãå°ãªãã£ãããèªå® ã§ã® PC ç°å¢ãããªãèãã«ãã¦ããã®ã§ããããã¯ããããªãã¨ã¯è¨ã£ã¦ããããªãã ããããéãè °ãããã¦ãèªå® ã® PC ç°å¢ãæ´ãããâ¦
Bash ã«ããã¦ãå¤æ°ãç¹å®ã®æååã§çµãããã確èªãããã±ã¼ã¹ãããã¾ãã ãã Bash ã®ã¿ã§å®ç¾ãå¯è½ã§ãã [[ ${user_arn} == *Terraformer ]] Bash ã«ããã [ 㨠[[ ã·ã§ã«ã¹ã¯ãªããã§ä½¿ç¨ããã [ ãã³ãã³ãã§ããäºå®ã¯ããç¥ããã¦ãã¾ããã[â¦
æè¿"ã¢ã¸ã£ã¤ã«"ã«ã¤ãã¦äººã«æãããã¨ãè¦æ±ããã¦ãã¦ã人ã«æãã以ä¸ã¯ãã¡ãã¨å¦ã°ãªãã¨ãããªãã¨ãããã¨ã§ãæ¹ãã¦ããã¤ãã®å 容ãæ¯ãè¿ã£ã¦ãã¾ãã ãã®ä¸ã§ãã©ããã¦ããã¡ãã¨ããç解ããã¦ããå¿ è¦ããããã¨æã£ãã®ãããªã½ã¼ã¹å¹çãâ¦
ä¸è¬ã«ã·ã§ã«ã¹ã¯ãªããã§ã¯ set -eu ãã¦ããã¨ãããã¨ãè¨ããã¾ãã -e ã¯ã³ãã³ãå®è¡ã§ã¨ã©ã¼ãçºçããå ´åã«ããã§ã¹ã¯ãªããã®å®è¡ãçµäºããã -u ã¯èª¤ã£ã¦æªå®ç¾©å¤æ°ã使ç¨ãããã¨ããã¨ãã«ã¨ã©ã¼ã¨ãããã¨ããæ¯ãèãã«ãªãã¾ãã shebang â¦
æè¿ã¯ç ä¿®ç¨ã®è³æããã¼ã ã§ããããä½ã£ã¦ãã¾ãã ç ä¿®ã¯ããç¨åº¦ã®é¨åãã¹ã©ã¤ãã§ä¼ããå½¢ã«ãªãã®ã§ããããã¼ã ã§ã©ã®ãããªã¹ã©ã¤ããä½ãã®ããèããã«ããããèªåã®ãã¹ã©ã¤ããä½ãæ¹ããè¨èªåããå¿ è¦ãããã¾ããã èªåãã©ããããã¨ã«â¦
æ¬ Blog 㯠Github ä¸ã§ç®¡çããPUSH ãããæ稿ãããããã«ãªã£ã¦ãã¾ãã ããã§èª²é¡ã«ãªã£ã¦ããã®ã¯ãã¯ã¦ãª Blog æ稿ç¨ã® API ãã¼ã®ç®¡çã§ãããã¨ããã®ããBlogsync 㯠API ãã¼ã YAML ã«ç´æ¸ãããå¿ è¦ããã£ãããã§ãã v0.12.0 ã® Release Noâ¦
æ§ã ãªã¨ãã㧠terraform init ãã¾ãã£ã¦ãããã.terraform ãã£ã¬ã¯ããªãæ£å¨ããããã«ãªããVS Code ã§ã®æ¤ç´¢ã«æ¯éãæ¥ãããã«ãªãã¾ããã ãã®ããã.terraform ãã£ã¬ã¯ããªé ä¸ãæ¤ç´¢å¯¾è±¡ããé¤å¤ãããã VS Code ã§ã¯ãsearch.exclude ãè¨å®â¦
Git ãç¨ãã¦ãç¹å®æ¥æ以éã«æ´æ°ããããã¡ã¤ã«ã®ä¸è¦§ãåå¾ãããè¦ä»¶ãããã¾ããã ãããç´ ç´ã«åå¾ããæ¹æ³ããªãããã ã£ãã®ã§ã以ä¸ã®ããã«ãã¦ä»£ç¨ãã¦ãã¾ãã $ git log --after 2020/07/01 --name-only --pretty=oneline --full-index | grepâ¦
Terraform 㧠State ãåå²ããã¨ãããããã® root module ãã§ãã¾ãã ãã root module ãå¥ module ã® remote state åç §ãæã¤ã¨ããmodule éã«ä¾åé¢ä¿ãçãã¾ãã åãã¡ã¯ãã®ä¾åé ã« terraform ã apply ããªããã°ãªãã¾ãããããã®éé ã« deâ¦
ã«ã¬ã³ããã£ã¬ã¯ãé ä¸ã«ããå ¨ãã£ã¬ã¯ããªã§åãæä½ãããæã£ã¦å¤ãã®ã§ã¯ãªãã§ããããã ä¾ãã°ä½ã£ã¦ãã terraform 群ãè¦æ±ãã Provider ã®ãã¼ã¸ã§ã³ãããã¦ãå ¨é¨ terraform init ãã¦åããªãã¨ãããªããªã£ããã¨ãã find 㨠xargs ãçµã¿â¦
CI/CD ã§ä»¥ä¸ã®ã³ãã³ããå®è¡ãããã£ãã ãã§ããã $ aws ecr get-login-password | docker login --username AWS --password-stdin [AWS Account ID].dkr.ecr.ap-northeast-1.amazonaws.com/my-repository ãã®ã³ãã³ãã©ã¤ã³ã«ã¯ 2 ã¤ã®å®è¡ãã¤ããªãâ¦
Cointaner Image ã® CD ç¨ã« ECR 㸠PUSH ããããã®æä½éã® IAM Policy ãã©ããªãã®ããæ¤è¨¼ãã¦ã¾ããã¾ãããããããã¯ä»¥ä¸ãæä½éã® IAM Policy ã«ãªãããã§ãã ãã®ãã¡ã®ã©ã® action ã許å¯ããªãå ´åã§ãã£ã¦ããã¤ã¡ã¼ã¸ã® PUSH ã¯ã¨ã©ã¼ã«ãªâ¦
CodePipeline + CodeDeploy 㧠ECS ã¸ã®ãããã¤ã¡ã³ããã¤ãã©ã¤ã³ãçµãã§ãããã§ããããã®ãã¤ãã©ã¤ã³ãæ§ã ãªçç±ã§å¤±æãã¾ãã ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ã§ç¢ºèªãã¦ããInternal error çãªæè¨ãã表示ããããã¨ã«ãããããã°ãããã©ãã§ãã ã¤â¦
CodePipeline ããå¥ã¢ã«ã¦ã³ãä¸ã® ECR ã Source Action ããæå®ãããã ããã¯ãããªãã«åå¨ããã¦ã¼ã¹ã±ã¼ã¹ã§ã¯ãªãã§ããããã ãã®å®ç¾ã«ãã¸ã§è¦ããã ã®ã§ãèè¤ã®è¨é²ãæ®ãã¦ããã¾ãã æ¦è¦³ ãã±ããããªã·ã¼ CodePipelie ããã¯ãã¹ã¢ã«ã¦â¦
以ä¸ã®ã¨ã³ããªã§è¨è¼ããããã«ãAWS ä¸ã«ããã¦ã¯ãã«ãã¢ã«ã¦ã³ãã§ç°å¢ãæ§æãããã¨ããã¹ããã©ã¯ãã£ã¹ã¨ããã¦ãã¾ãã ãã®ã¨ã³ããªã§ã¯ãCustodian ã¢ã«ã¦ã³ãã¨ããæ¦å¿µãç»å ´ãã¾ãããããã¯çµå± IAM ã¦ã¼ã¶ãã°ã«ã¼ãã 1 ã¤ã®ã¢ã«ã¦ã³ãã«ã®â¦
ãã¡ãã¨ããã¬ã¤ããæ¸ããããã¦ãã®ã¬ã¤ããå¤äººæ°ã§å¤æ´ããã¨ããã±ã¼ã¹ã§ã¯ãæç« ã®æºãçã㧠ããã ãé²ãããã ãã®ãããGitLab CI/CD 㧠textlint ãå°å ¥ãããã textlint ç¨ Docker Image ã®ä½æ ãã£ã«ã¿ ã«ã¼ã« Docker Image ã® buildãpushâ¦
æ§ã ãªããã¥ã¡ã³ãã Markdown ã§è¡¨ç¾ãããä»æ¥ãã®ããã§ãã å¤æ°ã®äººãé¢ããã¤ã¤ããã¥ã¡ã³ããæé·ãããã®ã§ããã°ã Markdown ããã¥ã¡ã³ãã«ã¤ãã¦ããã©ã¼ããããçµ±ä¸ãããããã®ã§ããã Markdown ã«ã¤ãã¦ãå½ç¶ã®ããã« linter ãããã®ã§ãâ¦
GitLab CI/CD ã使ããèªä½ã® AWS ç¨ terraform ã¢ã¸ã¥ã¼ã«ã«å¯¾ã㦠terraform validate ãããããã¨ããã¨ã以ä¸ã®ã¨ã©ã¼ã¡ãã»ã¼ã¸ãåºã¦å¤±æãã¾ããã Error: Missing required argument The argument "region" is required, but was not set. åå 対â¦
Terraform ã®ã¹ã¯ãªããã«ã lint ãèªåã§å®è¡ã§ããããã«ãã¾ãã lint ãã¼ã« TFlint è¨å®ã®æ¸¡ãæ¹ GitLab CI/CD ã¸ã®çµã¿è¾¼ã¿ ä»å¾ lint ãã¼ã« Terraform ã«ã¯ terraform validate ã³ãã³ãããããè¨å®ä¸ã®ããªãã®åé¡ãæ¤ç¥ãã¦ããã¾ãã ä¸æ¹ã§ tâ¦
AWS ã§ç°å¢ãæ§ç¯ããéã¯ãã«ãã¢ã«ã¦ã³ãã«ãªããã¨ãå¤ããããã¯ç解ãã¦ããã¤ããã§ããã stg ç°å¢ã¨ prod ç°å¢ã¯ AWS ã¢ã«ã¦ã³ããã¨åãããdev ç°å¢ãåããã ããããä¸ã®ä¸ã®ãã¹ããã©ã¯ãã£ã¹ã¯ãã£ã¨å ãè¡ã£ã¦ãã¾ããã ãªãã¢ã«ã¦ã³ããâ¦
AWS ã«ããã¦ã¯ãã«ãã¢ã«ã¦ã³ãæ¦ç¥ãéè¦ã¨ããã¦ãã¾ãã ãã¨ãã°ãéçºç°å¢/ã¹ãã¼ã¸ã³ã°ç°å¢/æ¬çªç°å¢ã¨ãã£ãåç°å¢ã¯ãã»ãã¥ãªãã£ãã¬ããã³ã¹é¢ã§åé¢ãã¹ãã§ãã ã¡ã³ãã¼ã®æ¨©é管çããã£ãããã ç¹å®ã®ç°å¢ã®ä½æ¥ãä»ç°å¢ã«å½±é¿ããªã ãã®â¦
åæ ãã®åã« state ã¨ã¯ä½ã state ã® S3 管ç backend ã¨ãªã S3 ã Terraform 管çã®ã¤ã³ãã©ã¨ä¸ç·ã«ç®¡çãã¦è¯ãã®ã backend ã®æ§ç¯ backend ã®é©ç¨ (locking ãªã) backend ã®é©ç¨ (locking ãã) åæ Terraform ã«ãã£ã¦ã¤ã³ãã©ããã¼ã ã§ç®¡çãâ¦
Terraform ã®å Primitive Types Complex Types Collection Types Structural Types null èå³æ·±ãæ©è½ map ã® key ã«åç §ã使ãã ãã¹ã®åç § Python ã®å å 表è¨ç㪠for splat expression String Template: if æ/for æ Terraform ã®å å ¨é¨ã§ 7 種é¡ããâ¦