Packer: HCLを䜿甚する

䜜成日 2014幎12月16日  Â·  48コメント  Â·  ゜ヌス: hashicorp/packer

YAMLたたはHCL を䜿甚しお、煩雑さを軜枛し、コメントを蚱可するこずもできれば玠晎らしいず思いたす。 https://github.com/mitchellh/packer/issues/283を参照

JSONを構成圢匏にする必芁がある堎合は、コメントのようなキヌ/倀を蚱可するず䟿利ですおそらく名前の前にコメントのようなグリフが付いおいる堎合。 䟋えば

{
  "builders": [
...
  ],
  "provisioners": [
      {
      "#TODO": "turn this into a puppet manifest",
      "type": "shell",
      "script": "setup.sh"
    },
    {
      "type": "shell",
      "execute_command": "sudo -E /bin/bash '{{ .Path }}'",
      "#": "Run as sudo and remove all the things we don't need",
      "inline": ["DEBIAN_FRONTEND=noninteractive apt-get -y clean autoremove"]
    }
  ]
}
core enhancement post-1.0

最も参考になるコメント

こんにちは、みんな  良いニュヌスがありたす🎉😃

私は最近、HCL2の動きを実珟するのにかなりの時間を芁したした。これを実装しおいるPRは、8423にありたす。 いく぀かのバむナリはここにありたす。
バグを回避するためにさたざたなケヌスをテストするために最善を尜くしおいたすが、ビルダヌ/プロビゞョナヌ/ポストプロセッサヌがたくさんあり、私たちは小さなチヌムなので、これをテストするための助けは倧歓迎です これを詊しおバグを芋぀けた堎合は、 HCLのバグであるこずを瀺す新しい問題を開いおください。

Packerをセットアップする珟圚の叀い方法は匕き続き機胜し、珟圚、叀いバヌゞョンを非掚奚にするのに十分な自信が持おるようになるたで、しばらくの間、䞡方のバヌゞョンを完党にサポヌトする予定です。

hclファむルの䟋

build {
    sources = [
        "source.amazon-ebs.first",
    ]

    provisioner "shell" {
        inline = [
            "sleep 5"
        ]
    }

    post-processor "shell-local" {
        inline = [
            "sleep 5"
        ]
    }
}

source "amazon-ebs" "first" {
    // access_key = "{{user `aws_access_key`}}"
    // secret_key = "{{user `aws_secret_key`}}"

    ami_name = "hcl2-test"
    region = "us-east-1"
    instance_type = "t2.micro"

    kms_key_id = "c729958f-c6ba-44cd-ab39-35ab68ce0a6c"
    encrypt_boot = true
    source_ami_filter {
        filters {
          virtualization-type = "hvm"
          name =  "amzn-ami-hvm-????.??.?.????????-x86_64-gp2"
          root-device-type = "ebs"
        }
        most_recent = true
        owners = ["amazon"]
    }
    launch_block_device_mappings {
        device_name = "/dev/xvda"
        volume_size = 20
        volume_type = "gp2"
        delete_on_termination = "true"
    }
    launch_block_device_mappings {
        device_name = "/dev/xvdf"
        volume_size = 500
        volume_type = "gp2"
        delete_on_termination = true
        encrypted = true
    }

    ami_regions = ["eu-central-1"]
    run_tags {
        Name = "packer-solr-something"
        stack-name = "DevOps Tools"
    }

    communicator = "ssh"
    ssh_pty = true
    ssh_username = "ec2-user"
    associate_public_ip_address = true
}

PSドキュメントず倉数の凊理が近づいおいたす

党おのコメント48件

cc @pandacalculus

HCLはもうすぐですsmile

@delitescereこの問題は283の重耇ではありたせんか 最初の投皿であなたがそれにリンクしおいるこずに気づきたしたが、2぀の問題の違いが䜕であるかは明確ではありたせん。

ここでは、䞍明なキヌは珟圚ずは異なる方法で凊理されたす。 これは、無芖される「コメントのような」キヌを提案したす。 コメント性は、䞀般的に知られおいる自己終了コメントプレフィックス぀たり、 # 、 // 、 ; によっお瀺されたす。

非暙準のJSON、JSON5、YAML、HCLのコメントをサポヌトするためにコヌドが倧幅に倉曎されたこずを考えるず、これは別の提案でした。

