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
8420211a
Commit
8420211a
authored
Jan 19, 2014
by
Matthew Makai
Committed by
Michael DeHaan
Mar 16, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
new module to send text message notifications
parent
42d6fc2b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
147 additions
and
0 deletions
+147
-0
library/notification/text
+147
-0
No files found.
library/notification/text
0 → 100644
View file @
8420211a
#!/usr/bin/python
# -*- coding: utf-8 -*-
# (c) 2014, Matt Makai <matthew.makai@gmail.com>
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
DOCUMENTATION
=
'''
---
version_added: "1.2"
module: text
short_description: Sends a text message to a mobile phone.
description:
- Sends a text message to a phone number through an SMS service. Currently
only Twilio is supported.
notes:
- Like the other notification modules, this one requires an external
dependency to work. In this case, you'll need a Twilio account with
a purchased phone number to send the text message.
options:
sms_service:
description:
the SMS service to use; currently only Twilio is supported
required: false
default: twilio
account_sid:
description:
user's account id for Twilio found on the account page
required: true
auth_token:
description: user's authentication token for Twilio found on the account page
required: true
msg:
description:
the body of the text message
required: true
to_number:
description:
what phone number to send the text message to, format +15551112222
required: true
from_number:
description:
what phone number to send the text message from, format +15551112222
required: true
requirements: [ urllib, urllib2 ]
author: Matt Makai
'''
EXAMPLES
=
'''
# send a text message from the local server about the build status to (555) 303 5681
# note: you have to have purchased the 'from_number' on your Twilio account
- local_action: text msg="All servers with webserver role are now configured."
account_sid={{ twilio_account_sid }}
auth_token={{ twilio_auth_token }}
from_number=+15552014545 to_number=+15553035681
# send a text message from a server to (555) 111 3232
# note: you have to have purchased the 'from_number' on your Twilio account
- text: msg="This server's configuration is now complete."
account_sid={{ twilio_account_sid }}
auth_token={{ twilio_auth_token }}
from_number=+15553258899 to_number=+15551113232
'''
# =======================================
# text module support methods
#
try
:
import
urllib
,
urllib2
except
ImportError
:
module
.
fail_json
(
msg
=
"urllib and urllib2 are required"
)
import
base64
def
post_text
(
module
,
sms_service
,
account_sid
,
auth_token
,
msg
,
from_number
,
to_number
):
if
sms_service
==
'twilio'
:
URI
=
"https://api.twilio.com/2010-04-01/Accounts/
%
s/Messages.json"
\
%
(
account_sid
,)
AGENT
=
"Ansible/1.6"
data
=
{
'From'
:
from_number
,
'To'
:
to_number
,
'Body'
:
msg
}
encoded_data
=
urllib
.
urlencode
(
data
)
request
=
urllib2
.
Request
(
URI
)
base64string
=
base64
.
encodestring
(
'
%
s:
%
s'
%
\
(
account_sid
,
auth_token
))
.
replace
(
'
\n
'
,
''
)
request
.
add_header
(
'User-Agent'
,
AGENT
)
request
.
add_header
(
'Content-type'
,
'application/x-www-form-urlencoded'
)
request
.
add_header
(
'Accept'
,
'application/ansible'
)
request
.
add_header
(
'Authorization'
,
'Basic
%
s'
%
base64string
)
return
urllib2
.
urlopen
(
request
,
encoded_data
)
else
:
raise
Exception
(
'unknown messaging service'
)
# =======================================
# Main
#
def
main
():
module
=
AnsibleModule
(
argument_spec
=
dict
(
sms_service
=
dict
(
default
=
'twilio'
,
choices
=
[
'twilio'
,
]),
account_sid
=
dict
(
required
=
True
),
auth_token
=
dict
(
required
=
True
),
msg
=
dict
(
required
=
True
),
from_number
=
dict
(
required
=
True
),
to_number
=
dict
(
required
=
True
),
),
supports_check_mode
=
True
)
sms_service
=
module
.
params
[
'sms_service'
]
account_sid
=
module
.
params
[
'account_sid'
]
auth_token
=
module
.
params
[
'auth_token'
]
msg
=
module
.
params
[
'msg'
]
from_number
=
module
.
params
[
'from_number'
]
to_number
=
module
.
params
[
'to_number'
]
try
:
response
=
post_text
(
module
,
sms_service
,
account_sid
,
auth_token
,
msg
,
from_number
,
to_number
)
except
Exception
,
e
:
module
.
fail_json
(
msg
=
"unable to send text message to
%
s"
%
to_number
)
module
.
exit_json
(
msg
=
msg
,
changed
=
False
)
# import module snippets
from
ansible.module_utils.basic
import
*
main
()
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