|
17 | 17 | parse_version, |
18 | 18 | CFRChecksumError, |
19 | 19 | ) |
20 | | -from cf_remote.ssh import ssh_sudo, ssh_cmd, scp, auto_connect |
| 20 | +from cf_remote.ssh import ( |
| 21 | + ssh_sudo, |
| 22 | + ssh_cmd, |
| 23 | + scp, |
| 24 | + auto_connect, |
| 25 | + host_is_vagrant, |
| 26 | + get_state_from_host, |
| 27 | +) |
21 | 28 | from cf_remote import log |
22 | 29 | from cf_remote.web import download_package |
23 | 30 | from cf_remote.packages import Releases, Artifact, filter_artifacts |
@@ -206,8 +213,7 @@ def get_info(host, *, users=None, connection=None): |
206 | 213 | user, host = connection.ssh_user, connection.ssh_host |
207 | 214 | data = OrderedDict() |
208 | 215 | data["ssh_user"] = user |
209 | | - data["ssh_host"] = host |
210 | | - data["ssh"] = "{}@{}".format(user, host) |
| 216 | + |
211 | 217 | systeminfo = ssh_cmd(connection, "systeminfo") |
212 | 218 | if systeminfo: |
213 | 219 | data["os"] = "windows" |
@@ -278,13 +284,17 @@ def get_info(host, *, users=None, connection=None): |
278 | 284 | if "NTD_PRIVATE_IP" in discovery: |
279 | 285 | data["private_ip"] = discovery["NTD_PRIVATE_IP"] |
280 | 286 |
|
| 287 | + if host_is_vagrant(host) and data["private_ip"]: |
| 288 | + host = data["private_ip"].split()[1] |
| 289 | + data["ssh_host"] = host |
| 290 | + data["ssh"] = "{}@{}".format(user, host) |
281 | 291 | log.debug("JSON data from host info: \n" + pretty(data)) |
282 | 292 | return data |
283 | 293 |
|
284 | 294 |
|
285 | 295 | @auto_connect |
286 | 296 | def install_package(host, pkg, data, demo, *, connection=None): |
287 | | - print("Installing: '{}' on '{}'".format(pkg, host)) |
| 297 | + print("Installing: '{}' on '{}'".format(pkg, data["ssh_host"])) |
288 | 298 | output = None |
289 | 299 | if ".deb" in pkg: |
290 | 300 | output = ssh_sudo(connection, 'dpkg -i "{}"'.format(pkg), True, needs_pty=True) |
@@ -395,6 +405,11 @@ def uninstall_cfengine(host, data, *, connection=None, purge=False): |
395 | 405 | def bootstrap_host(host_data, policy_server, *, connection=None, trust_server=True): |
396 | 406 | host = host_data["ssh_host"] |
397 | 407 | agent = host_data["agent"] |
| 408 | + |
| 409 | + policy_server_data = get_state_from_host(policy_server) |
| 410 | + if policy_server_data and ("private_ips" in policy_server_data): |
| 411 | + policy_server = policy_server_data["public_ips"][0] |
| 412 | + |
398 | 413 | print("Bootstrapping: '{}' -> '{}'".format(host, policy_server)) |
399 | 414 | command = "{} --bootstrap {}".format(agent, policy_server) |
400 | 415 | if not trust_server: |
@@ -529,6 +544,8 @@ def install_host( |
529 | 544 | if show_info: |
530 | 545 | print_info(data) |
531 | 546 |
|
| 547 | + log.debug("Installing {} hub package on '{}'".format(edition, data["ssh_host"])) |
| 548 | + |
532 | 549 | package = None |
533 | 550 | if packages and type(packages) is str: |
534 | 551 | package = packages |
@@ -583,7 +600,7 @@ def install_host( |
583 | 600 | if data["agent_version"] and len(data["agent_version"]) > 0: |
584 | 601 | print( |
585 | 602 | "CFEngine {} was successfully installed on '{}'".format( |
586 | | - data["agent_version"], host |
| 603 | + data["agent_version"], data["ssh_host"] |
587 | 604 | ) |
588 | 605 | ) |
589 | 606 | else: |
|
0 commit comments