terraform 정보

소개


  • 모두가 좋아하는 terraform을 빨리 가르치게 되었으므로 빨리 설명하는 자료.
  • 클라우드나 인프라에 그다지 밝지 않다는 것이므로 이미지만.
  • PlantUML 연습도 겸하고 있다. Qiita 네이티브로 쓸 수 있으면 편합니다만. PlantUML을 작성하는 도구

  • 과거



    혼자 하고 있는 동안은 자기책임이고 어떻게든 된다.
  • 관리 콘솔 사용
  • 재현성 없음
  • 샘플 CloudFormation 및 문서 절차



  • PlantUML 코드
    @startuml
    actor UserA
    UserA --> (Cloud)
    @enduml
    


    현재



    여러 사람이 되면 문제가 나기 쉬워진다.
  • 속인화
  • 변경 내용이나 일시가 남지 않는다 (누군가의 실시한 변경을 모른다)
  • 되돌리기가 어려워진다
  • 클라우드 측도 매일 변경됨
  • 재현성이 부족하다 (닮은 것을 또 하나 만들어)
  • 보안 및 기능면에서 복잡성 증가



  • PlantUML 코드
    @startuml
    actor UserA
    actor UserB
    actor UserC
    UserA --> (Cloud)
    UserB --> (Cloud)
    UserC --> (Cloud)
    @enduml
    


    미래



    terraform을 사용하면 선언적 코드로 클라우드를 추상화 할 수 있습니다.
  • 코드 관리 (git)는 변경 내용을 쉽게 기록 할 수 있습니다
  • state의 존재에 의해 코드와 자원의 차분을 취득 가능하게 된다
  • 정기적 인 업데이트에 따라 안정적으로 리소스를 관리 할 수 ​​있습니다



  • PlantUML 코드
    @startuml
    
    actor UserA
    actor UserB
    actor UserC
    
    database Git
    database State
    
    UserA --> [terraform]
    UserB --> [terraform]
    UserC --> [terraform]
    
    Git -right- [terraform]
    State -left- [terraform]
    
    [terraform] --> (Cloud)
    
    @enduml
    


    중요한 것


  • terraform (code) == state(상태) == 클라우드 리소스
  • 어떤 상태를 관리 할 수 ​​있습니다
  • terraform이 선언적이기 때문에 Pulumi 및 CDK/SDK/공급 업체가 제공하는 스태킹 도구와의 차이점
  • 실제 리소스에서 코드로 피드백하여 상태를 유지할 수도 있습니다 (Ansible의 선언적과 다른 부분)
  • Ansible은 기본적으로 일방적이며 Ansible을 사용하여 차분을 얻고 코드를 정렬하는 것과 같은 작동에 적합하지 않습니다.
  • CloudFormation과 같은 공급 업체 제공 도구를 사용하여 잠금을 피하고 적당히 추상화하여 명령 차이를 줄일 수 있으며 멀티 클라우드 배포 등에 유리하다는 것도 terraform을 선택하는 이유 중 하나 )



  • terraformHashiCorp 제품
  • Golang으로 작성됨

  • tfenv을 사용하면 여러 버전을 쉽게 사용할 수 있습니다

  • direnv을 사용하면 환경 별 자격 증명을 쉽게 관리 할 수 ​​있습니다.

  • Ansible 란 무엇입니까?

  • 트위터슬랙에서 사용자 커뮤니티를하고 있으므로 활용하십시오 (홍보)

  • 만약에


  • Cloud 부분은 AWS, GCP, Azure 외에 terraform 플러그인의 일부가 되는 Provider가 대응할 수 있으면 무엇이든 좋다
  • 언제든지 코드 관리가 가능하다고해도 롤백 할 수있는 것은 아닙니다.
  • pulumi는 상태가있는 것 같습니다? 모르지만
  • Provider는 각 클라우드의 API 및 SDK를 사용하므로 항상 최신 기능을 사용할 수있는 것은 아닙니다

  • 덤의 덤



    Ansible





    PlantUML 코드
    @startuml
    
    actor UserA
    
    database Git
    database Config
    
    
    Git -right- [Ansible]
    
    UserA --> [Ansible]
    
    Config -left- [Ansible]
    note top of Config
      Inventory
      Playbook
      Role
    endnote
    
    [Ansible] --> (Host)
    
    note right of Host
      常に上書きされて
      最新になる
    endnote
    
    @enduml
    
    


    Packer 및 Ansible





    PlantUML 코드
    @startuml
    
    actor UserA
    
    database Git
    
    # あー、ツールが古くて frame 形状にならなかった
    package PackerAnsible <<Frame>> {
      [Packer]
      [Ansible]
    }
    
    Git -- PackerAnsible
    
    UserA --> PackerAnsible
    
    Packer -> Ansible
    
    PackerAnsible --> (AMI)
    
    note right of AMI
      常に上書きされて
      最新になる
    endnote
    
    @enduml
    
    
    


    2018년 Ansible Night에서 LT한 내용

    좋은 웹페이지 즐겨찾기