지금부터 Packer를 쓰는 너. - 1.7 시리즈.

개시하다


패커 1.7 라인을 사용했기 때문에 사용감 등을 알려드릴게요.
투고할 때의 최신 버전은 1.7.3이다
Packer와 처음 만났던 분들은 기고된지금부터 Packer를 사용하시는 분들께... 기사가 있으니 참고하시기 바랍니다.
따라서 이번에는 Packer씨와 부분을 생략할 것이니 양해해 주십시오
창고도 공개했지만 참고로 남겨두셨으면 좋겠습니다.

여러 버전 동시 사용


나는 약간의 세부 사항을 생략하지만, 지난번과 같이 미리 컴파일된 2진법을 사용할 것이다
(OS당 하도급 포함)
패키지 관리 명령을 사용하여 최신 버전 설치
나는 쓰면서 옛 판본은 미리 컴파일한 이진법을 사용하는 것이 비교적 좋다고 생각한다

설치하다.


참조마지막으로 기재된 설치 방법
어쨌든 나는 이미 여러 버전의 사용을 준비했다
1.6.0
$ which packer-160
/usr/local/bin/packer-160
$ packer-160 -v
1.6.0
1.7.3
$ which packer-173
/usr/local/bin/packer-173
$ packer-173 -v
1.7.3

수정점


이전에는 템플릿을 Json으로 만들어야 했다
1.7 계열 추천 HCL2
이 형식은 Terraform이 채택한 것이다

명령하다


