Git Product home page Git Product logo

ansible-dyninv-mysql's Introduction

Notice

This repository is unmaintained since we have deprecated it internally, therefore it will not receive any new releases or contributions. We invite all people interested to look at updated forks.

Ansible Dynamic Inventory for MySQL

This is a Dynamic Inventory for Ansible to be used together with MySQL.

It was written because we maintain a lot of servers and static inventory files did not meet our demand, and we like MySQL.

Usage

Simply call the script like the following

ansible-playbook -i mysql.py
# or
ansible -i mysql.py

Limitations also work

ansible-playbook -i mysql.py --limit foo.bar.com
ansible-playbook -i mysql.py --limit groupFoo

Setup

I won't explain the process of installing a database or creating the tables, see tables.sql for the required MySQL structure.

Once setup rename mysql.ini.dist to mysql.ini to suit your needs, if you don't want to use caching just put it on 0.

Groups

In the table group you create the groups you need and their variables,

Hosts

In the table host under host you place the IP/DNS for the system.

Facts

Under hostname you can fill in a value, this will be presented as a variable inventory_hostname during the play. You can modify the name of this Fact variable by changing the facts_hostname_var variable in my mysql.ini.

Relation between Hosts and Groups

The table hostgroups maps the relation between host and group using two FOREIGN KEYS.

Children

Groups can have other groups as children, use the table childgroups.

Note on Variables

This applies to host and group respectively. If no variables are needed either NULL it (actual MySQL NULL not the string) or use {}.

LICENSE

# Copyright (c) 2015 Productsup GmbH, Yorick Terweijden [email protected]
#
# As it is mostly based on the original Cobbler Dynamic Inventory
# https://github.com/ansible/ansible/blob/devel/contrib/inventory/cobbler.py
# the same license, the GPL-3 applies.

The GPL-3 can be found under the link.

ansible-dyninv-mysql's People

Contributors

0bp avatar carsten-neuendorf avatar dvershinin avatar tanji avatar terwey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ansible-dyninv-mysql's Issues

Got a python exception when var is null.

Issue Description

Hi,

I got a exception on line:189 when 'vars' not in self.inventory[groupname].

if not self.inventory[group]['hosts']:

Fixes a bug where a group might not have variables(8b71929)

Maybe self.inventory[group] should be dict, not list.
Is that right? @terwey @tanji

if 'vars' not in self.inventory[groupname]:
self.inventory[groupname] = list()

Environment

  1. Python 2.7.5

Steps to reproduce

  1. git clone https://github.com/productsupcom/ansible-dyninv-mysql.git
  2. Prepare the table schema: tables.sql
  3. Insert data to MySQL:
insert into `host` (id,host,hostname,variables,enabled) values (1,'10.128.0.1','node1','',1);
insert into `group` (id,name,variables,enabled) values (1,'group_A','',1);
insert into `hostgroups` (host_id,group_id) values (1,1);
  1. Execute command:
python mysql.py --list
  1. Expected result:
$ python mysql.py --list
Traceback (most recent call last):
  File "mysql.py", line 254, in <module>
    MySQLInventory()
  File "mysql.py", line 57, in __init__
    self.update_cache()
  File "mysql.py", line 189, in update_cache
    if not self.inventory[group]['hosts']:
TypeError: list indices must be integers, not str

`host`.`variables`. How to fill?

Hi,

Can somebody help me with any example of host.variables filling? I use this excellent script to pull all my switches from MySQL and it works perfect with Python 3 but I have several switches that use different username/password and I can't understand how to fill variables to use other name/password combination for these specific switches.
Please, help.

Roman

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.