当我使用以下方式运行我的剧本时,我通过额外的变量提供了一个问题:
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-rsa"来自SSH密钥。
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
当我看到that时,在我看来,我无法像使用Docker那样使用Ansible-playbook实现相同的行为,因为它将剩余的员工视为另一个额外的var。有没有办法让它发挥作用?
答案 0 :(得分:6)
正确引用应该可以解决问题:
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