DevOps/Ansible/manage AWS infrastructure using Ansible

ConfigurationEdit

Configure your computer for use Ansible to manage your Amazon AWS infrastructure.

  • 1) Install aws cli, python, apt-get install python-pip and python pip boto
  • 2) Install Ansible, macOS: brew install ansible
  • 3) Configure your local aws cli installation to allow you to make operation on your AWS infrastructure.

Installation one line: apt-get install awscli python-pip ansible && pip install boto

Basic OperationsEdit

  • Start a AWS EC2 machine:

We will use ansible EC2 module[1]. Create a new file, for example aws_start_machine.yml. Put your instance_ids and region values, (execute aws ec2 describe-instances to obtain them or aws ec2 describe-instances | grep InstanceId to obtain only InstanceIds) and execute your newly created script,

chmod +x aws_start_machine.yml; ./aws_start_machine.yml


Example. Start and already created EC2 instance. aws_start_ec2server.yml file:

(Remember just to use spaces and not tabulator for your YML file)
#!/usr/bin/env ansible-playbook

- name: Starting AWS machine
  hosts: localhost
  gather_facts: false
  connection: local
  vars:
    instance_ids:
      - 'i-09999999999'     # you will have to modify this line with the InstanceId of your server
    region: us-east-2            # you will have to change this line to region where your machine was created
  tasks:
    - name: Starting AWS Machine. It Will take some time. 
      ec2:
        instance_ids: '{{ instance_ids }}'
        region: '{{ region }}'
        state: running
        wait: True

Getting information from a AWS machine:

Example aws_status_ec2server.yml file:

#!/usr/bin/env ansible-playbook

- name: Status ec2 instance
  hosts: localhost
  connection: local
  tasks:
   - ec2_instance_facts:
      instance_ids:
        - i-0bd3xx999999999
     register: ec2_facts
   - debug: msg="{{ ec2_facts }}"

See alsoEdit

  1. https://docs.ansible.com/ansible/latest/modules/ec2_module.html