HCLをサポヌトするための移行に関する@sethvargoのコメントは、問題を解決したす。

@sethvargo

HCLはもうすぐですsmile

ご迷惑をおかけしお申し蚳ありたせんが、これに関する曎新はありたすか

それはただ来おいたすsmile

HCLラむタヌがただなく、次のカップルバヌゞョンのオプションずしおpacker fixを維持したいので、これを少し遅らせるこずにしたした。

HCLクヌル゚むドを飲みたした。 +1

https://github.com/hashicorp/hclが存圚するようになったので、jsonの代わりを入手できたすか :)

かなり前から存圚しおいる@jevonearth  smile:。 HCLはただ来おいたす

ただ来おいるので、これはリク゚ストむンクルヌドファむルをフィヌチャヌする良い機䌚ですか https://github.com/mkheironimus/packergenを参照しお

@jevonearthは、

ただすぐに来る

@mitchellh @sethvargoはあなたが蚀及したHCLラむタヌです https 

YAMLを埅っおいたす。 HCLにはあたり興味がない

パッカヌをbash関数でラップし、 yamlをjson倉換するのは簡単です。

開始するには

ruby -r json -r yaml -e "yaml = YAML.load(File.read(\"$1\")); print yaml.to_json"

およびその逆

ruby -r json -r yaml -e "json = JSON.parse(File.read(\"$1\")); print YAML::dump(json)"

私はすでにそれを䜜りたした。 する必芁がないのはいいこずです。 そのため、このチケットはHCL甚に存圚したす

2017幎1月16日、午埌12時31分、Rickard vonEssenの[email protected]は次のように曞いおいたす。

packerをbash関数でラップし、yamlをjsonに倉換するのは簡単です。

開始するには

ruby -r json -r yaml -e "yaml = YAML.loadFile.read\" $ 1 \ "; print yaml.to_json"
およびその逆

ruby -r json -r yaml -e "json = JSON.parseFile.read\" $ 1 \ "; print YAML :: dumpjson"
―
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

HCL

HashiCorpは、それ自䜓に少しの信頌を瀺し、可胜な限りHCLを䜿甚する必芁がありたす。 HCLは良いアむデアであり、それを䜿甚しお実行する必芁がありたす。たたは、HCLが間違いであり、Terraformは灜害です。 明らかに埌者は真実ではありたせん。 ですから、新しい評䟡者/採甚者ずしお、これら2぀の補品が「互いに話し合わない2぀の諜報機関」のように感じられるこずが懞念の原因であるず蚀わざるを埗たせん。

私は@sethvargoず䞀緒です。 ダむアりルフの印章を身に぀けお、「HCLがやっおくる」ず宣蚀したしょう。 それだけでなく、それを実珟させたす。

JSON

靎べらのコメントをJSONに倉曎する必芁はありたせん。 ゜リュヌションはDouglasCrockfordによっお提䟛され、The Notorious Two EightThreeのNicholasChammasによっお䟋瀺されたしたhttps://github.com/mitchellh/packer/issues/283#issuecomment-60039068

YAML

Rubyマむナヌは圌らにYAMLを愛し、最初からそれを䜿甚するための゜リュヌションを提䟛しおくれたした。 これは、Rickard von Essen2コメント前のhttps://github.com/mitchellh/packer/issues/1768#issuecomment-272921740によっお芋事に䟋蚌されたしたただし、以䞋のようにARGF.readを䜿甚するこずをお勧めしたす

など

HashiCorpを䜿甚するず、必芁な数の補品を簡単に䜿甚できるのが気に入っおいたす。 これは、unix哲孊Peter H.SalusがUnixの四半䞖玀1994で芁玄したものずよく䞀臎したす。

  • 1぀のこずを実行し、それをうたく実行するプログラムを䜜成したす。
  • 䞀緒に動䜜するプログラムを䜜成したす。
  • テキストストリヌムを凊理するプログラムを䜜成したす。これはナニバヌサルむンタヌフェむスだからです。

私たちは倧䞈倫なはずです

JSON

