小编Aru*_*pet的帖子

Terraform:使用模块和 for_each 获取输出

我正在使用以下版本的 terraform:

root@sflowc01:~/terraform_proj# terraform version
Terraform v0.14.2
+ provider registry.terraform.io/dmacvicar/libvirt v0.6.2
+ provider registry.terraform.io/hashicorp/template v2.2.0
Run Code Online (Sandbox Code Playgroud)

在我的模块中(./modules/singlevm/main.tf),我将输出定义为:

output "ips" {
  value = libvirt_domain.db1.network_interface.0.addresses
}
Run Code Online (Sandbox Code Playgroud)

当我在独立模式下运行此模块时,我得到列表形式的输出,如下所示:(这是预期的)

ips = tolist([
  "192.168.122.167",
])
Run Code Online (Sandbox Code Playgroud)

我的 tfvars 定义为:

myvms = {
  vm1 = {
    hostname  = "centos01"
    osdisk_gb = 20
    CPU_Count = 4
    RAM       = 256
    Image     = "CentOS-7-x86_64-GenericCloud.qcow2"
  }
  vm2 = {
    hostname  = "ubuntu01"
    osdisk_gb = 40
    CPU_Count = 8
    RAM       = 512
    Image     = "ubuntu-16.04-server-cloudimg-amd64-disk1.img"

  }
}
Run Code Online (Sandbox Code Playgroud)

在我的根模块中,我使用for_each创建多个虚拟机,并且尝试从根模块捕获相同的输出(./main.tf) …

terraform terraform0.12+

7
推荐指数
1
解决办法
9228
查看次数

python pandas“无法设置列不匹配的行”错误

我在向数据集添加新行时遇到问题。

这是示例DataFrame

column_names = ['A','B','C']
items = [['a1','b1','c1'],['a2','b2']]
newDF = pd.DataFrame(items,columns=column_names)
print(newDF)
Run Code Online (Sandbox Code Playgroud)

输出:

    A   B     C
0  a1  b1    c1
1  a2  b2  None
Run Code Online (Sandbox Code Playgroud)

由于缺少 c2,它被替换为None. 这很好,正如预期的那样。

现在,如果我继续向现有的添加类似的行DataFrame,如下所示:

newDF.loc[len(newDF)] = ['a3','b3']
Run Code Online (Sandbox Code Playgroud)

我收到错误“无法设置列不匹配的行”。

我如何添加这个额外的行,以便它会自动处理丢失的 c3 withNone或 NaN?

python dataframe pandas

6
推荐指数
1
解决办法
9274
查看次数

Python字符串拆分,处理单引号

我试图用","分割字符串.'split'函数可以正常运行以下'example1'.

example1 = "1,'aaa',337.5,17195,.02,0,0,'yes','abc'"
example1.split(",")
Result: ['1', "'aaa'", '337.5', '17195', '.02', '0', '0', "'yes'", "'abc'"]
Run Code Online (Sandbox Code Playgroud)

但是,在这里我有一个场景,单引号中有逗号,我不想分开.

example2 = "1,'aaa',337.5,17195,.02,0,0,'yes','abc, def, xyz'"
example2.split(",")
Result: ["1,'aaa',337.5,17195,.02,0,0,'yes','abc,", 'def,', "xyz'"]
Run Code Online (Sandbox Code Playgroud)

但我试图得到这个结果:

['1', "'aaa'", '337.5', '17195', '.02', '0', '0', "'yes'", "'abc, def, xyz'"]
Run Code Online (Sandbox Code Playgroud)

如何通过字符串拆分功能实现此目的?

python string list

4
推荐指数
1
解决办法
143
查看次数

标签 统计

python ×2

dataframe ×1

list ×1

pandas ×1

string ×1

terraform ×1

terraform0.12+ ×1