使用 Ansible 安装 PostgreSQL

最近我从Chef切换到了Ansible,所以我尝试将安装Postgresql的一系列步骤从Ansible转换成playbook。

操作流程

    1. 安装必要的软件包

 

    1. 初始化postgresql

 

    1. 启动postgresql

 

    1. 创建数据库

 

    创建数据库用户

剧本

---
- hosts: all
  sudo: yes
  vars:
    dbuser: "sample-ansible"
    dbpass: "abcdefg"
    dbname: "ansible-db"

  tasks:
  - name: install postgresql
    yum: name={{ item }} state=latest
    with_items:
      - postgresql-server
      - postgresql-devel
      - postgresql-contrib
      - python-psycopg2

  - name: postgresql initdb
    shell: service postgresql initdb

  - name: start postgresql
    service: name=postgresql state=started  enabled=yes

  - name: postgres user sudores
    lineinfile: 
      dest: /etc/sudoers.d/postgres 
      owner: root
      group: root
      mode: 0440
      line: "%vagrant ALL=(postgres) NOPASSWD: ALL"
      state: present
      create: yes
      validate: "visudo -cf %s"

  - name : create database
    postgresql_db: 
      name: "{{ dbname }}"
      encoding: "UTF-8"
      login_user: postgres
    sudo_user: postgres
    sudo: yes

  - name: create user
    postgresql_user: 
      db: "{{ dbname }}"
      name: "{{ dbuser }}"
      password: "{{ dbpass }}"
      priv: ALL
      state: present
      login_user: postgres
    sudo_user: postgres
    sudo: yes

确认

[vagrant@postgresql-server ~]$ sudo su - postgres
-bash-4.1$ psql -l
                                      List of databases
    Name    |  Owner   | Encoding |  Collation  |    Ctype    |       Access privileges
------------+----------+----------+-------------+-------------+-------------------------------
 ansible-db | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres
                                                              : postgres=CTc/postgres
                                                              : "sample-ansible"=CTc/postgres
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                              : postgres=CTc/postgres
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                              : postgres=CTc/postgres
(4 rows)

积分 (jī

    • postgresqlをansibleで操作するために、’python-psycopg2’をインストールする

 

    postgresユーザを利用するため、sudoresに権限を追加する

我把本次编写的playbook上传到以下存储库中:
https://github.com/tatsu07/Sample-ansible-postgresql

广告
将在 10 秒后关闭
bannerAds