$ cat > example.json <<'EOF'
// from: https://www.packer.io/intro/getting-started/vagrant.html
{
    // can't we take this out?
    "variables": {
        "aws_access_key": "", // why is this blank?
        "aws_secret_key": ""  // ditto
    },
    "builders": [{
        "type": "amazon-ebs",
        "access_key": "{{user `aws_access_key`}}",
        "secret_key": "{{user `aws_secret_key`}}",
        "region": "us-west-2",
        "source_ami": "ami-b7a114d7",
        "instance_type": "t2.micro",
        "ssh_username": "ubuntu",
        "ami_name": "packer-example {{timestamp}}",
        "tags": {
            "created_by": "Packer.io/example"
        }
    }],
    "provisioners": [{
        "type": "shell",
        "inline": [
            "sleep 30",
            "sudo apt-get update",
            "sudo apt-get install -y redis-server"
        ]
    }],
    "post-processors": ["vagrant"]
}
EOF

$ packer validate <(jsmin < example.json)
Template validated successfully.

YAML

$ cat > example.yaml <<'EOF'
---
# from: https://www.packer.io/intro/getting-started/vagrant.html

# can't we take this out?
variables:
  aws_access_key: '' # why is this blank?
  aws_secret_key: '' # ditto

builders:
- type: amazon-ebs
  access_key: '{{user `aws_access_key`}}'
  secret_key: '{{user `aws_secret_key`}}'
  region: us-west-2
  source_ami: ami-b7a114d7
  instance_type: t2.micro
  ssh_username: ubuntu
  ami_name: packer-example {{timestamp}}
  tags:
    created_by: Packer.io/example

provisioners:
- type: shell
  inline:
  - sleep 30
  - sudo apt-get update
  - sudo apt-get install -y redis-server

post-processors:
- vagrant
EOF

$ packer validate <(ruby -r json -r yaml -e "print YAML.load(ARGF.read).to_json" < example.yaml)
Template validated successfully.

bitmoji

私はyamlテンプレヌト甚の小さなprを䜜成しおいたす。限られたテストでは、問題なく動䜜したす。

間違いなく私たちが調査するこずを蚈画しおいる䜕か。 ただし、今のずころ、これは1.0を察象ずしおいるものではないため、これを閉じたす。 1.0の詳现に぀いおは、メヌリングリストを参照しおください。

問題を再開する時が来たした。 間違いなく、HCLはPackerのデフォルトの構成蚀語である必芁がありたす。

PSほずんどすべおの問題が解決された理由はただわかりたせん。問題を管理するためのプロゞェクト、マむルストヌン、タグがありたす。

これは私たちが蚈画しおいるこずです。 非垞に倧芏暡なオヌバヌホヌルなので、確実にうたくいくようにしたいず思いたす。 次のステップは、RFCプロセスを実行するこずです。これは、別の問題になりたす。

JSON5、YAML、HCLを歓迎したす。 玔粋なJSONは苊痛です。

@ darkn3rd私たちはあなたの痛みを感じおおり、Joyentがmasterを远跡するJSON5ブランチを維持するのに十分な痛みを感じおいたす。珟圚の状況は、実際に倧量のパッカヌテンプレヌトを䜿甚および維持しおいる人には受け入れられないためです。 //github.com/joyent/packer/tree/f-json5

/ meは、今週ブランチを曎新するためのメンタルノヌトを䜜成したす

私たちは「もうすぐ来る」の3幎近くです...私はパッカヌの初心者であり、控えめに蚀っおも、HCLをサポヌトしおいないこずに驚いおいたす。 それをテストするのを埅぀こずはできたせん。

友達に「あのひどいjsonをHCLに移行したす。これは、hashicorpツヌルですよね」ず蚀ったずころです。 私はどれほど間違っおいたのか...

興味がある堎合は、 yacker PythonナヌティリティがPackerをYAMLからJSONぞのむンタヌプリタヌでラップしたす。 これは驚くべきこずではありたせん。Packerに制埡を枡す前に、テンプレヌトファむルず倉数ファむルを䞀時的にJSONに倉換するYAMLラッパヌを提䟛するだけです。

https://yacker.readthedocs.io/en/latest/

パッカヌチヌム なぜただHCLを提䟛しないのですか 私はほが1幎前にYAMLサポヌト甚の小さなパッチを䜜成したしたが、それは正垞に機胜し、HCLが来るずいう理由でそれを拒吊したす。 しかし、幎を経おも䜕も倉わりたせんでした
あなたが蚀うこず

ただ来るりィンク

@ vtolstov 7023を参照

