我想用ansible拍摄部署django项目,但我仍然坚持看似非常基本的问题。
我已经创建了一个基本的playbook来部署我的Postgres服务器。
---
- hosts: default
remote_user: myusername
become: yes
become_method: sudo
become_user: postgres
vars:
- include: vars/databases.yml
tasks:
- name: Ensure Postgres server is running
service: name=postgresql state=started enabled=yes
- name: Create postgres database
postgresql_db:
name: '{{ db_name }}'
state: present
encoding: 'UTF-8'
我运行剧本,我收到此错误
fatal: [default]: FAILED! => {"failed": true, "msg": "'db_name' is undefined"}
为了保留我的所有密码和版本控制,我已经创建了一个目录变量。它位于我的项目结构中,所有我的ansible yaml文件都在deploy中,所有我的vars文件都在vars子目录中。
..
├── deploy
│ └── vars
..
├── myproject
├── manage.py
└── utils
# var/databases.yml
db_name: <database name>
这里发生了什么?
更新:根据要求添加了var / databases.yml的内容。
答案 0 :(得分:0)
在尝试创建数据库之前,必须为变量db_name分配值。错误明确指出&lt;“'db_name'未定义”&gt;,变量db_name未定义/未分配。
请参阅以下示例代码
vars:
dbname: myapp
dbuser: django
dbpassword: mysupersecretpassword
tasks:
- name: ensure database is created
postgresql_db: name={{dbname}}
答案 1 :(得分:0)
您可以像vars
一样更改vars_files
:
vars_files:
- vars/databases.yml