ansible-playbook extra vars 在一个值中带有 space

ansible-playbook extra vars with a space in a value

当我 运行 我的剧本使用时,我在通过额外变量提供值时遇到了问题:

ansible-playbook gitolite-docker.yml -e "GITOLITE_SSH_KEY=$(cat roles/gitolite-docker/files/john_rsa.pub)" --ask-vault-pass

这是gitolite-docker.yml

的摘录
- name: logging admin.pub
  shell: echo "{{GITOLITE_SSH_KEY}}" > /home/ansusersu/gitoliteadmin.pub

- name: create gitolite--docker container
  docker_container: 
    name: gitolite
    image: alex2357/docker-gitolite
    state: started
    ports:
      - "8081:22"
    volumes:
      - "/docker/volumes/gitoliterepositories:/home/git/repositories"
    env:
      SSH_KEY: "{{GITOLITE_SSH_KEY}}"
      KEEP_USERS_KEYS: "dummytext"      
  become: yes 

问题是我只能从 SSH 密钥中获取前几个字符 "ssh-rsa"。

john@john-VirtualBox:~$ sudo cat /home/ansusersu/gitoliteadmin.pub
ssh-rsa
john@john-VirtualBox:~$ 

我在 {{GITOLITE_SSH_KEY}} 的两种用法中得到完全相同的值。在 Docker 容器中,我在日志文件中有完全相同的值。

对于 Docker 类似的行工作正常:

docker run -d -p 8081:22 --name gitolite -e SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" -v /docker/volumes/gitoliterepositories:/home/git/repositories alex2357/docker-gitolite

当我看到 时,在我看来我无法使用 Ansible-playbook 实现与 Docker 相同的行为,因为它将剩余的员工视为另一个额外的变量。有什么办法让它起作用吗?

正确引用应该可以解决问题:

ansible-playbook gitolite-docker.yml -e "GITOLITE_SSH_KEY='$(cat roles/gitolite-docker/files/john_rsa.pub)'" --ask-vault-pass

最终用双引号引起来:

ansible-playbook gitolite-docker.yml -e "GITOLITE_SSH_KEY=\"$(cat roles/gitolite-docker/files/john_rsa.pub)\"" --ask-vault-pass