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):
...
@@ -49,30 +49,32 @@ class Cli(object):
''' create an options parser for bin/ansible '''
''' create an options parser for bin/ansible '''
parser
=
OptionParser
(
usage
=
'ansible <host-pattern> [options]'
)
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
)
help
=
"module arguments"
,
default
=
C
.
DEFAULT_MODULE_ARGS
)
parser
.
add_option
(
"-B"
,
"--background"
,
dest
=
"seconds"
,
type
=
'int'
,
default
=
0
,
parser
.
add_option
(
'-B'
,
'--background'
,
dest
=
'seconds'
,
type
=
'int'
,
default
=
0
,
help
=
"run asynchronously, failing after X seconds"
)
help
=
'run asynchronously, failing after X seconds'
)
parser
.
add_option
(
'-f'
,
'--forks'
,
dest
=
'forks'
,
default
=
C
.
DEFAULT_FORKS
,
type
=
'int'
,
parser
.
add_option
(
'-f'
,
'--forks'
,
dest
=
'forks'
,
default
=
C
.
DEFAULT_FORKS
,
type
=
'int'
,
help
=
'number of parallel processes to use'
)
help
=
'number of parallel processes to use'
)
parser
.
add_option
(
"-i"
,
"--inventory-file"
,
dest
=
"inventory"
,
parser
.
add_option
(
'-i'
,
'--inventory-file'
,
dest
=
'inventory'
,
help
=
"inventory host file"
,
default
=
C
.
DEFAULT_HOST_LIST
)
help
=
'inventory host file'
,
default
=
C
.
DEFAULT_HOST_LIST
)
parser
.
add_option
(
"-k"
,
"--ask-pass"
,
default
=
False
,
action
=
"store_true"
,
parser
.
add_option
(
'-k'
,
'--ask-pass'
,
default
=
False
,
action
=
'store_true'
,
help
=
"ask for SSH password"
)
help
=
'ask for SSH password'
)
parser
.
add_option
(
"-M"
,
"--module-path"
,
dest
=
"module_path"
,
parser
.
add_option
(
'-M'
,
'--module-path'
,
dest
=
'module_path'
,
help
=
"path to module library"
,
default
=
C
.
DEFAULT_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
)
help
=
"module name to execute"
,
default
=
C
.
DEFAULT_MODULE_NAME
)
parser
.
add_option
(
'-o'
,
'--one-line'
,
dest
=
'one_line'
,
action
=
'store_true'
,
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'
,
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
,
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'
,
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
,
parser
.
add_option
(
'-u'
,
'--user'
,
default
=
C
.
DEFAULT_REMOTE_USER
,
dest
=
'remote_user'
,
help
=
'connect as this 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
()
options
,
args
=
parser
.
parse_args
()
self
.
callbacks
.
options
=
options
self
.
callbacks
.
options
=
options
...
@@ -102,7 +104,8 @@ class Cli(object):
...
@@ -102,7 +104,8 @@ class Cli(object):
module_args
=
shlex
.
split
(
options
.
module_args
),
module_args
=
shlex
.
split
(
options
.
module_args
),
remote_user
=
options
.
remote_user
,
remote_pass
=
sshpass
,
remote_user
=
options
.
remote_user
,
remote_pass
=
sshpass
,
host_list
=
options
.
inventory
,
timeout
=
options
.
timeout
,
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
,
callbacks
=
self
.
callbacks
,
verbose
=
True
,
)
)
return
(
runner
,
runner
.
run
())
return
(
runner
,
runner
.
run
())
...
@@ -116,7 +119,8 @@ class Cli(object):
...
@@ -116,7 +119,8 @@ class Cli(object):
module_args
=
[
"jid=
%
s"
%
jid
],
remote_user
=
old_runner
.
remote_user
,
module_args
=
[
"jid=
%
s"
%
jid
],
remote_user
=
old_runner
.
remote_user
,
remote_pass
=
old_runner
.
remote_pass
,
host_list
=
hosts
,
remote_pass
=
old_runner
.
remote_pass
,
host_list
=
hosts
,
timeout
=
old_runner
.
timeout
,
forks
=
old_runner
.
forks
,
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):
...
@@ -65,9 +65,13 @@ class ParamikoConnection(object):
allow_agent
=
True
,
allow_agent
=
True
,
look_for_keys
=
True
,
look_for_keys
=
True
,
password
=
self
.
runner
.
remote_pass
,
password
=
self
.
runner
.
remote_pass
,
timeout
=
self
.
runner
.
timeout
timeout
=
self
.
runner
.
timeout
,
port
=
self
.
runner
.
remote_port
)
)
except
Exception
,
e
:
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
))
raise
errors
.
AnsibleConnectionFailed
(
str
(
e
))
return
self
return
self
...
...
lib/ansible/constants.py
View file @
debd6fee
...
@@ -32,5 +32,4 @@ DEFAULT_TIMEOUT = 10
...
@@ -32,5 +32,4 @@ DEFAULT_TIMEOUT = 10
DEFAULT_POLL_INTERVAL
=
15
DEFAULT_POLL_INTERVAL
=
15
DEFAULT_REMOTE_USER
=
'root'
DEFAULT_REMOTE_USER
=
'root'
DEFAULT_REMOTE_PASS
=
None
DEFAULT_REMOTE_PASS
=
None
DEFAULT_REMOTE_PORT
=
22
lib/ansible/playbook.py
View file @
debd6fee
...
@@ -54,6 +54,7 @@ class PlayBook(object):
...
@@ -54,6 +54,7 @@ class PlayBook(object):
timeout
=
C
.
DEFAULT_TIMEOUT
,
timeout
=
C
.
DEFAULT_TIMEOUT
,
remote_user
=
C
.
DEFAULT_REMOTE_USER
,
remote_user
=
C
.
DEFAULT_REMOTE_USER
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
remote_port
=
C
.
DEFAULT_REMOTE_PORT
,
override_hosts
=
None
,
override_hosts
=
None
,
verbose
=
False
,
verbose
=
False
,
callbacks
=
None
,
callbacks
=
None
,
...
@@ -69,6 +70,7 @@ class PlayBook(object):
...
@@ -69,6 +70,7 @@ class PlayBook(object):
self
.
timeout
=
timeout
self
.
timeout
=
timeout
self
.
remote_user
=
remote_user
self
.
remote_user
=
remote_user
self
.
remote_pass
=
remote_pass
self
.
remote_pass
=
remote_pass
self
.
remote_port
=
remote_port
self
.
verbose
=
verbose
self
.
verbose
=
verbose
self
.
callbacks
=
callbacks
self
.
callbacks
=
callbacks
self
.
runner_callbacks
=
runner_callbacks
self
.
runner_callbacks
=
runner_callbacks
...
@@ -253,7 +255,7 @@ class PlayBook(object):
...
@@ -253,7 +255,7 @@ class PlayBook(object):
# *****************************************************
# *****************************************************
def
_run_module
(
self
,
pattern
,
host_list
,
module
,
args
,
remote_user
,
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 '''
''' 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
)]
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):
...
@@ -262,7 +264,7 @@ class PlayBook(object):
pattern
=
pattern
,
groups
=
self
.
groups
,
module_name
=
module
,
pattern
=
pattern
,
groups
=
self
.
groups
,
module_name
=
module
,
module_args
=
args
,
host_list
=
hosts
,
forks
=
self
.
forks
,
module_args
=
args
,
host_list
=
hosts
,
forks
=
self
.
forks
,
remote_pass
=
self
.
remote_pass
,
module_path
=
self
.
module_path
,
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
,
setup_cache
=
SETUP_CACHE
,
basedir
=
self
.
basedir
,
conditional
=
only_if
,
callbacks
=
self
.
runner_callbacks
,
conditional
=
only_if
,
callbacks
=
self
.
runner_callbacks
,
)
)
...
@@ -275,7 +277,7 @@ class PlayBook(object):
...
@@ -275,7 +277,7 @@ class PlayBook(object):
# *****************************************************
# *****************************************************
def
_run_task
(
self
,
pattern
=
None
,
host_list
=
None
,
task
=
None
,
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. '''
''' run a single task in the playbook and recursively run any subtasks. '''
# load the module name and parameters from the task entry
# load the module name and parameters from the task entry
...
@@ -303,8 +305,7 @@ class PlayBook(object):
...
@@ -303,8 +305,7 @@ class PlayBook(object):
# load up an appropriate ansible runner to
# load up an appropriate ansible runner to
# run the task in parallel
# run the task in parallel
results
=
self
.
_run_module
(
pattern
,
host_list
,
module_name
,
results
=
self
.
_run_module
(
pattern
,
host_list
,
module_name
,
module_args
,
remote_user
,
module_args
,
remote_user
,
remote_port
,
async_seconds
,
async_poll_interval
,
only_if
)
async_seconds
,
async_poll_interval
,
only_if
)
self
.
stats
.
compute
(
results
)
self
.
stats
.
compute
(
results
)
...
@@ -399,7 +400,7 @@ class PlayBook(object):
...
@@ -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 '''
''' push variables down to the systems and get variables+facts back up '''
# this enables conditional includes like $facter_os.yml and is only done
# this enables conditional includes like $facter_os.yml and is only done
...
@@ -426,7 +427,7 @@ class PlayBook(object):
...
@@ -426,7 +427,7 @@ class PlayBook(object):
pattern
=
pattern
,
groups
=
self
.
groups
,
module_name
=
'setup'
,
pattern
=
pattern
,
groups
=
self
.
groups
,
module_name
=
'setup'
,
module_args
=
push_var_str
,
host_list
=
host_list
,
module_args
=
push_var_str
,
host_list
=
host_list
,
forks
=
self
.
forks
,
module_path
=
self
.
module_path
,
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
,
remote_pass
=
self
.
remote_pass
,
setup_cache
=
SETUP_CACHE
,
callbacks
=
self
.
runner_callbacks
,
callbacks
=
self
.
runner_callbacks
,
)
.
run
()
)
.
run
()
...
@@ -459,15 +460,16 @@ class PlayBook(object):
...
@@ -459,15 +460,16 @@ class PlayBook(object):
tasks
=
pg
.
get
(
'tasks'
,
[])
tasks
=
pg
.
get
(
'tasks'
,
[])
handlers
=
pg
.
get
(
'handlers'
,
[])
handlers
=
pg
.
get
(
'handlers'
,
[])
user
=
pg
.
get
(
'user'
,
C
.
DEFAULT_REMOTE_USER
)
user
=
pg
.
get
(
'user'
,
C
.
DEFAULT_REMOTE_USER
)
port
=
pg
.
get
(
'port'
,
C
.
DEFAULT_REMOTE_PORT
)
self
.
callbacks
.
on_play_start
(
pattern
)
self
.
callbacks
.
on_play_start
(
pattern
)
# push any variables down to the system # and get facts/ohai/other data back up
# 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!
# now with that data, handle contentional variable file imports!
if
len
(
vars_files
)
>
0
:
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
# run all the top level tasks, these get run on every node
for
task
in
tasks
:
for
task
in
tasks
:
...
@@ -476,7 +478,8 @@ class PlayBook(object):
...
@@ -476,7 +478,8 @@ class PlayBook(object):
host_list
=
self
.
host_list
,
host_list
=
self
.
host_list
,
task
=
task
,
task
=
task
,
handlers
=
handlers
,
handlers
=
handlers
,
remote_user
=
user
remote_user
=
user
,
remote_port
=
port
)
)
# handlers only run on certain nodes, they are flagged by _flag_handlers
# handlers only run on certain nodes, they are flagged by _flag_handlers
...
@@ -494,7 +497,8 @@ class PlayBook(object):
...
@@ -494,7 +497,8 @@ class PlayBook(object):
handlers
=
[],
handlers
=
[],
host_list
=
triggered_by
,
host_list
=
triggered_by
,
conditional
=
True
,
conditional
=
True
,
remote_user
=
user
remote_user
=
user
,
remote_port
=
port
)
)
# end of execution for this particular pattern. Multiple patterns
# end of execution for this particular pattern. Multiple patterns
...
...
lib/ansible/runner.py
View file @
debd6fee
...
@@ -60,8 +60,8 @@ class Runner(object):
...
@@ -60,8 +60,8 @@ class Runner(object):
module_name
=
C
.
DEFAULT_MODULE_NAME
,
module_args
=
C
.
DEFAULT_MODULE_ARGS
,
module_name
=
C
.
DEFAULT_MODULE_NAME
,
module_args
=
C
.
DEFAULT_MODULE_ARGS
,
forks
=
C
.
DEFAULT_FORKS
,
timeout
=
C
.
DEFAULT_TIMEOUT
,
pattern
=
C
.
DEFAULT_PATTERN
,
forks
=
C
.
DEFAULT_FORKS
,
timeout
=
C
.
DEFAULT_TIMEOUT
,
pattern
=
C
.
DEFAULT_PATTERN
,
remote_user
=
C
.
DEFAULT_REMOTE_USER
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
remote_user
=
C
.
DEFAULT_REMOTE_USER
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
background
=
0
,
basedir
=
None
,
setup_cache
=
None
,
transport
=
'paramiko'
,
remote_port
=
C
.
DEFAULT_REMOTE_PORT
,
background
=
0
,
basedir
=
None
,
setup_cache
=
None
,
conditional
=
'True'
,
groups
=
{},
callbacks
=
None
,
verbose
=
False
):
transport
=
'paramiko'
,
conditional
=
'True'
,
groups
=
{},
callbacks
=
None
,
verbose
=
False
):
if
setup_cache
is
None
:
if
setup_cache
is
None
:
setup_cache
=
{}
setup_cache
=
{}
...
@@ -92,6 +92,7 @@ class Runner(object):
...
@@ -92,6 +92,7 @@ class Runner(object):
self
.
verbose
=
verbose
self
.
verbose
=
verbose
self
.
remote_user
=
remote_user
self
.
remote_user
=
remote_user
self
.
remote_pass
=
remote_pass
self
.
remote_pass
=
remote_pass
self
.
remote_port
=
remote_port
self
.
background
=
background
self
.
background
=
background
self
.
basedir
=
basedir
self
.
basedir
=
basedir
...
...
library/service
View file @
debd6fee
...
@@ -44,7 +44,8 @@ for x in items:
...
@@ -44,7 +44,8 @@ for x in items:
name
=
params
[
'name'
]
name
=
params
[
'name'
]
state
=
params
.
get
(
'state'
,
'unknown'
)
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'"
print
"failed=True msg='invalid state'"
sys
.
exit
(
1
)
sys
.
exit
(
1
)
...
@@ -82,10 +83,9 @@ def _run(cmd):
...
@@ -82,10 +83,9 @@ def _run(cmd):
stdout
=
subprocess
.
PIPE
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
,
shell
=
True
)
stderr
=
subprocess
.
PIPE
,
shell
=
True
)
rc
=
0
rc
=
0
if
changed
:
if
changed
:
if
state
==
'started'
:
if
state
in
(
'started'
,
'running'
)
:
rc
=
_run
(
"/sbin/service
%
s start"
%
name
)
rc
=
_run
(
"/sbin/service
%
s start"
%
name
)
elif
state
==
'stopped'
:
elif
state
==
'stopped'
:
rc
=
_run
(
"/sbin/service
%
s stop"
%
name
)
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