[정보] Terraform: Up and Running Writing Infrastructure as Code (원서)

62 views
Skip to first unread message

문태준

unread,
May 2, 2017, 12:37:32 AM5/2/17
to sysadminstudy
오렐리에서 terraform 책이 올해초에 나온 것이 있는데 최근 주문을 했습니다. (원서임)

Chef/Puppet/Ansible/SaltStack은 주로 OS레벨의 설정을 다룬다면 terraform은 AWS, Google Clodu, 애저 등 다양한 클라우드와 가상화 플랫폼에서 인프라스트럭쳐를 정의, 런칭, 관리할 수 있는 프로그램입니다.

AWS의 경우 CloudFormation과 같은 역할이라고 생각을 하면 됩니다.
AWS의 경우 terraform을 통해서 VPC, subnet, NACL, security group 등도 구성 가능하고 ec2도 올릴 수 있습니다.

최근 번역되어서 나온 "코드로 인프라관리하기"책이 인프라로 코드를 관리하기 위한 전체적인 설명이라면 이 책은 클라우드 리소스를 관리하기 위한 terraform에 대한 책입니다.

Terraform: Up and Running Writing Infrastructure as Code
http://shop.oreilly.com/product/0636920061939.do

위 오렐리의 책소개에 다른 사람의 리뷰에서도 지적을 하고 있기는 한데 terraform이 올해 3월 0.9 버전이 나오면서 Remote state 부분이 많이 바뀐 것으로 알고 있습니다.
remote state는 관리하는 리소스의 현재 상태를 로컬이 아닌 원격에 저장을 하는 기능입니다.
만약 terraform을 통해 ec2를 생성하였다면 다시 생성을 할 필요가 없는데 상태파일이 로컬에 있으면 여러 사람끼지 작업을 하는 경우 문제가 생길 수 있습니다.\
한명이 terraform을 관리한다면 상관없겠지만 여러 명이 협업하여 관리를 할 경우에는 필요한 기능입니다.
저는 s3와 연동을 해서 간단히만 사용을 해 본 상태입니다.

Yong-Ki Kim

unread,
May 2, 2017, 6:44:43 AM5/2/17
to sysadm...@googlegroups.com
안녕하세요. 김용기라고 합니다.

저도 terraform을 요즘 보고 있는데 이것도 참 물건인것 같습니다.
hashicorp의 vagrant, packer, terraform 등 제품을 보면 클라우드 환경에서 IT 관리가 어떻게 변해야하는가를 실질적으로, 
정말 책 속에서의 모호한 상태가 아니라, 구체적으로 구현하는 방식을 보여주고 있어서 재미가 있습니다.
hashicorp의 제품들은 한번씩 만져보시거나 홈페이지 설명이라도 한 번 보시면 많은 도움이 될 것 같습니다.
제가 이 회사의 관계자는 아니지만 흠.. 관계가 되고 싶네요 ^^

감사합니다.

========================

Taejoon Moon

unread,
May 3, 2017, 9:11:09 PM5/3/17
to sysadm...@googlegroups.com
네 요즘 저도 hashcorp 프로그램은 여기거 이것저것 많이 씁니다. Vagrant terraform packer 등. consul은 옆에 친구가 hashicorp vault 구축하면서 함께 세팅했는데 아직 제가 써본건 아니지만 요즘 필요성을 많이 느끼고 있습니다. 클라우드 와 같은 동적 인프라에서는 원격서비스에 각종 서비스 정보 메타데이터등 관리가 필요하더라구요. 이제서야 서비스 디스커버리가 좀 이해가는.

용기님이 말을 한대로 hashcorp는 클라우드 환경에서 IT 관리가 어떻게 변해야 하는지, 코드로 인프라를 어떻게 관리해야 하는지 앞서나가는 회사같습니다.



다른 분이 "Aws의 cloudformation을 사용하지 않고 terraform을 사용하면 좋은 점이 어떤게 잇나요?" 라고 질문을 해서 간단히 정리를 해 보았습니다.

간단히 적자면 CloudFormation은 AWS에서만 지원하는 프로그램이고 Terraform은 여러 클라우드, 가상화 솔루션을 지원합니다.
그러므로 AWS만 사용을 한다면 Terraform을 꼭 사용할 필요는 없습니다. 그러면 AWS 를 사용할 경우 무엇이 좋냐는 질문은 할 수 있겠지요.

