ansible - 使用ansible从用户那里读取密码
问题描述
我有一些代码可以从用户那里读取密码并将其写入文件,我输入了密码cPUtnZjn$s2O但在输出文件中 得到了cPUtnZjn 。
---
- name: read password
hosts: all
vars_prompt:
- name: admin_password
prompt: "enter password for admin"
private: no
tasks:
- name: modify database
shell: |
echo 'database_driver: pdo_mysql
database_host: 127.0.0.1
database_password: '{{admin_password}}'' > /root/admin_password
输出
database_driver: pdo_mysql
database_host: 127.0.0.1
database_password: cPUtnZjn
如何解决?
解决方案
您引用字符串的方式是错误的,因为您正在退出单引号以输出密码。$s2O
然后被您的 shell 解释为环境变量。由于 id 不存在,因此为空。以下应该得到您期望的结果:
- name: modify database
shell: |
echo 'database_driver: pdo_mysql
database_host: 127.0.0.1
database_password: {{ admin_password }}' > /root/admin_password
如果您确实需要在结果中的密码周围加上单引号,您可以执行以下操作(警告:提前引用地狱......):
- name: modify database
shell: |
echo "database_driver: pdo_mysql
database_host: 127.0.0.1
database_password: '"'{{ admin_password }}'"'" > /root/admin_password
推荐阅读
- zend-framework3 - Zf3 使用数据库中的数据填充选择元素
- themes - Is it possible to replace Keycloak's build in account-console?
- google-sheets - 带有 if 条件的 Arrayformula - 仅隐藏行值而不包括它们
- python - 在哪里使用 Django 框架最好地执行数据库操作?
- ios - 如何在 Swift 中等待异步函数?
- conv-neural-network - 如何修复错误“无法分配给非变量...”?
- docker - nginx反向代理到其他nginx 502坏网关
- python - 何时判断我们的 CNN 模型是否过拟合?
- python - 无法在 Windows 10 中安装 Jupyter
- amazon-web-services - AWS CloudFormation 伪参数在本地不正确