Generating an Ansible Inventory
Cette page est à ce jour disponible en anglais uniquement. |
The main goal of this topic is to describe and give some examples about how to automatize your software deployment with Ansible.
Before reading this topic, you need to know how to use and create a playbook for Ansible. If you do not, see Ansible documentation.
Step 1: Create the Infrastructure
-
Launch instances using boto2 with two reservations with the following characteristics based on front and database roles:
reservation_front = outscale_fcu.run_instances(images_id='ami-xxxxxxx', key_name='my_keypair', security_group_ids=['sg-xxxxxx'], min_count=2, max_count=3, instance_type='t2.medium') reservation_database = outscale_fcu.run_instances(images_id='ami-xxxxxxx', key_name='my_keypair', security_group_ids=['sg-yyyyyy'], min_count=2, max_count=2, instance_type='tina.c4r12')
-
For each instance, add the following roles tags:
for instance in reservation_front.instances: instance.add_tag('roles', 'monitoring_agent,front_web') for instance in reservation_database: instance.add_tag('roles', 'monitoring_agent,database')
Step 2: Generate the inventory
To generate the inventory, you can use your Ansible playbook, based on the previous deployment on 3DS OUTSCALE Cloud. The playbook requires the following elements:
-
All security groups need to allow the instance running the playbook on SSH port 22
-
The instance running the playbook need to have the private key of the instances
-
The playbook needs to run from within the VPC if you target a VPC deployment
-
To generate the inventory, run the following commands:
codefrom ConfigParser import ConfigParser conf = ConfigParser(allow_no_value=True) for inst in outscale_fcu.get_only_instances(): for role in inst.tags['roles'].split(','): if role not in conf.sections(): conf.add_section(role) conf.set(role, inst.private_ip_address) with open('inventory', 'w') as inv: conf.write(inv)
These commands return the following result:
output[database] 10.0.1.243 10.0.2.153 10.0.2.53 [front_web] 10.0.2.104 10.0.2.156 [rabbit_mq] 10.0.2.6 [intel] 10.0.2.154 10.0.2.203 10.0.2.155 10.0.2.243
Related Page