Ir al contenido principal

Ansible using plugins for dynamic inventories


This is a small post about how to use inventory plugins in Ansible. If you are looking the script way I recommend to read this article: http://gloriasilveira.com/setting-up-ansible-for-aws-with-dynamic-inventory-ec2.html
It explains really good this or you can watch this video: https://www.youtube.com/watch?v=LnbqO1kTPqE&t=6s
But if you’re looking to use inventory this article can help you.
First of all, why should I used inventory if all over the internet they’re using the python scripts?
Well, Ansible recommends it:
Inventory plugins take advantage of the most recent updates to Ansible’s core code. We recommend plugins over scripts for dynamic inventory. You can write your own plugin to connect to additional dynamic inventory sources. https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html
The actual ansible guide is quite good, but there was a step that got me confused, probably my english isn’t so good and I didn’t understood it.
We need to enable the plugin. So we have 2 ways of doing this, we could edit the ansible.cfg file located in /etc/ansible/ansible.cfg or in your local folder where you’re working.
Ansible Documentation
According to ansible, you need to enable the plugin, like the following code, but I was killing myself and couldn’t make it work, so what’s the correct way of doing it?
[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml
The way it works for me
I’m working with aws dynamic inventory. So according to the documentation the file name has to end in aws_ec2.(yml|yaml)
So I need to add the aws_ec2 to the enable plugins.
[inventory]
enable_plugins = aws_ec2, host_list, yaml, ini, script
After that, following the documentation is quite easy
File name: demo.aws_ec2.yml
# Minimal example using environment vars or instance role credentials
# Fetch all hosts in us-east-1, the hostname is the public DNS if it exists, otherwise the private IP address
plugin: aws_ec2
regions:
  - us-east-1
If you need to run it
ansible-inventory -i demo.aws_ec2.yml --graph
If you need to use it on a playbook, sending of parameter a private key
ansible-playbook -i demo.aws_ec2.yml playbook.yaml --private-key KEY

Comentarios

Entradas populares de este blog

Find which devices are connected to our network

Sometimes, we want to know how many devices are connected to our network. With any Unix OS you get easily know this. For this small tutorial we´re going to use Lubuntu 16.04. We will use nmap. Nmap (Network Mapper) is a security scanner. It is used to discover hosts and services on a computer network. For installing it, we first do sudo apt-get install nmap If we just need to identify the host names  sudo nmap -sL 192.168.0.1/24  The result of this command will be Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-02 12:39 CST Nmap scan report for 192.168.0.0 Nmap scan report for 192.168.0.1 Nmap scan report for 192.168.0.2 Nmap scan report for 192.168.0.3 Nmap scan report for 192.168.0.4 Nmap scan report for 192.168.0.5 If we need to know the OS of the devices we have connected we do a: sudo nmap -O 192.168.0.1/24 The address 192.188.0.1 depends of your network, you should do a ifconfig for knowing yours. The result of this command will be something like this:

Access to AWS Postgres instance in private subnet

I have been working with AWS in the last days and encounter some issues when using RDS.  Generally when you're working in development environment you have setup your database as Publicly accessible and this isn't an issue. But when you're working in Production. So we place the Amazon RDS database into a private subnet. What we need to do for connecting to the database using PgAdmin or other tool? We're going to use one of the most common methods for doing this. You will need to launch an Amazon EC2 instance in the public subnet and then use it as jumping box. So after you have your EC2, you will need to run the following command. See explantion below After this, you will need to configure your PgAdmin. The host name will be your localhost, the port is the same you define in the above command. Maintenance database will be your DB name and the username you have for connecting. Hope this helps you connect to your databases.

Pre order your Super Smash Bros. Ultimate for Nintendo Switch

Are you fan of Super Smash Bros! Don't wait until the last minute, you can pre order you Super Smash Bros Ultimate here This new game has stages and fighters are joined by the combined rosters of every past Super Smash Bros game. If you buy it, you will be enjoying this Limited Time Offer: Piranha Plant Playable Fighter. Buy Super Smash Bros. Ultimate and register your game with My Nintendo by 11:59 PM on Jan. 31, 2019 and get Piranha Plant in your game for free.