Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
b3aba405
Commit
b3aba405
authored
Jul 29, 2012
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #712 from lorin/postgres-fixup
Postgres fixup
parents
487c8267
dcd214a6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
65 additions
and
26 deletions
+65
-26
examples/playbooks/postgresql.yaml
+39
-0
library/apt
+1
-1
library/postgresql_db
+6
-6
library/postgresql_user
+19
-19
No files found.
examples/playbooks/postgresql.yaml
0 → 100644
View file @
b3aba405
##
# Example Ansible playbook that uses the PostgreSQL module.
#
# This installs PostgreSQL on an Ubuntu system, creates a database called
# "myapp" and a user called "django" with password "mysupersecretpassword"
# with access to the "myapp" database.
#
---
-
hosts
:
webservers
sudo
:
True
gather_facts
:
False
tasks
:
-
name
:
ensure apt cache is up to date
action
:
apt update_cache=yes
-
name
:
ensure packages are installed
action
:
apt pkg=$item
with_items
:
-
postgresql
-
libpq-dev
-
python-psycopg2
-
hosts
:
webservers
sudo
:
True
sudo_user
:
postgres
gather_facts
:
False
vars
:
dbname
:
myapp
dbuser
:
django
dbpassword
:
mysupersecreetpassword
tasks
:
-
name
:
ensure database is created
action
:
postgresql_db db=$dbname
-
name
:
ensure user has access to database
action
:
postgresql_user db=$dbname user=$dbuser password=$dbpassword
\ No newline at end of file
library/apt
View file @
b3aba405
...
...
@@ -128,7 +128,7 @@ def main():
p
=
module
.
params
if
p
[
'package'
]
is
None
and
p
[
'update_cache'
]
!= 'yes':
module
.
fail_json
(
msg
=
'pkg=name and/or update
-
cache=yes is required'
)
module
.
fail_json
(
msg
=
'pkg=name and/or update
_
cache=yes is required'
)
install_recommends
=
(
p
[
'install_recommends'
]
==
'yes'
)
...
...
library/postgresql_db
View file @
b3aba405
...
...
@@ -52,9 +52,9 @@ def db_create(cursor, db):
def
main
():
module
=
AnsibleModule
(
argument_spec
=
dict
(
loginuser
=
dict
(
default
=
"postgres"
),
login
pass
=
dict
(
default
=
""
),
loginhost
=
dict
(
default
=
""
),
login
_
user
=
dict
(
default
=
"postgres"
),
login
_password
=
dict
(
default
=
""
),
login
_
host
=
dict
(
default
=
""
),
db
=
dict
(
required
=
True
),
state
=
dict
(
default
=
"present"
,
choices
=
[
"absent"
,
"present"
]),
)
...
...
@@ -67,9 +67,9 @@ def main():
state
=
module
.
params
[
"state"
]
changed
=
False
try
:
db_connection
=
psycopg2
.
connect
(
host
=
module
.
params
[
"loginhost"
],
user
=
module
.
params
[
"loginuser"
],
password
=
module
.
params
[
"login
pass
"
],
db_connection
=
psycopg2
.
connect
(
host
=
module
.
params
[
"login
_
host"
],
user
=
module
.
params
[
"login
_
user"
],
password
=
module
.
params
[
"login
_password
"
],
database
=
"template1"
)
# Enable autocommit so we can create databases
db_connection
.
autocommit
=
True
...
...
library/postgresql_user
View file @
b3aba405
...
...
@@ -33,10 +33,10 @@ def user_exists(cursor, user):
return
cursor
.
rowcount
>
0
def
user_add
(
cursor
,
user
,
passwd
,
db
):
def
user_add
(
cursor
,
user
,
passw
or
d
,
db
):
"""Create a new user with write access to the database"""
query
=
"CREATE USER
%(user)
s with PASSWORD '
%(passwd)
s'"
cursor
.
execute
(
query
%
{
"user"
:
user
,
"passw
d"
:
passw
d
})
query
=
"CREATE USER
%(user)
s with PASSWORD '
%(passw
or
d)
s'"
cursor
.
execute
(
query
%
{
"user"
:
user
,
"passw
ord"
:
passwor
d
})
grant_privileges
(
cursor
,
user
,
db
)
return
True
...
...
@@ -60,19 +60,19 @@ def revoke_privileges(cursor, user, db):
cursor
.
execute
(
query
%
{
'user'
:
user
,
'db'
:
db
})
def
user_mod
(
cursor
,
user
,
passwd
,
db
):
def
user_mod
(
cursor
,
user
,
passw
or
d
,
db
):
"""Update password and permissions"""
changed
=
False
# Handle passwords.
if
passwd
is
not
None
:
if
passw
or
d
is
not
None
:
select
=
"SELECT rolpassword FROM pg_authid where rolname=
%(user)
s"
cursor
.
execute
(
select
,
{
"user"
:
user
})
current_pass_hash
=
cursor
.
fetchone
()[
0
]
# Not sure how to hash the new password, so we just initiate the
# change and check if the hash changed
alter
=
"ALTER USER
%(user)
s WITH PASSWORD '
%(passwd)
s'"
cursor
.
execute
(
alter
%
{
"user"
:
user
,
"passw
d"
:
passw
d
})
alter
=
"ALTER USER
%(user)
s WITH PASSWORD '
%(passw
or
d)
s'"
cursor
.
execute
(
alter
%
{
"user"
:
user
,
"passw
ord"
:
passwor
d
})
cursor
.
execute
(
select
,
{
"user"
:
user
})
new_pass_hash
=
cursor
.
fetchone
()[
0
]
if
current_pass_hash
!=
new_pass_hash
:
...
...
@@ -103,17 +103,17 @@ def user_delete(cursor, user, db):
def
main
():
module
=
AnsibleModule
(
argument_spec
=
dict
(
loginuser
=
dict
(
default
=
"postgres"
),
login
pass
=
dict
(
default
=
""
),
loginhost
=
dict
(
default
=
""
),
login
_
user
=
dict
(
default
=
"postgres"
),
login
_password
=
dict
(
default
=
""
),
login
_
host
=
dict
(
default
=
""
),
user
=
dict
(
required
=
True
),
passwd
=
dict
(
default
=
None
),
passw
or
d
=
dict
(
default
=
None
),
state
=
dict
(
default
=
"present"
,
choices
=
[
"absent"
,
"present"
]),
db
=
dict
(
required
=
True
),
)
)
user
=
module
.
params
[
"user"
]
passw
d
=
module
.
params
[
"passw
d"
]
passw
ord
=
module
.
params
[
"passwor
d"
]
state
=
module
.
params
[
"state"
]
db
=
module
.
params
[
"db"
]
...
...
@@ -121,9 +121,9 @@ def main():
module
.
fail_json
(
msg
=
"the python psycopg2 module is required"
)
try
:
db_connection
=
psycopg2
.
connect
(
host
=
module
.
params
[
"loginhost"
],
user
=
module
.
params
[
"loginuser"
],
password
=
module
.
params
[
"login
pass
"
],
db_connection
=
psycopg2
.
connect
(
host
=
module
.
params
[
"login
_
host"
],
user
=
module
.
params
[
"login
_
user"
],
password
=
module
.
params
[
"login
_password
"
],
database
=
db
)
cursor
=
db_connection
.
cursor
()
except
Exception
as
e
:
...
...
@@ -131,12 +131,12 @@ def main():
if
state
==
"present"
:
if
user_exists
(
cursor
,
user
):
changed
=
user_mod
(
cursor
,
user
,
passwd
,
db
)
changed
=
user_mod
(
cursor
,
user
,
passw
or
d
,
db
)
else
:
if
passwd
is
None
:
msg
=
"passwd parameter required when adding a user"
if
passw
or
d
is
None
:
msg
=
"passw
or
d parameter required when adding a user"
module
.
fail_json
(
msg
=
msg
)
changed
=
user_add
(
cursor
,
user
,
passwd
,
db
)
changed
=
user_add
(
cursor
,
user
,
passw
or
d
,
db
)
elif
state
==
"absent"
:
if
user_exists
(
cursor
,
user
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment