如何在Terraform中设置Chef节点“普通”属性(How to set chef node “normal” attributes in Terraform)

编程入门 行业动态 更新时间:2024-10-09 16:26:25
如何在Terraform中设置Chef节点“普通”属性(How to set chef node “normal” attributes in Terraform)

我有以下terraform文件:

resource "aws_instance" "hazelcast" { ami = "ami-11aa8c74" instance_type = "t2.micro" key_name = "demo_terraform" security_groups = ["ssh"] tags { Name = "chef node - hazelcast" } provisioner "chef" { environment = "${var.chef_environment}" run_list = "${var.chef_run_list_hazelcast}" node_name = "hazelcast_node" server_url = "https://${var.chef_server}/organizations/${var.chef_organization}" secret_key = "${file("~/terraform/chef-repo/encrypted_data_bag_secret")}" recreate_client = true ssl_verify_mode = ":verify_none" user_name = "${var.chef_username}" user_key = "${file("~/terraform/chef-repo/.chef/${var.chef_username}.pem")}" version = "${var.chef_client_version}" attributes_json = <<-EOF { "team": "Cloud", "install_mancenter": false, "hazelcast_version": "3.6.2-2", "max_heap_size": "1G", "min_heap_size": "1G" } } connection { type = "ssh" user = "ec2-user" private_key = "${file("/temp/basics/demo_terraform.pem")}" agent = false } } resource "aws_eip" "hazelcast" { instance = "${aws_instance.hazelcast.id}" depends_on = ["aws_instance.hazelcast"] } output "address_hazelcast" { value = "${aws_instance.hazelcast.public_ip}" }

在hazelcast配方中,我使用上面定义的常规属性来搜索具有相同特征的节点:

nodes = search(:node, "role:lc_hazelcast AND chef_environment:#{node.chef_environment} AND team:#{node.team}")

我还将常规属性存储在一些变量中,例如:

hazelcast_version=node.hazelcast_version min_heap_size=node.min_heap_size max_heap_size=node.max_heap_size

问题是,当我运行terraform apply时,我收到此错误:

aws_instance.hazelcast (chef): NoMethodError aws_instance.hazelcast (chef): ------------- aws_instance.hazelcast (chef): undefined method `team' for # <Chef::Node::Attribute:0x00000003752350>

说它找不到我在我的tf文件中定义的任何属性。

我应该如何定义普通属性,以便在节点被引导并运行运行列表时可以看到这些属性?

我错过了什么? 谢谢,加布里埃尔

I have the following terraform file:

resource "aws_instance" "hazelcast" { ami = "ami-11aa8c74" instance_type = "t2.micro" key_name = "demo_terraform" security_groups = ["ssh"] tags { Name = "chef node - hazelcast" } provisioner "chef" { environment = "${var.chef_environment}" run_list = "${var.chef_run_list_hazelcast}" node_name = "hazelcast_node" server_url = "https://${var.chef_server}/organizations/${var.chef_organization}" secret_key = "${file("~/terraform/chef-repo/encrypted_data_bag_secret")}" recreate_client = true ssl_verify_mode = ":verify_none" user_name = "${var.chef_username}" user_key = "${file("~/terraform/chef-repo/.chef/${var.chef_username}.pem")}" version = "${var.chef_client_version}" attributes_json = <<-EOF { "team": "Cloud", "install_mancenter": false, "hazelcast_version": "3.6.2-2", "max_heap_size": "1G", "min_heap_size": "1G" } } connection { type = "ssh" user = "ec2-user" private_key = "${file("/temp/basics/demo_terraform.pem")}" agent = false } } resource "aws_eip" "hazelcast" { instance = "${aws_instance.hazelcast.id}" depends_on = ["aws_instance.hazelcast"] } output "address_hazelcast" { value = "${aws_instance.hazelcast.public_ip}" }

In the hazelcast recipe I use the normal attributes defined above to search for nodes with same characteristics:

nodes = search(:node, "role:lc_hazelcast AND chef_environment:#{node.chef_environment} AND team:#{node.team}")

and also I store the normal attributes in some variables like:

hazelcast_version=node.hazelcast_version min_heap_size=node.min_heap_size max_heap_size=node.max_heap_size

The problem is that when I run terraform apply, i get this error:

aws_instance.hazelcast (chef): NoMethodError aws_instance.hazelcast (chef): ------------- aws_instance.hazelcast (chef): undefined method `team' for # <Chef::Node::Attribute:0x00000003752350>

Saying that it cannot find any attribute I'm defining in my tf file.

How should I define normal attributes so those can be seen when the node is bootstrapped and it runs the run list?

What am I missing? Thank you, Gabriel

最满意答案

那应该是node["team"] 。 我们很久以前就弃用了方法语法,并在Chef 13中删除了它。

That should be node["team"]. We deprecated the method syntax long ago and it was removed in Chef 13.

更多推荐

本文发布于:2023-08-07 12:49:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464313.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   属性   如何在   Chef   Terraform

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!