diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..fef1810 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,25 @@ +--- + +mongodb_enabled: yes +mongodb_packages: + - python-selinux + - python-pymongo + - mongodb-10gen + +# Configuration +mongodb_dbpath: /var/lib/mongodb +mongodb_logpath: /var/log/mongodb/mongodb.log +mongodb_port: 27017 +mongodb_nojournal: true +mongodb_cpu: true +mongodb_verbose: true +mongodb_quota: false +mongodb_auth: false +mongodb_objcheck: false +mongodb_diaglog: 0 +mongodb_nohints: false +mongodb_nohttpinterface: false +mongodb_noscripting: false +mongodb_notablescan: false +mongodb_noprealloc: false +mongodb_replSet: "" # Set for enable replication diff --git a/tasks/configure.yml b/tasks/configure.yml new file mode 100644 index 0000000..14af955 --- /dev/null +++ b/tasks/configure.yml @@ -0,0 +1,4 @@ +--- + + - name: Configure mongodb + template: src=mongodb.conf.j2 dest=/etc/mongodb.conf owner=root group=root mode=0644 diff --git a/tasks/install.deb.yml b/tasks/install.deb.yml new file mode 100644 index 0000000..fae2c8a --- /dev/null +++ b/tasks/install.deb.yml @@ -0,0 +1,11 @@ +--- + +- name: Add APT key + apt_key: url=http://docs.mongodb.org/10gen-gpg-key.asc id=7F0CEB10 + +- name: Add APT repository + apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' update_cache=yes + +- name: Install mongodb-org + apt: pkg={{item}} + with_items: mongodb_packages diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..f35f8e7 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,5 @@ +--- + +- include: mongodb.yml + when: mongodb_enabled + tags: [mongodb] diff --git a/tasks/mongodb.yml b/tasks/mongodb.yml new file mode 100644 index 0000000..d69fb3b --- /dev/null +++ b/tasks/mongodb.yml @@ -0,0 +1,6 @@ +--- + +- include: install.deb.yml + when: ansible_os_family == 'Debian' + +- include: configure.yml diff --git a/templates/mongodb.conf.j2 b/templates/mongodb.conf.j2 new file mode 100644 index 0000000..3f9ec3d --- /dev/null +++ b/templates/mongodb.conf.j2 @@ -0,0 +1,94 @@ +# mongodb.conf + +# This file was generated by Ansible for {{ ansible_fqdn }} +# Do NOT modify this file by hand! + +# Where to store the data. + +# Note: if you run mongodb as a non-root user (recommended) you may +# need to create and set permissions for this directory manually, +# e.g., if the parent directory isn't mutable by the mongodb user. +dbpath={{mongodb_dbpath}} + +#where to log +logpath={{mongodb_logpath}} + +logappend=true + +port = {{mongodb_port}} + +# Disables write-ahead journaling +nojournal = {{'true' if mongodb_nojournal else 'false'}} + +# Enables periodic logging of CPU utilization and I/O wait +cpu = {{'true' if mongodb_cpu else 'false'}} + +# Verbose logging output. +verbose = {{'true' if mongodb_verbose else 'false'}} + +# Enable db quota management +quota = {{'true' if mongodb_quota else 'false'}} + +# Turn on/off security. Off is currently the default +{% if mongodb_auth %} +auth = true +{% else %} +noauth = true +{% endif %} + +# Inspect all client data for validity on receipt (useful for +# developing drivers) +objcheck = {{'true' if mongodb_objcheck else 'false'}} + +# Set oplogging level where n is +# 0=off (default) +# 1=W +# 2=R +# 3=both +# 7=W+some reads +diaglog = {{mongodb_diaglog}} + +# Ignore query hints +nohints = {{'true' if mongodb_nohints else 'false'}} + +# Disable the HTTP interface (Defaults to localhost:28017). +nohttpinterface = {{'true' if mongodb_nohttpinterface else 'false'}} + +# Turns off server-side scripting. This will result in greatly limited +# functionality +noscripting = {{'true' if mongodb_noscripting else 'false'}} + +# Turns off table scans. Any query that would do a table scan fails. +notablescan = {{'true' if mongodb_notablescan else 'false'}} + +# Disable data file preallocation. +noprealloc = {{'true' if mongodb_noprealloc else 'false'}} + +# Specify .ns file size for new databases. +# nssize = + +# Accout token for Mongo monitoring server. +#mms-token = + +# Server name for Mongo monitoring server. +#mms-name = + +# Ping interval for Mongo monitoring server. +#mms-interval = + +# Replication Options + +# in master/slave replicated mongo databases, specify here whether +# this is a slave or master +#slave = true +#source = master.example.com +# Slave only: specify a single database to replicate +#only = master.example.com +# or +#master = true +#source = slave.example.com + +# in replica set configuration, specify the name of the replica set +{% if mongodb_replSet != "" %} +# replSet = setname +{% endif %}