项目作者: avollmerhaus

项目描述 :
Read YAML-formatted ansible inventory, create digitalocean droplets accordingly.
高级语言: Python
项目地址: git://github.com/avollmerhaus/dofaucet.git
创建时间: 2019-04-02T14:16:16Z
项目社区:https://github.com/avollmerhaus/dofaucet

开源协议:MIT License

下载


dofaucet

tl;dr

Read YAML-formatted ansible inventory, create digitalocean droplets accordingly.

Neat tricks:

  • creates DNS records for both internal and external droplet IPs
  • adds ssh pubkeys to droplets (only keys already uploaded to DO)
  • adds all created droplets to a project so they’re easy to identify

Example usage

Inventory

foo.yml

  1. all:
  2. vars:
  3. do_ssh_key_names: ['my_key', 'my_friends_key']
  4. dofaucet_dnsroot: example.com
  5. do_project: test_webstack_ansible
  6. do_image_slug: fedora-29-x64
  7. foohosts:
  8. vars:
  9. do_tags: foohosts
  10. hosts:
  11. foo.infra.example.com
  12. barhosts:
  13. vars:
  14. do_tags: barhosts
  15. # the bar app needs more ram
  16. do_size_slug: s-1vcpu-2gb
  17. hosts:
  18. bar.infra.example.com

dofaucet CLI

  1. dofaucet --token 23234242 --project foo --inventory foo.yml

future ideas

Ansible is python3, so we could use the native ansible functionality to parse the inventory.
Example code:

  1. from ansible.parsing.dataloader import DataLoader
  2. from ansible.vars.manager import VariableManager
  3. from ansible.inventory.manager import InventoryManager
  4. loader = DataLoader()
  5. inventory = InventoryManager(loader=loader, sources='~/inventory.yml')
  6. variable_manager = VariableManager(loader=loader, inventory=inventory)