【发布时间】:2019-06-25 11:26:01
【问题描述】:
我正在尝试运行调用我的 ansible playbook 的 terraform provisioner,现在我将公钥作为变量从用户传递。传递公钥时,它不需要整个密钥,只需要 ssh-rsa ,而不是完整的字符串。 我想将完整的字符串传递为“ssh-rsa Aghdgdhfghjfdh”
我正在运行的 terraform 中的供应商是:
resource "null_resource" "bastion_user_provisioner" {
provisioner "local-exec" {
command = "sleep 30 && ansible-playbook ../../../../ansible/create-user.yml --private-key ${path.module}/${var.project_name}.pem -vvv -u ubuntu -e 'username=${var.username}' -e 'user_key=${var.user_key}' -i ${var.bastion_public_ip}, -e 'root_shell=/bin/rbash' -e 'raw_password=${random_string.bastion_password.result}'"
}
}
如果我单独运行剧本:
ansible-playbook -i localhost create-user.yml --user=ubuntu --private-key=kkk000.pem -e "username=kkkkk" -e 'user_key='ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+GWlljlLzW6DOEo"' -e root_shell="/bin/bash"
它有效, 但我希望字符串位于配置器中传递的 terraform 变量中。
我想将密钥复制到文件中
ssh-rsa AWRDkj;jfdljdfldkf'sd.......
不只是
ssh-rsa
【问题讨论】:
-
您的引用看起来有问题,否则应该没问题。然而,这不是一个好的做事方式,您应该考虑如何将这些文件提供给 Ansible 角色,而不是像这样在命令行上将其作为字符串传递。
标签: ansible terraform provisioning