Rename 'ensure' to 'state' because I think it's a bit cleaner and doesn't imply

all modules take a common parameter name.  But more or less we still work idempotently
in modules.
This commit is contained in:
Michael DeHaan 2012-02-26 22:31:42 -05:00
parent 228d1a0834
commit ba4e36a9a9
10 changed files with 45 additions and 72 deletions

View file

@ -149,16 +149,16 @@ up around the library scripts, and you can easily write your own.
Current modules include:
* command -- runs commands, giving output, return codes, and run time info
* command - runs commands, giving output, return codes, and run time info
* ping - just returns if the system is up or not
* facter - retrieves facts about the host OS
* ohai - similar to facter, but returns structured data
* copy - add files to remote systems
* setup - pushes key/value data onto the system for use in templating
* template - takes a local template file and saves a templated version remotely
* git - deploy simple apps directly from source control
Service, package, and user modules, supporting puppet-like ensure semantics
are coming soon.
More coming soon! Contributions welcome!
Playbooks
=========

View file

@ -1,7 +1,7 @@
'\" t
.\" Title: ansible-modules
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\" Date: 02/26/2012
.\" Manual: System administration commands
.\" Source: Ansible-modules 0.0.1
@ -9,15 +9,6 @@
.\"
.TH "ANSIBLE\-MODULES" "5" "02/26/2012" "Ansible\-modules 0\&.0\&.1" "System administration commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
@ -101,7 +92,7 @@ This module is informative only \- it takes no parameters & does not support cha
.sp
Controls services on remote machines\&.
.PP
\fBensure=\fR
\fBstate=\fR
.RS 4
Values are
\fIstarted\fR,

View file

@ -121,7 +121,7 @@ service
Controls services on remote machines.
*ensure=*::
*state=*::
Values are 'started', 'stopped', or 'restarted'. Started/stopped
are idempotent actions that will not run commands unless neccessary.

View file

