Ansible won';不要按它应该的方式解释命令
此模块向我发送了一个大约000000b(语法)的错误,但当我使用命令时:Ansible won';不要按它应该的方式解释命令,ansible,Ansible,此模块向我发送了一个大约000000b(语法)的错误,但当我使用命令时: psql-U postgres-c“使用密码'000000b'创建用户gitlab;” 在航站楼,它工作正常 为什么Ansible会以其他方式解释我的命令?它失败了,因为您的命令对于ansibles命令模块来说太复杂了(通过3个不同的命令行解释器传递转义序列等等;)。你也许可以用很多巧妙的转义序列来修复它,但我不建议你尝试,主要是因为它破坏了幂等性,其次是因为它真的不可读,维护起来很烦人,第三是因为这样做会使你的衰老速度加
psql-U postgres-c“使用密码'000000b'创建用户gitlab;”
在航站楼,它工作正常
为什么Ansible会以其他方式解释我的命令?它失败了,因为您的命令对于ansibles命令模块来说太复杂了(通过3个不同的命令行解释器传递转义序列等等;)。你也许可以用很多巧妙的转义序列来修复它,但我不建议你尝试,主要是因为它破坏了幂等性,其次是因为它真的不可读,维护起来很烦人,第三是因为这样做会使你的衰老速度加快2.34倍 如果您只想使用ansible快速而直接地创建一个gitlab用户,那么您可以这样做(仍然会破坏幂等性,这意味着您必须在多次运行时捕获错误):
- 确保将容器postgres端口公开给本地主机:
docker run-d--name postgres-p 5432:5432 postgres
- 将playbook任务更改为以下内容:
- name: Execute commands in docker postgres container command: docker exec -i postgres bash -c 'psql -U postgres -c "create user gitlab with password '000000b';"'
psycopg2
,可以从发行版repos或pypi获得。此外,您可能希望提供哈希密码,而不是明文密码。链接模块文档也解决了这一问题
- command: psql -h localhost -U postgres -c "create user gitlab with password '000000b';"
ignore_errors: yes
---
- hosts: localhost
tasks:
- name: create gitlab user
postgresql_user:
login_host: localhost
login_user: postgres
name: gitlab
password: '000000b'