간단하게 말하면 다음과 같은 명령이 추가되었다
  • fmt
  • hcl2_upgrade
  • init
  • hcl2_upgrade


    https://www.packer.io/docs/commands/hcl2_upgrade
    Json 형식→HCL2 형식 변환, 파일 생성
    그러나 모든 것을 바꿀 수 있는 것은 아니다. 이전 버전의 Packer에서 사용할 수 있는 기술만 있으면 된다.
    sample.json을 HCL2로 변환
    $ packer hcl2_upgrade -output-file=sample.pkr.hcl sample.json
    Successfully created sample.pkr.hcl. Exit 0
    
    -output-file: 모든 경로로 출력 가능
    위 옵션을 사용하지 않으면 .pkr.hcl 파일 끝에
    샘플은 아래의 내용을 참조하시오
    https://github.com/kaqua/border-collie/tree/main/packer17x/sample

    fmt


    https://www.packer.io/docs/commands/fmt
    형식 검사와 유사-check: 적절한 형식일 경우 종료 상태는 0이고 이외에는 0입니다.-diff: 서식 변경의 차분 표시(변경도 가능)-write=false: 원본 파일을 수정하지 마십시오.
    예를 들어 방금 HCL2로 변환된 샘플 템플릿을 살짝 편집해서 실행해 보았습니다
    diff 옵션
    $ packer fmt -diff sample/sample.pkr.hcl 
    sample/sample.pkr.hcl
    --- old/sample/sample.pkr.hcl
    +++ new/sample/sample.pkr.hcl
    @@ -1,7 +1,7 @@
     
     data "amazon-ami" "autogenerated_1" {
       filters = {
    -      name = "amzn2-ami-hvm-*-x86_64-gp2"
    +    name = "amzn2-ami-hvm-*-x86_64-gp2"
       }
       most_recent = true
       owners      = ["amazon"]
    
    diff 지령을 하는 것 같아요.그런데 이렇게 하면 변경된 부분이 원상태로 돌아옵니다.
    옵션-write=false을 사용하여 차분만 출력할 수 있습니다.-check 기본값은 -write=false로 변경되지 않습니다.
    check 옵션
    $ packer fmt -check sample/sample.pkr.hcl
    sample/sample.pkr.hcl
    
    변경 사항이 있으면 위에서 설명한 출력 파일 이름을

    init


    https://www.packer.io/docs/commands/init
    지정한 플러그인을 설치하고 업데이트할 수 있습니다
    플러그인 설치
    $ packer init plugins.pkr.hcl 
    Installed plugin github.com/wata727/amazon-ami-management v1.1.2 in "/Users/kaqua/.packer.d/plugins/github.com/wata727/amazon-ami-management/packer-plugin-amazon-ami-management_v1.1.2_x5.0_darwin_amd64"
    
    플러그인 설명이 있는 파일만 지정하고 실행하기 때문에 간단합니다
    로컬 어디에 두었는지도 출력했어요.
    파일 컨텐트는 다음 컨텐트를 참조하십시오.
    https://github.com/kaqua/border-collie/blob/main/packer17x/plugins.pkr.hcl

    기계 영상 을 제작 하다


    드디어 메인 메뉴입니다.
    이번에는 AWS의 기계 이미지(AMI)를 제작한다.
    이미지를 만드는 서비스 계정과 권한이 필요합니다. 주의하십시오
    클라우드 서비스의 경우 가동 실례는 비용을 지불해야 한다

    사용할 파일


    사용할 파일
    $ tree
    .
    ├── build.pkr.hcl # 以前の builders 部分用ファイル
    ├── plugins.pkr.hcl # init用ファイル
    ├── sources.pkr.hcl # 以前の provisioners 部分用ファイル
    ├── variables.pkr.hcl # 変数用ファイル
    └── {environment}.pkrvars.hcl # 変数用(オーバーライド)ファイル
    
    파일 내용에 관해서는 다음과 같은 내용을 참조하시오
    https://github.com/kaqua/border-collie/tree/main/packer17x
    Terrafrom을 사용한 적은 없지만 조금만 조사해 보면 파일을 분리해서 관리할 수 있습니다
    위의 파일 그룹은 샘플 템플릿을 HCL2로 변환할 때 생성된 파일 분할이며 약간 수정된 파일입니다.

    고친 곳


    변환된 샘플 템플릿을 보면 "autogenerated_1"라고 적힌 부분이 있고 Packer 측에서 자동으로 부여한 값입니다.
    sample.pkr.hcl의 일부분
    data "amazon-ami" "autogenerated_1" {
      filters = {
        name = "amzn2-ami-hvm-*-x86_64-gp2"
      }
    
    autogenerated_다른 파일에서 1의 값으로 참조할 수 있는 것 같아서 알기 쉬운 값으로 변경해 보았습니다(값은 무엇이든지 가능합니다)
    sources.pkr.hcl의 일부분
    source "amazon-ebs" "src" {
      ami_name      = "${var.name}-${var.env}"
      instance_type = "${var.instance_type}"
    
    build.pkr.hcl의 일부분
    build {
      sources = [
        "source.amazon-ebs.src"
      ]
    
    위에서 말한 바와 같이 구축할 때 지정한 소스를 사용할 수 있다

    변수 파일 처리


    구축 시 옵션-var-var-file를 지정할 수 있지만 이전 버전과 달리 환경에 따라 변수 파일을 준비하는 것이 좋습니다.
    사용할 파일에도 기재되어 있지만 다음과 같은 구분이 필요합니다.
  • variables.pkr.hcl
  • 변수 파일
  • {environment}.pkrvars.hcl
  • 변수용(다시 쓰기) 파일
  • 이전 버전은 환경에 따라 변수 파일을 준비했기 때문에 구축할 때 지정하면 된다
    1.7 계열의 기본 변수 파일 + 환경 파일
    덮어쓰기는 덮어쓰기를 의미하기 때문에 원자재가 없는 곳은 덮어쓸 수 없습니다
    관리 파일 추가
    기준용 변수 파일을 참조하십시오. 그러나 구체적인 값을 입력할 필요는 없습니다. 선언type만 하고 각 환경의 변수 파일에 구체적인 값을 넣으면 됩니다.

    구축


    변수 파일이 지정되지 않은 경우
    $ packer build .
    
    변수 파일 지정하기
    $ packer build -var-file=オーバーライド用ファイル .
    
    파일을 분할할 현재 디렉토리를 지정합니다.
    (파일 하나에 대한 작업 확인)
    또 다른 옵션 등에 대해서는 직접 조사하시기 바랍니다.

    끝말


    어때?
    지금까지 Packer를 사용한 사람들에게는 Json에 익숙해져서 조금 귀찮은 점이 있을 수 있습니다.Terraform을 사용하는 사람에게는 간단하다고 느낄 수 있습니다.
    저는 개인적으로 구판부터 1.7과 버전을 시도해 봤는데 몇 시간 걸려서 기계 이미지를 만들 수 있어서 학습 원가가 높지 않다고 생각합니다.
    이 문서 보세요. Packer 1.7 라인을 사용할 수 있었으면 좋겠어요.
    일찍 일어날 때는 왠지 공부에 대한 열정이 높다.그럼 안녕히 주무세요.(개잠)

    좋은 웹페이지 즐겨찾기