【发布时间】:2021-02-15 07:11:39
【问题描述】:
在我的 Terraform 文件或工具中,我试图控制是否使用 terraform 应用计划启用特定虚拟机(模块)。有没有办法使用 Terraform init 或应用参数来做到这一点?还是我只需要创建一个 Python 主脚本来编写 terraform *.tf 文件来启用或禁用特定的虚拟机?这是一个示例,在我的 main.tf 文件中,我有几个不同的虚拟机。我想在命令行调用 terraform 以指定启用或不启用哪些虚拟机。这样做的原因是我有一个免费的社区 Cyber Range terraform 项目,所产生的成本可能很大。我希望为用户提供更多灵活性选项,并为用户调用启用哪些模块(而不是手动注释掉 Terraform 文件)提供更自动化的选项。试图使其更自动化地动态启用特定的虚拟机/模块。这可以更容易地使用 Python CLI 工具来完成,该工具为用户提供一个菜单,其中包含要启用的菜单,然后控制 Terraform。但是如果知道 Terraform 是否可以在本地使用特性来做到这一点,那就太酷了。
##########################################################
## Create Primary DC VM & AD Forest
##########################################################
module "dc1-vm" {
source = "../modules/dc1-vm"
resource_group_name = module.network.out_resource_group_name
location = var.location
prefix = var.prefix
subnet_id = module.network.dc_subnet_subnet_id
active_directory_domain = "${var.prefix}.local"
active_directory_netbios_name = var.prefix
dc1private_ip_address = var.dc1private_ip_address
#network_security_group_id = "${azurerm_network_security_group.vm_security_group.id}"
admin_username = var.admin_username
admin_password = var.admin_password
}
##########################################################
## Create Secondary Domain Controller VM & Join domain
##########################################################
/*module "dc2-vm" {
source = "../modules/dc2-vm"
resource_group_name = "${module.dc1-vm.out_resource_group_name}"
location = "${var.location}"
dcavailability_set_id = "${module.dc1-vm.out_dcavailabilityset}"
prefix = "${var.prefix}"
subnet_id = "${module.network.dc_subnet_subnet_id}"
active_directory_domain = "${var.prefix}.local"
active_directory_username = "${var.admin_username}"
active_directory_password = "${var.admin_password}"
active_directory_netbios_name = "${var.prefix}"
dc2private_ip_address = "${var.dc2private_ip_address}"
admin_username = "${var.admin_username}"
admin_password = "${var.admin_password}"
domainadmin_username = "${var.domainadmin_username}"
}*/
##########################################################
## Create the AriaCloud Adversary 1
##########################################################
module "adversary1-vm" {
source = "../modules/adversary1-vm"
resource_group_name = module.network.out_resource_group_name
location = var.location
prefix = var.prefix
subnet_id = module.network.user2_subnet_subnet_id
}
### Create Windows 10 Pro VM-1
module "win10-vm-1" {
source = "../modules/win10-vm-1"
resource_group_name = module.dc1-vm.out_resource_group_name
location = var.location
prefix = var.prefix
endpoint1_machine_name = var.endpoint1_machine_name
endpoint1_username = var.endpoint1_username
subnet_id = module.network.user1_subnet_subnet_id
active_directory_domain = "${var.prefix}.local"
active_directory_username = var.admin_username
active_directory_password = var.admin_password
admin_username = var.admin_username
admin_password = var.admin_password
vmcount = var.vmcount
}
module "win10-vm-2" {
source = "../modules/win10-vm-2"
resource_group_name = module.dc1-vm.out_resource_group_name
location = var.location
prefix = var.prefix
endpoint2_machine_name = var.endpoint2_machine_name
endpoint2_username = var.endpoint2_username
subnet_id = module.network.user1_subnet_subnet_id
active_directory_domain = "${var.prefix}.local"
active_directory_username = var.admin_username
active_directory_password = var.admin_password
admin_username = var.admin_username
admin_password = var.admin_password
vmcount = var.vmcount
}
【问题讨论】:
标签: terraform