terraform의 문서와 thoughtworks 의 문서가 도움이 될 듯 합니다.
https://www.terraform.io/intro/vs/cloudformation.html
-> 여러 클라우드 서비스 지원, 각 플랫폼 독립적인 도구를 사용할 수 있음. 실행을 하기 전에 plan 단계를 두어서 terraform 실행시 리소스에서 어떤 변경이 가해질지 확인 가능.
dry-run 모드라고도 하지요. 지금 잠시 찾아보니 AWS CloudFormation 에서는 Using Change Sets( https://aws.amazon.com/ko/blogs/aws/new-change-sets-for-aws-cloudformation/)이라는 언급이 있네요.

아래 문서가 직접 비교를 한 자료중 참고 할 만 한데요. 2015년도 자료이기 때문에 최신 버전의 내용은 담고 있지 않을 수 있습니다.
https://www.thoughtworks.com/insights/blog/choosing-right-tool-provision-aws-infrastructure
- Terraform은 DSL을 사용, CloudFormation 템플릿은 JSON -> 보기는 DSL이 훨씬 좋습니다. JSON은 내용이 길어지면 사람이 보기 불편합니다.

- 변경할 내용을 미리 보기 -> Terraform의 plan이 이 기능입니다.

- failure 처리하기 -> 이건 둘간에 서로 차이나는 부분이라고 합니다. CF는 전체 실행을 롤백할 수 있는 옵션을 이용하거나 수동으로 삭제해야 하며 아주 드믄 경우지만 frozen 상태가 되어서 복구못하는 경우가 있다고합니다. Terraform은 failure 처리된 리소스만 "tainted"라고 표시하고 다음 실행시 이 리소스만 작세하고 다시 프로비전 한다고 합니다.

- AWS 리소스 지원 : CF는 당연히 AWS 모든 서비스를 프로비저닝할 수 있지만 Terraform은 그게 아니겠지요. Terraform에서 지원이 안되면 내부에 개발자가 있어서 해당 기능을 구현하든지 해야겠지요.

- 커뮤니티 : AWS에서 개발하는 것과 오픈소스의 차이점이겠죠

- state 관리: Terraform을 쓸 경우 조심해야 할 부분인데요. Terraform을 쓸 경우 클라우드 제공 업체에서 인프라의 현재 상태을 검색하지 않고 로컬 상태를 참조합니다. 그래서 여러 명이 동시에 클라우드 리소스를 만지는 경우에는 문제가 될 수 있습니다. 이 부분을 terraform에서는 remote state 라고 하여 원격에 상태파일을 둘 수 있는 기능을 지원합니다. 반면에 CloudFormation은 어떤 상태도 저장하지 않습니다. 여러 개발자가 충돌없이 환경에서 작업 할 수 있습니다.

- 특정 업체 제품과 오픈소스의 차이 : 이건 따로 설명하지 않아도 되겠지요.

- 안정성 : 위 문서에서는 Terraform 버전이 0.3.6이네요. 최근 나온것은 2017년 3월인가 0.9 버전입니다. 상대적으로 아직 덜 성숙되고 안정적이지 않은 상태이지만 계속 업데이트가 되고 있습니다. CF는 상대적으로 더 안정적이겠지요. terraform을 사용하는 한 지인도 이 부분을 언급했었는데요. 여기 복사.  "0.9.x 이전에서는 remote state 설정할 때 좀 짜증나는 부분이 있었는데, 일관성 있게 설정할 수 있게 되었지요. 버전 업그레이드가 잦고, compatibility breaking change가 너무 많아서 이런 변화를 DevOps 조직이 감당할 수 있는지가 관건이라고 생각합니다."

저는 아직 클라우드쪽은 경험이 많은 것이 아니라서 이정도로만...


2017년 5월 2일 오후 7:44, Yong-Ki Kim <hat...@gmail.com>님이 작성:

--
이 메일은 Google 그룹스 'sysadminstudy' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 sysadminstudy+unsubscribe@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 sysadm...@googlegroups.com에 이메일을 보내세요.
https://groups.google.com/group/sysadminstudy에서 이 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

Reply all
Reply to author
Forward
0 new messages