@ -1,7 +1,7 @@
'\" t
.\" Title: ansible-modules
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\" Date: 02/26/2012
.\" Manual: System administration commands
.\" Source: Ansible-playbook 0.0.1
@ -9,15 +9,6 @@
.\"
.TH "ANSIBLE\-MODULES" "5" "02/26/2012" "Ansible\-playbook 0\&.0\&.1" "System administration commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
@ -37,29 +28,27 @@ Ansible ships with a ansible\-playbook tool for running playbooks\&. Playbooks c
Playbooks are currently writeable in YAML\&. Other formats (JSON?) may be supported in the future\&.
.SH "EXAMPLE"
.sp
FIXME: verify this is correct below
.sp
.if n \{\
.RS 4
.\}
.nf
\-\-\-
\- pattern: \*(Aq*\*(Aq
hosts: \*(Aq/etc/ansible/hosts\*(Aq
\- pattern: \'*\'
hosts: \'/etc/ansible/hosts\'
tasks:
\- do:
\- configure template & module variables for future template calls
\- setup http_port=80 max_clients=200
\- do:
\- write the apache config file
\- template src=/srv/mytemplates/httpd\&.j2 dest=/etc/httpd/conf
\- name:configure template & module variables for future template calls
action: setup http_port=80 max_clients=200
\- name: write the apache config file
action: template src=/srv/mytemplates/httpd\&.j2 dest=/etc/httpd/conf
notify:
\- restart apache
\- do
\- ensure apache is running
\- service name=httpd ensure=started
\- name: ensure apache is running
action: service name=httpd ensure=started
handlers:
\- do:
\- restart apache
\- service name=httpd ensure=restarted
\- name: restart apache
\- action: service name=httpd ensure=restarted
.fi
.if n \{\
.RE
@ -81,9 +70,7 @@ Playbooks are executed top down and can contain multiple references to patterns\
.sp
For each pattern, the tasks in the \fItasks\fR list are executed in order for all hosts in the host file matching the pattern\&.
.sp
For each task, a "do" statement describes what the task is and what ansible module to use to accomplish the task, along with any arguments\&. The first line in the "do" is the name of the task \(em this will appear in any log output\&.
.sp
The second line in each "do" is the module name followed by module arguments\&.
For each task, a name/action pair describes what the task is and what ansible module to use to accomplish the task, along with any arguments\&. Additional fields like \fIcomment:\fR can be added and will be ignored\&.
.sp
Most modules accept key=value format arguments\&.
.sp

View file

@ -29,26 +29,24 @@ be supported in the future.
EXAMPLE
-------
FIXME: verify this is correct below
[literal]
---
- pattern: '*'
hosts: '/etc/ansible/hosts'
tasks:
- do:
- configure template & module variables for future template calls
- setup http_port=80 max_clients=200
- do:
- write the apache config file
- template src=/srv/mytemplates/httpd.j2 dest=/etc/httpd/conf
- name:configure template & module variables for future template calls
action: setup http_port=80 max_clients=200
- name: write the apache config file
action: template src=/srv/mytemplates/httpd.j2 dest=/etc/httpd/conf
notify:
- restart apache
- do
- ensure apache is running
- service name=httpd ensure=started
- name: ensure apache is running
action: service name=httpd ensure=started
handlers:
- do:
- restart apache
- service name=httpd ensure=restarted
- name: restart apache
- action: service name=httpd ensure=restarted
WHAT THE EXAMPLE MEANS
@ -82,13 +80,10 @@ something different to all webservers again.
For each pattern, the tasks in the 'tasks' list are executed in order
for all hosts in the host file matching the pattern.
For each task, a "do" statement describes what the task is and what
For each task, a name/action pair describes what the task is and what
ansible module to use to accomplish the task, along with any
arguments. The first line in the "do" is the name of the task -- this
will appear in any log output.
The second line in each "do" is the module name followed by module
arguments.
arguments. Additional fields like 'comment:' can be added and will
be ignored.
Most modules accept key=value format arguments.

View file

@ -17,4 +17,4 @@
action: command /bin/false
handlers:
- name: restart apache
action: service name=httpd ensure=restarted
action: service name=httpd state=restarted

View file

@ -10,7 +10,7 @@ except ImportError:
import simplejson as json
# ===========================================
# convert arguments of form ensure=running name=foo
# convert arguments of form a=b c=d
# to a dictionary
# FIXME: make more idiomatic

View file

@ -16,7 +16,7 @@ import shlex
import subprocess
# ===========================================
# convert arguments of form ensure=running name=foo
# convert arguments of form a=b c=d
# to a dictionary
# FIXME: make more idiomatic

View file

@ -10,7 +10,7 @@ import shlex
import subprocess
# ===========================================
# convert arguments of form ensure=running name=foo
# convert arguments of form a=b c=d
# to a dictionary
# FIXME: make more idiomatic
@ -22,7 +22,7 @@ for x in items:
params[k] = v
name = params['name']
ensure = params.get('ensure','running')
state = params.get('state','running')
# ===========================================
# get service status
@ -43,11 +43,11 @@ elif name == 'iptables' and status.find("ACCEPT") != -1:
running = True
changed = False
if not running and ensure == "started":
if not running and state == "started":
changed = True
elif running and ensure == "stopped":
elif running and state == "stopped":
changed = True
elif ensure == "restarted":
elif state == "restarted":
changed = True
# ===========================================
@ -61,11 +61,11 @@ def _run(cmd):
rc = 0
if changed:
if ensure == 'started':
if state == 'started':
rc = _run("/sbin/service %s start" % name)
elif ensure == 'stopped':
elif state == 'stopped':
rc = _run("/sbin/service %s stop" % name)
elif ensure == 'restarted':
elif state == 'restarted':
rc1 = _run("/sbin/service %s stop" % name)
rc2 = _run("/sbin/service %s start" % name)
rc = rc1 and rc2

View file

@ -10,7 +10,7 @@ except ImportError:
import simplejson as json
# ===========================================
# convert arguments of form ensure=running name=foo
# convert arguments of form a=b c=d
# to a dictionary
# FIXME: make more idiomatic