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
debd6fee
Commit
debd6fee
authored
Mar 28, 2012
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #99 from chjohnst/master
Remote port and error check for old paramiko
parents
97776537
509c330f
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
46 additions
and
34 deletions
+46
-34
bin/ansible
+19
-15
lib/ansible/connection.py
+5
-1
lib/ansible/constants.py
+1
-2
lib/ansible/playbook.py
+15
-11
lib/ansible/runner.py
+3
-2
library/service
+3
-3
No files found.
bin/ansible
View file @
debd6fee
...
...
@@ -49,30 +49,32 @@ class Cli(object):
''' create an options parser for bin/ansible '''
parser
=
OptionParser
(
usage
=
'ansible <host-pattern> [options]'
)
parser
.
add_option
(
"-a"
,
"--args"
,
dest
=
"module_args"
,
parser
.
add_option
(
'-a'
,
'--args'
,
dest
=
'module_args'
,
help
=
"module arguments"
,
default
=
C
.
DEFAULT_MODULE_ARGS
)
parser
.
add_option
(
"-B"
,
"--background"
,
dest
=
"seconds"
,
type
=
'int'
,
default
=
0
,
help
=
"run asynchronously, failing after X seconds"
)
parser
.
add_option
(
'-B'
,
'--background'
,
dest
=
'seconds'
,
type
=
'int'
,
default
=
0
,
help
=
'run asynchronously, failing after X seconds'
)
parser
.
add_option
(
'-f'
,
'--forks'
,
dest
=
'forks'
,
default
=
C
.
DEFAULT_FORKS
,
type
=
'int'
,
help
=
'number of parallel processes to use'
)
parser
.
add_option
(
"-i"
,
"--inventory-file"
,
dest
=
"inventory"
,
help
=
"inventory host file"
,
default
=
C
.
DEFAULT_HOST_LIST
)
parser
.
add_option
(
"-k"
,
"--ask-pass"
,
default
=
False
,
action
=
"store_true"
,
help
=
"ask for SSH password"
)
parser
.
add_option
(
"-M"
,
"--module-path"
,
dest
=
"module_path"
,
parser
.
add_option
(
'-i'
,
'--inventory-file'
,
dest
=
'inventory'
,
help
=
'inventory host file'
,
default
=
C
.
DEFAULT_HOST_LIST
)
parser
.
add_option
(
'-k'
,
'--ask-pass'
,
default
=
False
,
action
=
'store_true'
,
help
=
'ask for SSH password'
)
parser
.
add_option
(
'-M'
,
'--module-path'
,
dest
=
'module_path'
,
help
=
"path to module library"
,
default
=
C
.
DEFAULT_MODULE_PATH
)
parser
.
add_option
(
"-m"
,
"--module-name"
,
dest
=
"module_name"
,
parser
.
add_option
(
'-m'
,
'--module-name'
,
dest
=
'module_name'
,
help
=
"module name to execute"
,
default
=
C
.
DEFAULT_MODULE_NAME
)
parser
.
add_option
(
'-o'
,
'--one-line'
,
dest
=
'one_line'
,
action
=
'store_true'
,
help
=
"condense output"
)
help
=
'condense output'
)
parser
.
add_option
(
'-P'
,
'--poll'
,
default
=
C
.
DEFAULT_POLL_INTERVAL
,
type
=
'int'
,
dest
=
'poll_interval'
,
help
=
"set the poll interval if using -B"
)
dest
=
'poll_interval'
,
help
=
'set the poll interval if using -B'
)
parser
.
add_option
(
'-t'
,
'--tree'
,
dest
=
'tree'
,
default
=
None
,
help
=
"log output to this directory"
)
help
=
'log output to this directory'
)
parser
.
add_option
(
'-T'
,
'--timeout'
,
default
=
C
.
DEFAULT_TIMEOUT
,
type
=
'int'
,
dest
=
'timeout'
,
help
=
"set the SSH timeout in seconds"
)
dest
=
'timeout'
,
help
=
'set the SSH timeout in seconds'
)
parser
.
add_option
(
'-u'
,
'--user'
,
default
=
C
.
DEFAULT_REMOTE_USER
,
dest
=
'remote_user'
,
help
=
'connect as this user'
)
parser
.
add_option
(
'-p'
,
'--port'
,
default
=
C
.
DEFAULT_REMOTE_PORT
,
type
=
'int'
,
dest
=
'remote_port'
,
help
=
'set the remote ssh port'
)
options
,
args
=
parser
.
parse_args
()
self
.
callbacks
.
options
=
options
...
...
@@ -102,7 +104,8 @@ class Cli(object):
module_args
=
shlex
.
split
(
options
.
module_args
),
remote_user
=
options
.
remote_user
,
remote_pass
=
sshpass
,
host_list
=
options
.
inventory
,
timeout
=
options
.
timeout
,
forks
=
options
.
forks
,
background
=
options
.
seconds
,
pattern
=
pattern
,
remote_port
=
options
.
remote_port
,
forks
=
options
.
forks
,
background
=
options
.
seconds
,
pattern
=
pattern
,
callbacks
=
self
.
callbacks
,
verbose
=
True
,
)
return
(
runner
,
runner
.
run
())
...
...
@@ -116,7 +119,8 @@ class Cli(object):
module_args
=
[
"jid=
%
s"
%
jid
],
remote_user
=
old_runner
.
remote_user
,
remote_pass
=
old_runner
.
remote_pass
,
host_list
=
hosts
,
timeout
=
old_runner
.
timeout
,
forks
=
old_runner
.
forks
,
pattern
=
'*'
,
callbacks
=
self
.
silent_callbacks
,
verbose
=
True
,
remote_port
=
old_runner
.
remote_port
,
pattern
=
'*'
,
callbacks
=
self
.
silent_callbacks
,
verbose
=
True
,
)
# ----------------------------------------------
...
...
lib/ansible/connection.py
View file @
debd6fee
...
...
@@ -65,9 +65,13 @@ class ParamikoConnection(object):
allow_agent
=
True
,
look_for_keys
=
True
,
password
=
self
.
runner
.
remote_pass
,
timeout
=
self
.
runner
.
timeout
timeout
=
self
.
runner
.
timeout
,
port
=
self
.
runner
.
remote_port
)
except
Exception
,
e
:
if
str
(
e
)
.
find
(
"PID check failed"
)
!=
-
1
:
raise
errors
.
AnsibleError
(
"paramiko version issue, please upgrade paramiko on the overlord"
)
else
:
raise
errors
.
AnsibleConnectionFailed
(
str
(
e
))
return
self
...
...
lib/ansible/constants.py
View file @
debd6fee
...
...
@@ -32,5 +32,4 @@ DEFAULT_TIMEOUT = 10
DEFAULT_POLL_INTERVAL
=
15
DEFAULT_REMOTE_USER
=
'root'
DEFAULT_REMOTE_PASS
=
None
DEFAULT_REMOTE_PORT
=
22
lib/ansible/playbook.py
View file @
debd6fee
...
...
@@ -54,6 +54,7 @@ class PlayBook(object):
timeout
=
C
.
DEFAULT_TIMEOUT
,
remote_user
=
C
.
DEFAULT_REMOTE_USER
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
remote_port
=
C
.
DEFAULT_REMOTE_PORT
,
override_hosts
=
None
,
verbose
=
False
,
callbacks
=
None
,
...
...
@@ -69,6 +70,7 @@ class PlayBook(object):
self
.
timeout
=
timeout
self
.
remote_user
=
remote_user
self
.
remote_pass
=
remote_pass
self
.
remote_port
=
remote_port
self
.
verbose
=
verbose
self
.
callbacks
=
callbacks
self
.
runner_callbacks
=
runner_callbacks
...
...
@@ -253,7 +255,7 @@ class PlayBook(object):
# *****************************************************
def
_run_module
(
self
,
pattern
,
host_list
,
module
,
args
,
remote_user
,
async_seconds
,
async_poll_interval
,
only_if
):
remote_port
,
async_seconds
,
async_poll_interval
,
only_if
):
''' run a particular module step in a playbook '''
hosts
=
[
h
for
h
in
host_list
if
(
h
not
in
self
.
stats
.
failures
)
and
(
h
not
in
self
.
stats
.
dark
)]
...
...
@@ -262,7 +264,7 @@ class PlayBook(object):
pattern
=
pattern
,
groups
=
self
.
groups
,
module_name
=
module
,
module_args
=
args
,
host_list
=
hosts
,
forks
=
self
.
forks
,
remote_pass
=
self
.
remote_pass
,
module_path
=
self
.
module_path
,
timeout
=
self
.
timeout
,
remote_user
=
remote_user
,
timeout
=
self
.
timeout
,
remote_user
=
remote_user
,
remote_port
=
remote_port
,
setup_cache
=
SETUP_CACHE
,
basedir
=
self
.
basedir
,
conditional
=
only_if
,
callbacks
=
self
.
runner_callbacks
,
)
...
...
@@ -275,7 +277,7 @@ class PlayBook(object):
# *****************************************************
def
_run_task
(
self
,
pattern
=
None
,
host_list
=
None
,
task
=
None
,
remote_user
=
None
,
handlers
=
None
,
conditional
=
False
):
remote_user
=
None
,
remote_port
=
None
,
handlers
=
None
,
conditional
=
False
):
''' run a single task in the playbook and recursively run any subtasks. '''
# load the module name and parameters from the task entry
...
...
@@ -303,8 +305,7 @@ class PlayBook(object):
# load up an appropriate ansible runner to
# run the task in parallel
results
=
self
.
_run_module
(
pattern
,
host_list
,
module_name
,
module_args
,
remote_user
,
async_seconds
,
async_poll_interval
,
only_if
)
module_args
,
remote_user
,
remote_port
,
async_seconds
,
async_poll_interval
,
only_if
)
self
.
stats
.
compute
(
results
)
...
...
@@ -399,7 +400,7 @@ class PlayBook(object):
# *****************************************************
def
_do_setup_step
(
self
,
pattern
,
vars
,
user
,
vars_files
=
None
):
def
_do_setup_step
(
self
,
pattern
,
vars
,
user
,
port
,
vars_files
=
None
):
''' push variables down to the systems and get variables+facts back up '''
# this enables conditional includes like $facter_os.yml and is only done
...
...
@@ -426,7 +427,7 @@ class PlayBook(object):
pattern
=
pattern
,
groups
=
self
.
groups
,
module_name
=
'setup'
,
module_args
=
push_var_str
,
host_list
=
host_list
,
forks
=
self
.
forks
,
module_path
=
self
.
module_path
,
timeout
=
self
.
timeout
,
remote_user
=
user
,
timeout
=
self
.
timeout
,
remote_user
=
user
,
remote_port
=
port
,
remote_pass
=
self
.
remote_pass
,
setup_cache
=
SETUP_CACHE
,
callbacks
=
self
.
runner_callbacks
,
)
.
run
()
...
...
@@ -459,15 +460,16 @@ class PlayBook(object):
tasks
=
pg
.
get
(
'tasks'
,
[])
handlers
=
pg
.
get
(
'handlers'
,
[])
user
=
pg
.
get
(
'user'
,
C
.
DEFAULT_REMOTE_USER
)
port
=
pg
.
get
(
'port'
,
C
.
DEFAULT_REMOTE_PORT
)
self
.
callbacks
.
on_play_start
(
pattern
)
# push any variables down to the system # and get facts/ohai/other data back up
self
.
_do_setup_step
(
pattern
,
vars
,
user
,
None
)
self
.
_do_setup_step
(
pattern
,
vars
,
user
,
port
,
None
)
# now with that data, handle contentional variable file imports!
if
len
(
vars_files
)
>
0
:
self
.
_do_setup_step
(
pattern
,
vars
,
user
,
vars_files
)
self
.
_do_setup_step
(
pattern
,
vars
,
user
,
port
,
vars_files
)
# run all the top level tasks, these get run on every node
for
task
in
tasks
:
...
...
@@ -476,7 +478,8 @@ class PlayBook(object):
host_list
=
self
.
host_list
,
task
=
task
,
handlers
=
handlers
,
remote_user
=
user
remote_user
=
user
,
remote_port
=
port
)
# handlers only run on certain nodes, they are flagged by _flag_handlers
...
...
@@ -494,7 +497,8 @@ class PlayBook(object):
handlers
=
[],
host_list
=
triggered_by
,
conditional
=
True
,
remote_user
=
user
remote_user
=
user
,
remote_port
=
port
)
# end of execution for this particular pattern. Multiple patterns
...
...
lib/ansible/runner.py
View file @
debd6fee
...
...
@@ -60,8 +60,8 @@ class Runner(object):
module_name
=
C
.
DEFAULT_MODULE_NAME
,
module_args
=
C
.
DEFAULT_MODULE_ARGS
,
forks
=
C
.
DEFAULT_FORKS
,
timeout
=
C
.
DEFAULT_TIMEOUT
,
pattern
=
C
.
DEFAULT_PATTERN
,
remote_user
=
C
.
DEFAULT_REMOTE_USER
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
background
=
0
,
basedir
=
None
,
setup_cache
=
None
,
transport
=
'paramiko'
,
conditional
=
'True'
,
groups
=
{},
callbacks
=
None
,
verbose
=
False
):
remote_port
=
C
.
DEFAULT_REMOTE_PORT
,
background
=
0
,
basedir
=
None
,
setup_cache
=
None
,
transport
=
'paramiko'
,
conditional
=
'True'
,
groups
=
{},
callbacks
=
None
,
verbose
=
False
):
if
setup_cache
is
None
:
setup_cache
=
{}
...
...
@@ -92,6 +92,7 @@ class Runner(object):
self
.
verbose
=
verbose
self
.
remote_user
=
remote_user
self
.
remote_pass
=
remote_pass
self
.
remote_port
=
remote_port
self
.
background
=
background
self
.
basedir
=
basedir
...
...
library/service
View file @
debd6fee
...
...
@@ -44,7 +44,8 @@ for x in items:
name
=
params
[
'name'
]
state
=
params
.
get
(
'state'
,
'unknown'
)
if
state
not
in
[
'running'
,
'stopped'
,
'restarted'
]:
# running and started are the same
if
state
not
in
[
'running'
,
'started'
,
'stopped'
,
'restarted'
]:
print
"failed=True msg='invalid state'"
sys
.
exit
(
1
)
...
...
@@ -82,10 +83,9 @@ def _run(cmd):
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
,
shell
=
True
)
rc
=
0
if
changed
:
if
state
==
'started'
:
if
state
in
(
'started'
,
'running'
)
:
rc
=
_run
(
"/sbin/service
%
s start"
%
name
)
elif
state
==
'stopped'
:
rc
=
_run
(
"/sbin/service
%
s stop"
%
name
)
...
...
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