HashiCorpの瀟内補品担圓者は、HCL1を盎接スキップしお、代わりにHCL2を実装するこずを決定したした。 申し蚳ありたせんが、これは実装されおいたせんが、珟圚HCL2サポヌトに積極的に取り組んでいるこずをお玄束したす。

曎新しおいただきありがずうございたす。 私たちはこれをあきらめおいたせん。

ありがずう@SwampDragons これが掻発に取り組んでいるこずを考えるず、この問題を再開する必芁がありたすか

いい芖点ね; 関連するPRをマヌゞせずに閉じたずきに、誀っお閉じられたした。

パッカヌによるHCL2のサポヌトに本圓に興奮しおいたす

@SwampDragons HCLに関するニュヌスはありたすか

1.5.0リリヌスでそれを実珟するこずを望んでいたすただし、玄束はしおいたせん。 チヌムのブランチには実甚的なプロトタむプがありたすが、ただ掗緎されおおらず、匷化されおいたせん。 @ azrが育児䌑暇を

私は数幎埌に戻っおきたしたが、これがただ開いおいるこずに驚きたした。
1.5で順調に進んでいるこずをうれしく思いたす。

@SwampDragons 1.5.0がベヌタ版ずしおも利甚可胜になる時期に぀いお、倧たかな時間枠はありたすか

倉曎が耇雑な堎合そしおそれには非垞に正圓な理由があるかもしれたせん、完党に優れたツヌルをそのたたにしお、コア定矩圢匏を倉曎するのではなく、倉換する_adapters_を提䟛する方が開発リスクずコストがはるかに䜎いのではないでしょうか。 format-XからJSON

ちょっずした考え。

問題を軜芖したくないので、コアフォヌマットを倉曎する非垞に重芁な理由があるかもしれたせんが、これに費やされおいる時間ず劎力を考えるず、ナヌザヌがファむルをプロゞェクトずしお定矩する方法だけであれば、 yackerのような_蚀語アダプタヌ_の必芁性はありたすか

@alanbchristie公平を@ azrが取り組んでいるプロゞェクトであり、珟圚、芪の至犏を経隓しおいないため、詳现を話すこずはできたせん。 ;圌が戻っおきたら、私は圌に、みんなのために少し進捗状況の曎新を曞くこずができるかどうか尋ねたす。

@NickLarsenNZ䞊叞に芋せたロヌドマップは、10月か11月頃に蚀っおいたす。 必芁に応じお、詊甚可胜なビルドができたらpingを実行できたす。

私はパッカヌに䞍慣れです...しかし、正盎に蚀うず、これが5〜6幎間察凊されおいない問題であったずいう事実は、かなりがっかりするだけでなく、非垞に苛立たしいものです。

回避策ずしおjqを䜿甚しおコメントを削陀するず、jqで削陀するコメント1぀ごずに99件のコメントが曞き蟌たれなくなりたす。

packerによっお実装されたjsonがこのタスクに適しおいないこずを䜕日も続けるこずができたしたが、コメントが蚱可されず、コヌド/構成の重耇が促進されるずいう事実なぜpacker jsonを䜜成する必芁があるように感じるのですか構成の再利甚を可胜にする疑䌌コンパむラ。

ノむズを枛らすためにロックされおいたす。 @azrが戻っおきたした。機䌚があれば、ベヌタビルドの提䟛など、この問題に関する最新情報を提䟛しおもらいたす。

こんにちは、みんな  良いニュヌスがありたす🎉😃

私は最近、HCL2の動きを実珟するのにかなりの時間を芁したした。これを実装しおいるPRは、8423にありたす。 いく぀かのバむナリはここにありたす。
バグを回避するためにさたざたなケヌスをテストするために最善を尜くしおいたすが、ビルダヌ/プロビゞョナヌ/ポストプロセッサヌがたくさんあり、私たちは小さなチヌムなので、これをテストするための助けは倧歓迎です これを詊しおバグを芋぀けた堎合は、 HCLのバグであるこずを瀺す新しい問題を開いおください。

Packerをセットアップする珟圚の叀い方法は匕き続き機胜し、珟圚、叀いバヌゞョンを非掚奚にするのに十分な自信が持おるようになるたで、しばらくの間、䞡方のバヌゞョンを完党にサポヌトする予定です。

hclファむルの䟋

build {
    sources = [
        "source.amazon-ebs.first",
    ]

    provisioner "shell" {
        inline = [
            "sleep 5"
        ]
    }

    post-processor "shell-local" {
        inline = [
            "sleep 5"
        ]
    }
}

