Terraform无法使Docker加入Swarm集群。

3
我将使用Terraform来启动一些EC2服务器,并配置Docker swarm运行。我已经将所有代码放在这个Github仓库中。 错误信息:
aws_instance.swarm-node.0 (remote-exec): Connected!
aws_instance.swarm-node.0 (remote-exec): Cannot connect to the Docker daemon. Is the docker daemon running on this host?
aws_instance.swarm-node.0 (remote-exec): flag needs an argument: --token
aws_instance.swarm-node.0 (remote-exec): See 'docker swarm join --help'.

使用--token的代码
provisioner "remote-exec" {
  inline = [
    "echo ===================================",
    "echo JOIN-TOKEN: `docker -H ${aws_instance.swarm-manager.0.private_ip} swarm join-token -q` ",
    "echo ===================================",
    "echo ===================================",
    "sudo docker swarm join ${aws_instance.swarm-manager.0.private_ip}:2377 --token $(docker -H ${aws_instance.swarm-manager.0.private_ip} swarm join-token -q worker)"
  ]
}

上述命令的输出结果:

aws_instance.swarm-node.1 (remote-exec): Usage:  docker swarm join-token [-q] [--rotate] (worker|manager)

aws_instance.swarm-node.1 (remote-exec): Manage join tokens
aws_instance.swarm-node.1 (remote-exec): JOIN-TOKEN:
aws_instance.swarm-node.1 (remote-exec): ===================================
aws_instance.swarm-node.1 (remote-exec): ===================================
aws_instance.swarm-node.1 (remote-exec): ===================================
aws_instance.swarm-node.1 (remote-exec): ===================================
aws_instance.swarm-node.1 (remote-exec): ===================================
aws_instance.swarm-node.1 (remote-exec): Cannot connect to the Docker daemon. Is the docker daemon running on this host?
aws_instance.swarm-node.1 (remote-exec): flag needs an argument: --token

我该怎么做才能使$(docker -H ${aws_instance.swarm-manager.0.private_ip}返回一个令牌?


docker -H ${aws_instance.swarm-manager.0.private_ip} swarm join-token -q worker 返回一个令牌吗? - gesellix
令牌管理应该由Terraform或自动化配置工具(如ansible、puppet、chef等)在您部署基础架构之后进行管理。 - BMW
1个回答

0

首先,第4行代码不完整;您必须指定要打印的令牌[worker|manager]

请确保docker守护程序在管理器和工作节点实例上运行。并且您的防火墙规则在两个实例上都正确设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接