1
1
#!/usr/bin/env python
2
- '''
2
+ """
3
3
Replace your /etc/ansible/hosts (/usr/local/etc/ansible/hosts) file with this,
4
4
to automatically import all your Memset servers into the Ansible inventory.
5
5
@@ -18,7 +18,8 @@ ansible memset-reading -l memset-linux -m ping
18
18
19
19
API key must have access to at least:
20
20
method:server.list, method:server.info & method:service.info
21
- '''
21
+ """
22
+
22
23
from jsonrpclib import Server
23
24
import os
24
25
import sys
@@ -40,18 +41,23 @@ uri = "https://%s:@api.memset.com/v1/jsonrpc/" % memkey
40
41
41
42
s = Server (uri )
42
43
44
+
43
45
def _get_servers ():
44
46
return s .server .list ()
45
47
48
+
46
49
def _get_service (name ):
47
50
return s .service .info (name = name )
48
51
52
+
49
53
def _simple_os (server ):
50
54
return 'windows' if server ["os" ].startswith ("win" ) else 'linux'
51
55
56
+
52
57
def _get_zone (service ):
53
58
return service ['network_zones' ][0 ]
54
59
60
+
55
61
def _build_vars (server ):
56
62
var = {}
57
63
service = _get_service (server ["name" ])
@@ -81,6 +87,7 @@ def _build_vars(server):
81
87
82
88
return var
83
89
90
+
84
91
def get_single (hostname ):
85
92
servers = _get_servers ()
86
93
server = filter (lambda s : s ["host_name" ] == hostname , servers )
@@ -89,16 +96,17 @@ def get_single(hostname):
89
96
output = _build_vars (server [0 ])
90
97
return output
91
98
99
+
92
100
def get_all ():
93
101
osses = {}
94
102
osses ["windows" ] = []
95
103
osses ["linux" ] = []
96
104
output = {
97
- 'memset-windows' : {'hosts' : [], 'vars' : {}},
98
- 'memset-linux' : {'hosts' : [], 'vars' : {}},
99
- 'memset-reading' : {'hosts' : [], 'vars' : {}},
100
- 'memset-dunsfold' : {'hosts' : [], 'vars' : {}},
101
- '_meta' : {'hostvars' : {}}
105
+ 'memset-windows' : {'hosts' : [], 'vars' : {}},
106
+ 'memset-linux' : {'hosts' : [], 'vars' : {}},
107
+ 'memset-reading' : {'hosts' : [], 'vars' : {}},
108
+ 'memset-dunsfold' : {'hosts' : [], 'vars' : {}},
109
+ '_meta' : {'hostvars' : {}}
102
110
}
103
111
for server in _get_servers ():
104
112
os_group = 'memset-%s' % _simple_os (server )
@@ -111,6 +119,7 @@ def get_all():
111
119
output ['memset-linux' ]['vars' ]["ansible_ssh_user" ] = 'root'
112
120
return output
113
121
122
+
114
123
def main ():
115
124
try :
116
125
opts , args = getopt .getopt (sys .argv [1 :], "" , ["list" , "host=" ])
@@ -125,5 +134,6 @@ def main():
125
134
output = get_single (a )
126
135
print json .dumps (output , sort_keys = True , indent = 4 , separators = (',' , ': ' ))
127
136
137
+
128
138
if __name__ == '__main__' :
129
139
main ()
0 commit comments