Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
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
ops
jumpserver
Commits
b88c4211
Commit
b88c4211
authored
Oct 30, 2015
by
root
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update ansible_api.py
parent
9e0d1a72
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
81 additions
and
13 deletions
+81
-13
ansible_api.py
jperm/ansible_api.py
+81
-13
No files found.
jperm/ansible_api.py
View file @
b88c4211
...
...
@@ -8,9 +8,32 @@ from ansible.runner import Runner
from
ansible.playbook
import
PlayBook
class
MyAnsible
(
object
):
class
AnsibleError
(
StandardError
):
"""
this is my ansible object
the base AnsibleError which contains error(required),
data(optional) and message(optional).
存储所有Ansible 异常对象
"""
def
__init__
(
self
,
error
,
data
=
''
,
message
=
''
):
super
(
AnsibleError
,
self
)
.
__init__
(
message
)
self
.
error
=
error
self
.
data
=
data
self
.
message
=
message
class
CommandValueError
(
AnsibleError
):
"""
indicate the input value has error or invalid.
the data specifies the error field of input form.
输入不合法 异常对象
"""
def
__init__
(
self
,
field
,
message
=
''
):
super
(
CommandValueError
,
self
)
.
__init__
(
'value:invalid'
,
field
,
message
)
class
MyInventory
(
object
):
"""
this is my ansible inventory object.
"""
def
__init__
(
self
,
resource
):
"""
...
...
@@ -25,7 +48,7 @@ class MyAnsible(object):
def
_gen_inventory
(
self
):
"""
add hosts to inventory
add hosts to inventory
.
"""
my_group
=
Group
(
name
=
'my_group'
)
...
...
@@ -48,12 +71,23 @@ class MyAnsible(object):
self
.
inventory
=
my_inventory
def
run_command
(
self
,
command
,
module_name
=
"command"
,
timeout
=
5
,
forks
=
10
):
class
Command
(
MyInventory
):
"""
run command from andible ad-hoc
this is a command object for parallel execute command.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
Command
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
run
(
self
,
command
,
module_name
=
"command"
,
timeout
=
5
,
forks
=
10
):
"""
run command from andible ad-hoc.
command : 必须是一个需要执行的命令字符串, 比如
'uname -a'
"""
if
module_name
not
in
[
"raw"
,
"command"
,
"shell"
]:
raise
CommandValueError
(
"module_name"
,
"module_name must be of the 'raw, command, shell'"
)
hoc
=
Runner
(
module_name
=
module_name
,
module_args
=
command
,
timeout
=
timeout
,
...
...
@@ -68,7 +102,7 @@ class MyAnsible(object):
@property
def
raw_results
(
self
):
"""
get the ansible raw results
get the ansible raw results
.
"""
return
self
.
results
...
...
@@ -76,7 +110,7 @@ class MyAnsible(object):
@property
def
exec_time
(
self
):
"""
get the command execute time
get the command execute time
.
"""
result
=
{}
all
=
self
.
results
.
get
(
"contacted"
)
...
...
@@ -91,7 +125,7 @@ class MyAnsible(object):
@property
def
stdout
(
self
):
"""
get the comamnd standard output
get the comamnd standard output
.
"""
result
=
{}
all
=
self
.
results
.
get
(
"contacted"
)
...
...
@@ -103,7 +137,7 @@ class MyAnsible(object):
@property
def
stderr
(
self
):
"""
get the command standard error
get the command standard error
.
"""
result
=
{}
all
=
self
.
results
.
get
(
"contacted"
)
...
...
@@ -116,18 +150,52 @@ class MyAnsible(object):
@property
def
dark
(
self
):
"""
get the dark results
get the dark results
.
"""
return
self
.
results
.
get
(
"dark"
)
class
Tasks
(
Command
):
"""
this is a tasks object for include the common command.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
Tasks
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
class
MyPlaybook
(
MyInventory
):
"""
this is my playbook object for execute playbook.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
MyPlaybook
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
deploy
(
self
):
"""
use ansible playbook to deploy a application.
"""
pass
class
App
(
MyPlaybook
):
"""
this is a app object for inclue the common playbook.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
App
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
if
__name__
==
"__main__"
:
resource
=
[{
"hostname"
:
"127.0.0.1"
,
"port"
:
"22"
,
"username"
:
"root"
,
"password"
:
"xxx"
},
{
"hostname"
:
"192.168.10.128"
,
"port"
:
"22"
,
"username"
:
"root"
,
"password"
:
"xxx"
}]
myansible
=
MyAnsible
(
resource
)
myansible
.
run_command
(
"uname -a"
)
print
myansible
.
stdout
command
=
Command
(
resource
)
command
.
run
(
"uname -a"
,
"copy"
)
print
command
.
stdout
print
command
.
stderr
print
command
.
dark
...
...
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