在Terraform local-exec配置器中序列化shell命令

时间:2018-01-19 18:21:37

标签: terraform kubectl

使用Terraform在 null_resource 下使用local-exec配置程序运行kubectl时出现以下错误:

  

退出状态1.输出:错误:打开/Users/myuser/.kube/config.lock:文件存在

因为我正在运行带有计数的 null_resource ,所以看起来Terraforms并行生成了几个kubectl命令,kubectl不喜欢这样。 您是否熟悉在local-exec中序列化命令以防止此问题的方法?还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

与其运行带有计数的null_resource,而是使用https://www.terraform.io/docs/providers/template/index.html在var中构建文档或命令,然后执行一次kubectl

使用YAML的Kubectl可以一次吃掉多个文档,如果您仅指定资源ID,它们可以在kubectl后用空格列出。

答案 1 :(得分:0)

将local-exec提供器与null_resource一起使用时,我们发现您可以通过以下方式序列化命令;

function doSomething(value) {
  console.log('should be:', value);
  const _value = value || Math.random() > 0.5 ? 'foo' : 'bar';
  console.log('actually is:', _value);
}

let values = ['foo', 'bar'];
const first = doSomething(values[0]);
const second = doSomething(values[1]);