我通过Ansible配置'Precise64'Ubuntu机器,在确保数据库实际创建时遇到错误。我使用的是大部分https://github.com/jcalazan/ansible-django-stack
- name: Install PostgreSQL
apt: name={{ item }} update_cache={{ update_apt_cache }} state=installed
with_items:
- postgresql
- postgresql-contrib
- python-psycopg2
tags: packages
- name: Ensure the PostgreSQL service is running
service: name=postgresql state=started enabled=yes
- name: Ensure database is created
sudo_user: postgres
postgresql_db: name={{ db_name }}
encoding='UTF-8'
lc_collate='en_US.UTF-8'
lc_ctype='en_US.UTF-8'
template='template0'
state=present
然而,当到达最后一个任务时,我收到此错误:
失败:[默认] => {“失败”:是的,“playbook”:“vagrant.yml”, “角色”:“db”,“任务”:“确保数据库已创建”} msg:无法 连接到数据库:无法连接到服务器:没有这样的文件或 directory服务器是否在本地运行并接受连接 Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”?
致命:所有主机都已经失败 - 正在中止
答案 0 :(得分:5)
我在Ubuntu 14.04 LTS上遇到了与ansible和vagrant相同的问题。阿方索的回答没有解决问题。
我意识到,vagrant将我的系统(不是en_US
)的本地化设置复制到虚拟设置。这导致了数据库创建问题。
在vagrant up
修复问题之前运行以下shell代码:
export LANGUAGE=en_US
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_PAPER="en_US.UTF-8"
export LC_NAME="en_US.UTF-8"
export LC_ADDRESS="en_US.UTF-8"
export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="en_US.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"
这会暂时更改本地化设置,以便将en_US
复制到虚拟系统。
答案 1 :(得分:4)
@damgad的答案确实对我有用,但由于我很懒,所以每次我需要设置Postgresql时,我都不想导出所有这些env变种。
我可以将它放入我的.bash_rc或类似内容中,但我也不想让它在帐户范围内定义,因为这里的要点是因为我有不同的语言环境。
所以,使用@ alfonso-perez的初步答案的一部分,我最终使用了这两个额外的任务,并且不必再输出任何东西:
- name: Install Language packages
apt: name=language-pack-en update_cache={{ update_apt_cache }} force=yes state=latest
tags: packages
- name: Locale (is a b****)
locale_gen: name={{ item }} state=present
with_items:
- en_US
- en_US.UTF-8
- pt_BR.UTF-8
- de_DE.UTF-8
- name: Install PostgreSQL
apt: name={{ item }} update_cache={{ update_apt_cache }} state=installed
with_items:
- postgresql-9.3
- postgresql-contrib-9.3
- postgresql-server-dev-9.3
- python-psycopg2
tags: packages
答案 2 :(得分:1)
经过一些调试后,我通过安装语言包让它工作,这样postgres守护进程在启动时不会抱怨Locale
- name: Install Language packages
apt: name=language-pack-en update_cache={{ update_apt_cache}} force=yes state=latest
tags: packages