Devops 7

AWS Service를 활용한 AMI CI/CD 환경 구성 (Packer)

AWS에서 기본적으로 제공하는 Code 시리즈 (CodeCommit, CodeBuild, CodePipeline)을 이용한 OS 이미지가 지속적이고 정기적으로 배포될 수 있는 환경을 구성해보았다. 기본적으로는 Jenkins와 같은 CI툴과 Spinnaker와 같은 CD툴을 사용해서 구현할 것으로 보이나, 그런 시스템이 구축되지 않은 소규모 환경에서는 위와 같이 AWS Native한 서비스를 사용해도 기본적인 구현은 충분히 가능할 것으로 보인다. 위에는 추가하지 않았으나, SNS를 활용한 Notification을 추가할 수도 있고, AWS Pipeline에 추가적인 스텝을 구현하는 것도 가능하여 추가적으로 확장이 가능하며, Packer를 이용한다는 점은 동일하므로 ansible과 같은 솔루션도 사용이 가능..

Devops/CI, CD 2021.06.30

Atlantis를 활용한 Terraform Pull Request 자동화 환경 구축

목차 개요 Terraform을 사용하는 초기에는 Local에서 혼자 사용하거나 여러 명이서 사용한다고 하더라도 규모가 작기 때문에 큰 무리가 없다. 그러나, 규모가 점점 늘어나고, 관리해야 하는 리소스가 복잡해지고, 협업을 고민하게 되면 다양한 방법을 찾아보게 될 것이다. Atlantis는 Terraform의 Pull Request를 자동화해주는 오픈소스 솔루션으로, Pull Request(Gitlab에서는 Merge Request)가 발생하면 자동으로 terraform (또는 terragrunt) plan을 해주고, apply도 comment로 가능하도록 지원해준다. 이를 사용하면 모두 동일한 버전의 형상을 사용할 수 있고, comment와 approve, notification 기능을 모두 활용할 수..

Docker 자동으로 기동시키기

docker run --restart=unless-stopped (※ https://docs.docker.com/config/containers/start-containers-automatically/#use-a-restart-policy) 아래 내용 다 필요 없고, 도커 기동 시 위 URL 참조하여 restart policy 적용해주면 된다. 서버를 재기동시킬 때마다 Docker Compose를 수동으로 기동시키기 귀찮아서 service에 등록시켰다. 아래 내용은 이와 관련된 내용을 간단히 정리해보았다. 1. systemd systemd에 대해 간단히 내용을 정리하고 넘어가고자 한다. 위키백과에 따르면, systemd는 모든 프로세스들을 관리하는 init 시스템이라고 정의가 되어있다. systemd는 ..

Devops/Logging 2021.02.08

[Fluentd] filter_parser plugin에 대하여

아래의 fluentd configuration은 udp 5140 port로 listening을 하여 syslog type의 input을 받고 이를 두 차례 parsing 하여 stdout 하는 설정입니다. @type syslog port 5140 tag nginx.access @type syslog @type stdout @type parser key_name message reserve_data true @type nginx @type stdout syslog로 가져왔을 때 두차례나 parsing이 필요했다. 아직 입문이라 어떻게 할 지 당황했는데, 아래 출처의 블로그를 보고 해결할 수 있었다. 또한 tag가 nginx.access가 아닌 nginx.access.local7.info가 되는데 이것은 i..

Devops/Logging 2020.05.23

[용어정리] CI/CD, BDD

목차 CI/CD, BDD Terraform & Jenkins Study를 하면서, CI/CD라는 용어를 접하게 되었고 (이미 AWS Well Architecture 등을 통해 많이 접하였지만) Terraform의 Testing Tool을 살펴보던 중 Terraform Compliance라는 툴을 통해 BDD라는 용어를 접하게 되었다. 이를 정리하고자 한다. CI(Continuous Integration) 지속적 통합은 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 데브옵스 소프트웨어 개발 방식입니다. 지속적 통합은 소프트웨어 릴리스 프로세스 중 빌드 또는 통합 단계를 주로 가리키며, 자동화 구성 요소(예: CI 또는 빌드 서비스)와 문화적 구성 요..

Devops/CI, CD 2020.04.28

[DEVOPS] 빌드 자동화 환경 구축 일지 I

목표 1. Terraform을 Jenkins Pipeline을 통해 실행한다. 2. 여러 Account의 AWS 인증정보를 Vault를 통해 안전하게 관리한다. 3. 구축한 환경의 재현이 간단해야 한다. (Docker) 4. 추후 확장이 용이해야 한다. 구성요소 1. Docker - Vault, Consul, Jenkins를 기동시키는 역할 - Docker Compose를 통해 구성 2. Hashicorp Vault & safe - Safe를 통해 좀 더 쉽게 사용할 수 있다. - Vault KV를 통해 Credential 정보를 저장해두고, safe를 통해 Pipeline 중간에 get 해오는 방식으로 활용 - Storage Backend : Consul - Secret Backend : AWS 3. ..

Devops/CI, CD 2020.04.26