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
05545e37
Commit
05545e37
authored
May 06, 2012
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixup the previous sudo_user support patch to work with playbooks.
parent
5582e6a4
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
13 deletions
+26
-13
bin/ansible
+3
-1
lib/ansible/playbook.py
+20
-9
lib/ansible/runner.py
+3
-3
No files found.
bin/ansible
View file @
05545e37
...
@@ -52,7 +52,7 @@ class Cli(object):
...
@@ -52,7 +52,7 @@ class Cli(object):
parser
.
add_option
(
'-m'
,
'--module-name'
,
dest
=
'module_name'
,
parser
.
add_option
(
'-m'
,
'--module-name'
,
dest
=
'module_name'
,
help
=
"module name to execute (default=
%
s)"
%
C
.
DEFAULT_MODULE_NAME
,
help
=
"module name to execute (default=
%
s)"
%
C
.
DEFAULT_MODULE_NAME
,
default
=
C
.
DEFAULT_MODULE_NAME
)
default
=
C
.
DEFAULT_MODULE_NAME
)
parser
.
add_option
(
'-U'
,
'--sudo
_user'
,
dest
=
'sudo_user'
,
help
=
'desired sudo user
'
,
parser
.
add_option
(
'-U'
,
'--sudo
-user'
,
dest
=
'sudo_user'
,
help
=
'desired sudo user (default=root)
'
,
default
=
C
.
DEFAULT_SUDO_USER
)
default
=
C
.
DEFAULT_SUDO_USER
)
options
,
args
=
parser
.
parse_args
()
options
,
args
=
parser
.
parse_args
()
self
.
callbacks
.
options
=
options
self
.
callbacks
.
options
=
options
...
@@ -82,6 +82,8 @@ class Cli(object):
...
@@ -82,6 +82,8 @@ class Cli(object):
sshpass
=
getpass
.
getpass
(
prompt
=
"SSH password: "
)
sshpass
=
getpass
.
getpass
(
prompt
=
"SSH password: "
)
if
options
.
ask_sudo_pass
:
if
options
.
ask_sudo_pass
:
sudopass
=
getpass
.
getpass
(
prompt
=
"sudo password: "
)
sudopass
=
getpass
.
getpass
(
prompt
=
"sudo password: "
)
if
options
.
sudo_user
:
options
.
sudo
=
True
if
options
.
tree
:
if
options
.
tree
:
utils
.
prepare_writeable_dir
(
options
.
tree
)
utils
.
prepare_writeable_dir
(
options
.
tree
)
...
...
lib/ansible/playbook.py
View file @
05545e37
...
@@ -62,6 +62,7 @@ class PlayBook(object):
...
@@ -62,6 +62,7 @@ class PlayBook(object):
runner_callbacks
=
None
,
runner_callbacks
=
None
,
stats
=
None
,
stats
=
None
,
sudo
=
False
,
sudo
=
False
,
sudo_user
=
'root'
,
extra_vars
=
None
):
extra_vars
=
None
):
"""
"""
...
@@ -102,6 +103,7 @@ class PlayBook(object):
...
@@ -102,6 +103,7 @@ class PlayBook(object):
self
.
stats
=
stats
self
.
stats
=
stats
self
.
sudo
=
sudo
self
.
sudo
=
sudo
self
.
sudo_pass
=
sudo_pass
self
.
sudo_pass
=
sudo_pass
self
.
sudo_user
=
sudo_user
self
.
extra_vars
=
extra_vars
self
.
extra_vars
=
extra_vars
self
.
global_vars
=
{}
self
.
global_vars
=
{}
...
@@ -275,7 +277,7 @@ class PlayBook(object):
...
@@ -275,7 +277,7 @@ class PlayBook(object):
# *****************************************************
# *****************************************************
def
_run_module
(
self
,
pattern
,
module
,
args
,
vars
,
remote_user
,
def
_run_module
(
self
,
pattern
,
module
,
args
,
vars
,
remote_user
,
async_seconds
,
async_poll_interval
,
only_if
,
sudo
,
transport
,
port
):
async_seconds
,
async_poll_interval
,
only_if
,
sudo
,
sudo_user
,
transport
,
port
):
''' run a particular module step in a playbook '''
''' run a particular module step in a playbook '''
hosts
=
[
h
for
h
in
self
.
inventory
.
list_hosts
()
if
(
h
not
in
self
.
stats
.
failures
)
and
(
h
not
in
self
.
stats
.
dark
)]
hosts
=
[
h
for
h
in
self
.
inventory
.
list_hosts
()
if
(
h
not
in
self
.
stats
.
failures
)
and
(
h
not
in
self
.
stats
.
dark
)]
...
@@ -292,7 +294,7 @@ class PlayBook(object):
...
@@ -292,7 +294,7 @@ class PlayBook(object):
remote_port
=
port
,
module_vars
=
vars
,
remote_port
=
port
,
module_vars
=
vars
,
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
,
debug
=
self
.
debug
,
sudo
=
sudo
,
debug
=
self
.
debug
,
sudo
=
sudo
,
sudo_user
=
sudo_user
,
transport
=
transport
,
sudo_pass
=
self
.
sudo_pass
,
is_playbook
=
True
transport
=
transport
,
sudo_pass
=
self
.
sudo_pass
,
is_playbook
=
True
)
)
...
@@ -312,7 +314,8 @@ class PlayBook(object):
...
@@ -312,7 +314,8 @@ class PlayBook(object):
# *****************************************************
# *****************************************************
def
_run_task
(
self
,
pattern
=
None
,
task
=
None
,
def
_run_task
(
self
,
pattern
=
None
,
task
=
None
,
remote_user
=
None
,
handlers
=
None
,
conditional
=
False
,
sudo
=
False
,
transport
=
None
,
port
=
None
):
remote_user
=
None
,
handlers
=
None
,
conditional
=
False
,
sudo
=
False
,
sudo_user
=
None
,
transport
=
None
,
port
=
None
):
''' 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
...
@@ -348,7 +351,7 @@ class PlayBook(object):
...
@@ -348,7 +351,7 @@ class PlayBook(object):
# run the task in parallel
# run the task in parallel
results
=
self
.
_run_module
(
pattern
,
module_name
,
results
=
self
.
_run_module
(
pattern
,
module_name
,
module_args
,
module_vars
,
remote_user
,
async_seconds
,
module_args
,
module_vars
,
remote_user
,
async_seconds
,
async_poll_interval
,
only_if
,
sudo
,
transport
,
port
)
async_poll_interval
,
only_if
,
sudo
,
sudo_user
,
transport
,
port
)
# add facts to the global setup cache
# add facts to the global setup cache
for
host
,
result
in
results
[
'contacted'
]
.
iteritems
():
for
host
,
result
in
results
[
'contacted'
]
.
iteritems
():
...
@@ -449,7 +452,7 @@ class PlayBook(object):
...
@@ -449,7 +452,7 @@ class PlayBook(object):
# *****************************************************
# *****************************************************
def
_do_setup_step
(
self
,
pattern
,
vars
,
user
,
port
,
sudo
,
transport
,
vars_files
=
None
):
def
_do_setup_step
(
self
,
pattern
,
vars
,
user
,
port
,
sudo
,
sudo_user
,
transport
,
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
...
@@ -474,8 +477,9 @@ class PlayBook(object):
...
@@ -474,8 +477,9 @@ class PlayBook(object):
timeout
=
self
.
timeout
,
remote_user
=
user
,
timeout
=
self
.
timeout
,
remote_user
=
user
,
remote_pass
=
self
.
remote_pass
,
remote_port
=
port
,
remote_pass
=
self
.
remote_pass
,
remote_port
=
port
,
setup_cache
=
SETUP_CACHE
,
setup_cache
=
SETUP_CACHE
,
callbacks
=
self
.
runner_callbacks
,
sudo
=
sudo
,
debug
=
self
.
debug
,
callbacks
=
self
.
runner_callbacks
,
sudo
=
sudo
,
sudo_user
=
sudo_user
,
transport
=
transport
,
sudo_pass
=
self
.
sudo_pass
,
is_playbook
=
True
debug
=
self
.
debug
,
transport
=
transport
,
sudo_pass
=
self
.
sudo_pass
,
is_playbook
=
True
)
.
run
()
)
.
run
()
self
.
stats
.
compute
(
setup_results
,
setup
=
True
)
self
.
stats
.
compute
(
setup_results
,
setup
=
True
)
...
@@ -512,16 +516,21 @@ class PlayBook(object):
...
@@ -512,16 +516,21 @@ class PlayBook(object):
user
=
pg
.
get
(
'user'
,
self
.
remote_user
)
user
=
pg
.
get
(
'user'
,
self
.
remote_user
)
port
=
pg
.
get
(
'port'
,
self
.
remote_port
)
port
=
pg
.
get
(
'port'
,
self
.
remote_port
)
sudo
=
pg
.
get
(
'sudo'
,
self
.
sudo
)
sudo
=
pg
.
get
(
'sudo'
,
self
.
sudo
)
sudo_user
=
pg
.
get
(
'sudo_user'
,
self
.
sudo_user
)
transport
=
pg
.
get
(
'connection'
,
self
.
transport
)
transport
=
pg
.
get
(
'connection'
,
self
.
transport
)
# the default sudo user is root, so if you change it, sudo is implied
if
sudo_user
!=
'root'
:
sudo
=
True
self
.
callbacks
.
on_play_start
(
name
)
self
.
callbacks
.
on_play_start
(
name
)
# 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
,
port
,
sudo
,
transport
,
None
)
self
.
_do_setup_step
(
pattern
,
vars
,
user
,
port
,
sudo
,
sudo_user
,
transport
,
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
,
port
,
sudo
,
transport
,
vars_files
)
self
.
_do_setup_step
(
pattern
,
vars
,
user
,
port
,
sudo
,
sudo_user
,
transport
,
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
:
...
@@ -531,6 +540,7 @@ class PlayBook(object):
...
@@ -531,6 +540,7 @@ class PlayBook(object):
handlers
=
handlers
,
handlers
=
handlers
,
remote_user
=
user
,
remote_user
=
user
,
sudo
=
sudo
,
sudo
=
sudo
,
sudo_user
=
sudo_user
,
transport
=
transport
,
transport
=
transport
,
port
=
port
port
=
port
)
)
...
@@ -552,6 +562,7 @@ class PlayBook(object):
...
@@ -552,6 +562,7 @@ class PlayBook(object):
conditional
=
True
,
conditional
=
True
,
remote_user
=
user
,
remote_user
=
user
,
sudo
=
sudo
,
sudo
=
sudo
,
sudo_user
=
sudo_user
,
transport
=
transport
,
transport
=
transport
,
port
=
port
port
=
port
)
)
...
...
lib/ansible/runner.py
View file @
05545e37
...
@@ -77,8 +77,8 @@ class Runner(object):
...
@@ -77,8 +77,8 @@ class Runner(object):
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
remote_port
=
C
.
DEFAULT_REMOTE_PORT
,
remote_pass
=
C
.
DEFAULT_REMOTE_PASS
,
remote_port
=
C
.
DEFAULT_REMOTE_PORT
,
sudo_pass
=
C
.
DEFAULT_SUDO_PASS
,
background
=
0
,
basedir
=
None
,
sudo_pass
=
C
.
DEFAULT_SUDO_PASS
,
background
=
0
,
basedir
=
None
,
setup_cache
=
None
,
transport
=
C
.
DEFAULT_TRANSPORT
,
conditional
=
'True'
,
setup_cache
=
None
,
transport
=
C
.
DEFAULT_TRANSPORT
,
conditional
=
'True'
,
callbacks
=
None
,
debug
=
False
,
sudo
=
False
,
sudo_user
=
C
.
DEFAULT_SUDO_USER
callbacks
=
None
,
debug
=
False
,
sudo
=
False
,
sudo_user
=
C
.
DEFAULT_SUDO_USER
,
,
module_vars
=
None
,
is_playbook
=
False
,
inventory
=
None
):
module_vars
=
None
,
is_playbook
=
False
,
inventory
=
None
):
"""
"""
host_list : path to a host list file, like /etc/ansible/hosts
host_list : path to a host list file, like /etc/ansible/hosts
...
@@ -626,7 +626,7 @@ class Runner(object):
...
@@ -626,7 +626,7 @@ class Runner(object):
def
_exec_command
(
self
,
conn
,
cmd
,
tmp
,
sudoable
=
False
):
def
_exec_command
(
self
,
conn
,
cmd
,
tmp
,
sudoable
=
False
):
''' execute a command string over SSH, return the output '''
''' execute a command string over SSH, return the output '''
sudo_user
=
self
.
sudo_user
sudo_user
=
self
.
sudo_user
stdin
,
stdout
,
stderr
=
conn
.
exec_command
(
cmd
,
tmp
,
sudo_user
,
sudoable
=
sudoable
)
stdin
,
stdout
,
stderr
=
conn
.
exec_command
(
cmd
,
tmp
,
sudo_user
,
sudoable
=
sudoable
)
err
=
None
err
=
None
out
=
None
out
=
None
if
type
(
stderr
)
!=
str
:
if
type
(
stderr
)
!=
str
:
...
...
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