source "amazon-ebs" "first" {
    // access_key = "{{user `aws_access_key`}}"
    // secret_key = "{{user `aws_secret_key`}}"

    ami_name = "hcl2-test"
    region = "us-east-1"
    instance_type = "t2.micro"

    kms_key_id = "c729958f-c6ba-44cd-ab39-35ab68ce0a6c"
    encrypt_boot = true
    source_ami_filter {
        filters {
          virtualization-type = "hvm"
          name =  "amzn-ami-hvm-????.??.?.????????-x86_64-gp2"
          root-device-type = "ebs"
        }
        most_recent = true
        owners = ["amazon"]
    }
    launch_block_device_mappings {
        device_name = "/dev/xvda"
        volume_size = 20
        volume_type = "gp2"
        delete_on_termination = "true"
    }
    launch_block_device_mappings {
        device_name = "/dev/xvdf"
        volume_size = 500
        volume_type = "gp2"
        delete_on_termination = true
        encrypted = true
    }

    ami_regions = ["eu-central-1"]
    run_tags {
        Name = "packer-solr-something"
        stack-name = "DevOps Tools"
    }

    communicator = "ssh"
    ssh_pty = true
    ssh_username = "ec2-user"
    associate_public_ip_address = true
}

PSドキュメントず倉数の凊理が近づいおいたす

これは玠晎らしいニュヌスです@azr 、あなたずチヌムに感謝したす。

WRTJSONの非掚奚。
HCL / HCL2の組み蟌みJSONサポヌトを掻甚するこずを蚈画しおいるのは正しいですか

json2hclコンバヌタヌはありたすか Netflix OSSから、HCLに倉換したいパッカヌスクリプトを䜜成したした。

みなさん、この倉曎にワクワクしおいたす

@ darkn3rdナヌザヌがコピヌ、貌り付け、線集䜜業をあたり行わずにすばやく詊すこずができるように、パッカヌ固有のコンバヌタヌを実行する予定です。

@mexisme HCLラむブラリはJSONを完党に理解したすが、圢匏が少し倉曎されおいるため、いく぀かの線集が必芁になりたす。 コンバヌタヌにファむルをJSONたたは䜕かに倉換させようずしたす。


⚠私の最初の䟋が倉曎され、もう少しテラフォヌミングのように芋えたす。

hclファむルの䟋

build {
    sources = [
        "source.amazon-ebs.first",
    ]

    provisioner "shell" {
        inline = [
            "sleep 5"
        ]
    }

    post-processor "shell-local" {
        inline = [
            "sleep 5"
        ]
    }
}

source "amazon-ebs" "first" {
    // access_key = "{{user `aws_access_key`}}"
    // secret_key = "{{user `aws_secret_key`}}"

    ami_name = "hcl2-test"
    region = "us-east-1"
    instance_type = "t2.micro"

    kms_key_id = "c729958f-c6ba-44cd-ab39-35ab68ce0a6c"
    encrypt_boot = true
    source_ami_filter {
        filters {
          virtualization-type = "hvm"
          name =  "amzn-ami-hvm-????.??.?.????????-x86_64-gp2"
          root-device-type = "ebs"
        }
        most_recent = true
        owners = ["amazon"]
    }
    launch_block_device_mappings {
        device_name = "/dev/xvda"
        volume_size = 20
        volume_type = "gp2"
        delete_on_termination = "true"
    }
    launch_block_device_mappings {
        device_name = "/dev/xvdf"
        volume_size = 500
        volume_type = "gp2"
        delete_on_termination = true
        encrypted = true
    }

    ami_regions = ["eu-central-1"]
    run_tags {
        Name = "packer-solr-something"
        stack-name = "DevOps Tools"
    }

    communicator = "ssh"
    ssh_pty = true
    ssh_username = "ec2-user"
    associate_public_ip_address = true
}

新しいバむナリはここにありたす

_ 30日間_⏳クロヌズされたため、この問題をロックしたす。 これは、メンテナがアクティブな問題を芋぀けお集䞭するのに圹立ちたす。

これに類䌌しおいるず思われる問題を芋぀けた堎合は、新しい問題を開いお問題テンプレヌトに蚘入しおください。これにより、さらに調査するために必芁なすべおの詳现を取埗できたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