From b854d860fb63e18f37cacc664c1fbffe9899ab4b Mon Sep 17 00:00:00 2001 From: Varac <varac@varac.net> Date: Wed, 30 Jan 2019 13:48:19 +0100 Subject: [PATCH] Set proper hostname in config files --- test/ci-bootstrap.py | 45 ++++++++++++++++++++++++++++++-------------- test/cosmos.py | 4 ++-- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/test/ci-bootstrap.py b/test/ci-bootstrap.py index 673dc5bdd..9a4f263de 100755 --- a/test/ci-bootstrap.py +++ b/test/ci-bootstrap.py @@ -1,16 +1,20 @@ #!/usr/bin/env python3 -# -# Prerequisites: -# - ansible > 2.2 (at least stretch-backports needed) -# - ansible-runner python module -# - python3 requests lib -# -# Env vars needed: -# - COSMOS_API_TOKEN -# -# In Debian: -# apt-get install -y --no-install-recommends ansible gcc libc6-dev -# pip3 install ansible-runner requests +""" +Used by CI to bootstrap a new cluster and run tests. + +Prerequisites +- ansible > 2.2 (at least stretch-backports needed) +- ansible-runner python module +- python3 requests lib + +Env vars needed: +- COSMOS_API_TOKEN +- CI_JOB_ID: Gitlab job ID + +In Debian: + apt-get install -y --no-install-recommends ansible gcc libc6-dev + pip3 install ansible-runner requests +""" import ansible_runner import argparse @@ -66,7 +70,9 @@ if __name__ == "__main__": # - 411: ci, ed25519 # - 407: varac + new_name = "ci{0}".format(os.environ['CI_JOB_ID']) droplet = cosmos.create_droplet( + name=new_name, ssh_key_id=args.ssh_key_id, region='ams1', size=2048, @@ -83,6 +89,7 @@ if __name__ == "__main__": # Get droplet ip droplet = cosmos.get_droplet(id) ip = droplet['networks']['v4'][0]['ip_address'] + name = droplet['name'] # Wait for ssh cosmos.wait_for_ssh(ip) @@ -90,7 +97,13 @@ if __name__ == "__main__": # Create inventory with open('../ansible/inventory.yml.example', 'r') as stream: inventory = yaml.load(stream) - inventory['all']['hosts']['oas-dev']['ansible_host'] = ip + inventory['all']['hosts'][name] = inventory['all']['hosts']['oas-dev'] + del inventory['all']['hosts']['oas-dev'] + + inventory['all']['hosts'][name]['ansible_host'] = ip + inventory['all']['children']['cluster']['hosts'] = name + inventory['all']['children']['master']['hosts'] = name + inventory['all']['children']['worker']['hosts'] = name with open('./inventory', 'w') as stream: yaml.dump(inventory, stream, default_flow_style=False) @@ -101,7 +114,7 @@ if __name__ == "__main__": settings = yaml.load(stream) settings['ip_address'] = ip - settings['domain'] = 'ci.openappstack.net' + settings['domain'] = name + '.ci.openappstack.net' settings['admin_email'] = "admin@{0}".format(settings['domain']) if not os.path.exists('./env'): @@ -109,6 +122,10 @@ if __name__ == "__main__": with open('./env/extravars', 'w') as stream: yaml.dump(settings, stream, default_flow_style=False) + if verbose: + print(yaml.dump(inventory, default_flow_style=False)) + print(yaml.dump(settings, default_flow_style=False)) + # Bootstrap # playbook path here is relative to private_data_dir/project, see # https://ansible-runner.readthedocs.io/en/latest/intro.html#inputdir diff --git a/test/cosmos.py b/test/cosmos.py index 7fa670c34..79ec00bf0 100755 --- a/test/cosmos.py +++ b/test/cosmos.py @@ -49,8 +49,8 @@ def request_api(resource: str, request_type: str = 'GET', # API calls -def create_droplet(ssh_key_id: int, region: str = 'ams1', size: int = 2048, - disk: int = 20, image: int = 7): +def create_droplet(name: str, ssh_key_id: int, region: str = 'ams1', + size: int = 2048, disk: int = 20, image: int = 7): """Create a droplet.""" print('Creating droplet') name = "ci{0}".format(os.environ['CI_JOB_ID']) -- GitLab