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
1c561110
Commit
1c561110
authored
Aug 17, 2015
by
Damian Gerow
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add become support for OpenBSD doas
parent
ee2e31b3
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
29 additions
and
9 deletions
+29
-9
docs/man/man1/ansible-playbook.1
+1
-1
docs/man/man1/ansible-playbook.1.asciidoc.in
+1
-1
docs/man/man1/ansible.1
+1
-1
docs/man/man1/ansible.1.asciidoc.in
+1
-1
docsite/rst/become.rst
+2
-2
docsite/rst/intro_configuration.rst
+1
-1
lib/ansible/constants.py
+2
-2
lib/ansible/playbook/play_context.py
+14
-0
test/units/playbook/test_play_context.py
+6
-0
No files found.
docs/man/man1/ansible-playbook.1
View file @
1c561110
...
...
@@ -60,7 +60,7 @@ Run operations with become (nopasswd implied)
.PP
\fB\-\-become\-method=BECOME_METHOD\fR
.RS 4
Privilege escalation method to use (default=sudo), valid choices: [ sudo | su | pbrun | pfexec | runas ]
Privilege escalation method to use (default=sudo), valid choices: [ sudo | su | pbrun | pfexec | runas
| doas
]
.RE
.PP
\fB\-\-become\-user=BECOME_USER\fR
...
...
docs/man/man1/ansible-playbook.1.asciidoc.in
View file @
1c561110
...
...
@@ -51,7 +51,7 @@ Run operations with become (nopasswd implied)
*--become-method=BECOME_METHOD*::
Privilege escalation method to use (default=sudo),
valid choices: [ sudo | su | pbrun | pfexec | runas ]
valid choices: [ sudo | su | pbrun | pfexec | runas
| doas
]
*--become-user=BECOME_USER*::
...
...
docs/man/man1/ansible.1
View file @
1c561110
...
...
@@ -84,7 +84,7 @@ seconds\&.
.PP
\fB\-\-become\-method=\fR\fIBECOME_METHOD\fR
.RS 4
Privilege escalation method to use (default=sudo), valid choices: [ sudo | su | pbrun | pfexec | runas ]
Privilege escalation method to use (default=sudo), valid choices: [ sudo | su | pbrun | pfexec | runas
| doas
]
.RE
.PP
\fB\-\-become\-user=\fR\fIBECOME_USER\fR
...
...
docs/man/man1/ansible.1.asciidoc.in
View file @
1c561110
...
...
@@ -65,7 +65,7 @@ Run commands in the background, killing the task after 'NUM' seconds.
*--become-method=*'BECOME_METHOD'::
Privilege escalation method to use (default=sudo),
valid choices: [ sudo | su | pbrun | pfexec | runas ]
valid choices: [ sudo | su | pbrun | pfexec | runas
| doas
]
*--become-user=*'BECOME_USER'::
...
...
docsite/rst/become.rst
View file @
1c561110
...
...
@@ -23,7 +23,7 @@ become_user
equivalent to adding 'sudo_user:' or 'su_user:' to a play or task, set to user with desired privileges
become_method
at play or task level overrides the default method set in ansible.cfg, set to 'sudo'/'su'/'pbrun'/'pfexec'
at play or task level overrides the default method set in ansible.cfg, set to 'sudo'/'su'/'pbrun'/'pfexec'
/'doas'
New ansible\_ variables
...
...
@@ -54,7 +54,7 @@ New command line options
--become-method=BECOME_METHOD
privilege escalation method to use (default=sudo),
valid choices: [ sudo | su | pbrun | pfexec ]
valid choices: [ sudo | su | pbrun | pfexec
| doas
]
--become-user=BECOME_USER
run operations as this user (default=root)
...
...
docsite/rst/intro_configuration.rst
View file @
1c561110
...
...
@@ -651,7 +651,7 @@ The equivalent of adding sudo: or su: to a play or task, set to true/yes to acti
become_method
=============
Set the privilege escalation method. The default is ``sudo``, other options are ``su``, ``pbrun``, ``pfexec``::
Set the privilege escalation method. The default is ``sudo``, other options are ``su``, ``pbrun``, ``pfexec``
, ``doas``
::
become_method=su
...
...
lib/ansible/constants.py
View file @
1c561110
...
...
@@ -162,8 +162,8 @@ DEFAULT_SUDO_FLAGS = get_config(p, DEFAULTS, 'sudo_flags', 'ANSIBLE_SUDO_
DEFAULT_ASK_SUDO_PASS
=
get_config
(
p
,
DEFAULTS
,
'ask_sudo_pass'
,
'ANSIBLE_ASK_SUDO_PASS'
,
False
,
boolean
=
True
)
# Become
BECOME_ERROR_STRINGS
=
{
'sudo'
:
'Sorry, try again.'
,
'su'
:
'Authentication failure'
,
'pbrun'
:
''
,
'pfexec'
:
''
,
'runas'
:
''
}
#FIXME: deal with i18n
BECOME_METHODS
=
[
'sudo'
,
'su'
,
'pbrun'
,
'pfexec'
,
'runas'
]
BECOME_ERROR_STRINGS
=
{
'sudo'
:
'Sorry, try again.'
,
'su'
:
'Authentication failure'
,
'pbrun'
:
''
,
'pfexec'
:
''
,
'runas'
:
''
,
'doas'
:
'Permission denied'
}
#FIXME: deal with i18n
BECOME_METHODS
=
[
'sudo'
,
'su'
,
'pbrun'
,
'pfexec'
,
'runas'
,
'doas'
]
DEFAULT_BECOME_METHOD
=
get_config
(
p
,
'privilege_escalation'
,
'become_method'
,
'ANSIBLE_BECOME_METHOD'
,
'sudo'
if
DEFAULT_SUDO
else
'su'
if
DEFAULT_SU
else
'sudo'
)
.
lower
()
DEFAULT_BECOME
=
get_config
(
p
,
'privilege_escalation'
,
'become'
,
'ANSIBLE_BECOME'
,
False
,
boolean
=
True
)
DEFAULT_BECOME_USER
=
get_config
(
p
,
'privilege_escalation'
,
'become_user'
,
'ANSIBLE_BECOME_USER'
,
'root'
)
...
...
lib/ansible/playbook/play_context.py
View file @
1c561110
...
...
@@ -387,6 +387,20 @@ class PlayContext(Base):
flags
=
self
.
become_flags
or
''
becomecmd
=
'
%
s
%
s /user:
%
s "
%
s"'
%
(
exe
,
flags
,
self
.
become_user
,
success_cmd
)
elif
self
.
become_method
==
'doas'
:
prompt
=
'Password:'
exe
=
self
.
become_exe
or
'doas'
flags
=
self
.
become_flags
or
''
if
not
self
.
become_pass
:
flags
+=
' -n '
if
self
.
become_user
:
flags
+=
' -u
%
s '
%
self
.
become_user
becomecmd
=
'
%
s
%
s echo
%
s &&
%
s
%
s env ANSIBLE=true
%
s'
%
(
exe
,
flags
,
success_key
,
exe
,
flags
,
cmd
)
else
:
raise
AnsibleError
(
"Privilege escalation method not found:
%
s"
%
self
.
become_method
)
...
...
test/units/playbook/test_play_context.py
View file @
1c561110
...
...
@@ -123,6 +123,8 @@ class TestPlayContext(unittest.TestCase):
pbrun_flags
=
''
pfexec_exe
=
'pfexec'
pfexec_flags
=
''
doas_exe
=
'doas'
doas_flags
=
' -n -u foo '
cmd
=
play_context
.
make_become_cmd
(
cmd
=
default_cmd
,
executable
=
default_exe
)
self
.
assertEqual
(
cmd
,
default_cmd
)
...
...
@@ -146,6 +148,10 @@ class TestPlayContext(unittest.TestCase):
cmd
=
play_context
.
make_become_cmd
(
cmd
=
default_cmd
,
executable
=
"/bin/bash"
)
self
.
assertEqual
(
cmd
,
"""
%
s -c '
%
s
%
s "'"'"'echo
%
s;
%
s'"'"'"'"""
%
(
default_exe
,
pfexec_exe
,
pfexec_flags
,
play_context
.
success_key
,
default_cmd
))
play_context
.
become_method
=
'doas'
cmd
=
play_context
.
make_become_cmd
(
cmd
=
default_cmd
,
executable
=
"/bin/bash"
)
self
.
assertEqual
(
cmd
,
"""
%
s -c '
%
s
%
s echo
%
s &&
%
s
%
s env ANSIBLE=true
%
s'"""
%
(
default_exe
,
doas_exe
,
doas_flags
,
play_context
.
success_key
,
doas_exe
,
doas_flags
,
default_cmd
))
play_context
.
become_method
=
'bad'
self
.
assertRaises
(
AnsibleError
,
play_context
.
make_become_cmd
,
cmd
=
default_cmd
,
executable
=
"/bin/bash"
)
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