ansible诡异报错,提示引号缺失?
在写一个自动化部署mysql5.7.26的role时,莫名其妙出现以下错误,多次google后尝试无果,所以来请求一下大牛解答.
[root@ansible ansible]# ansible-playbook role-mysql.yml
ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: No JSON object could be decoded
Syntax Error while loading YAML.
did not find expected key
The error appears to be in '/root/ansible/roles/mysql/tasks/initialized.yml': line 2, column 23, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Initialized
shell: {{ app_dir }}/mysql-5.7.26/bin/mysqld --initialize-insecure --basedir={{ app_dir }}/mysql-5.7.26 --datadir={{ data_dir }} --user={{ user }}
^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
with_items:
- {{ foo }}
Should be written as:
with_items:
- "{{ foo }}"
起先该role此处使用的是绝对路径,多次测试通过,于是将路径改为用变量替代之后才开始出现此报错.
目录结构:
[root@ansible ansible]# tree roles/mysql/
roles/mysql/
├── files
│ └── mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
├── tasks
│ ├── auto_poweron.yml
│ ├── config_file.yml
│ ├── configurate_service_and_start.yml
│ ├── copy_file_and_configurate.yml
│ ├── create_dir.yml
│ ├── env_var.yml
│ ├── initialized.yml
│ ├── main.yml
│ ├── password.yml
│ ├── permission.yml
│ └── user_and_group.yml
├── templates
│ └── my.cnf.j2
└── vars
└── main.yml
4 directories, 14 files
变量文件:
[root@ansible ansible]# cat roles/mysql/vars/main.yml
app_dir: /app
data_dir: /data/mysql/data
log_dir: /data/mysql/logs
user: mysql
password: 123.com
系统版本:
[root@ansible ansible]# uname -a;cat /etc/redhat-release
Linux ansible 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
CentOS Linux release 7.6.1810 (Core)
ansible版本:
[root@ansible ansible]# ansible --version
ansible 2.9.10
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论