Commits vergleichen
12 Commits
Autor | SHA1 | Datum | |
---|---|---|---|
5ce05cdc4f | |||
d3114d4a4a | |||
2d8f065f5a | |||
805c3087e8 | |||
c396f6c628 | |||
026f1240ee | |||
f3a1e25323 | |||
333a906f05 | |||
0384f7c17e | |||
527ad350cf | |||
5efc47cccc | |||
a66f30ebad |
14 geänderte Dateien mit 114 neuen und 21 gelöschten Zeilen
2
.gitignore
gevendort
2
.gitignore
gevendort
|
@ -162,4 +162,4 @@ cython_debug/
|
|||
|
||||
# ---> Ansible
|
||||
*.retry
|
||||
|
||||
*.tar.gz
|
||||
|
|
|
@ -5,6 +5,35 @@ stop50.ansible-netcup Release Notes
|
|||
.. contents:: Topics
|
||||
|
||||
|
||||
v0.1.3
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
changed owner of collection
|
||||
|
||||
v0.1.2
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
added additional_info parameter
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- added additional_info to the config. this allows addtional data to be added to the inventory
|
||||
|
||||
v0.1.1
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
added nickname_is_hostname config to let the nickname be the hostname of the host
|
||||
|
||||
v0.1.0
|
||||
======
|
||||
|
||||
|
|
5
Makefile
5
Makefile
|
@ -6,7 +6,10 @@ changelog:
|
|||
antsibull-changelog generate
|
||||
|
||||
docs: format
|
||||
./update_doc
|
||||
update-doc
|
||||
|
||||
release: changelog docs
|
||||
ansible-galaxy collection build
|
||||
|
||||
upload: release
|
||||
./upload.sh
|
||||
|
|
|
@ -20,4 +20,4 @@ plugins:
|
|||
strategy: {}
|
||||
test: {}
|
||||
vars: {}
|
||||
version: 0.1.0
|
||||
version: 0.1.3
|
||||
|
|
|
@ -11,3 +11,25 @@ releases:
|
|||
name: scp
|
||||
namespace: null
|
||||
release_date: '2023-11-26'
|
||||
0.1.1:
|
||||
changes:
|
||||
release_summary: added nickname_is_hostname config to let the nickname be the
|
||||
hostname of the host
|
||||
fragments:
|
||||
- scp-hostname.yml
|
||||
release_date: '2023-12-10'
|
||||
0.1.2:
|
||||
changes:
|
||||
minor_changes:
|
||||
- added additional_info to the config. this allows addtional data to be added
|
||||
to the inventory
|
||||
release_summary: added additional_info parameter
|
||||
fragments:
|
||||
- scp-additional_info.yml
|
||||
release_date: '2023-12-10'
|
||||
0.1.3:
|
||||
changes:
|
||||
release_summary: changed owner of collection
|
||||
fragments:
|
||||
- owner-change.yml
|
||||
release_date: '2023-12-30'
|
||||
|
|
2
changelogs/fragments/fixed-scp-py.yml
Normale Datei
2
changelogs/fragments/fixed-scp-py.yml
Normale Datei
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
release_summary: fixed scp.py
|
2
changelogs/fragments/owner-change.yml
Normale Datei
2
changelogs/fragments/owner-change.yml
Normale Datei
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
release_summary: changed owner of collection
|
4
changelogs/fragments/scp-additional_info.yml
Normale Datei
4
changelogs/fragments/scp-additional_info.yml
Normale Datei
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
release_summary: added additional_info parameter
|
||||
minor_changes:
|
||||
- added additional_info to the config. this allows addtional data to be added to the inventory
|
2
changelogs/fragments/scp-hostname.yml
Normale Datei
2
changelogs/fragments/scp-hostname.yml
Normale Datei
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
release_summary: added nickname_is_hostname config to let the nickname be the hostname of the host
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
namespace: sebastian
|
||||
name: netcup
|
||||
version: 0.1.0
|
||||
version: 0.1.5
|
||||
readme: README.md
|
||||
authors:
|
||||
- Sebastian Tobie
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
---
|
||||
plugin: sebastian.netcup.scp
|
||||
plugin: ansible.netcup.scp
|
||||
userid:
|
||||
password:
|
||||
nickname_is_hostname: false
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||
from xmlrpc.client import ServerProxy
|
||||
|
||||
from ansible.inventory.data import InventoryData
|
||||
from ansible.parsing.dataloader import DataLoader
|
||||
from xmlrpc.client import ServerProxy
|
||||
from zeep import Client, Settings
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||
from ansible.utils.display import Display
|
||||
|
||||
from zeep import Client, Settings
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
class InventoryModule(BaseInventoryPlugin):
|
||||
NAME = "sebastian.netcup.scp"
|
||||
loader: DataLoader
|
||||
|
@ -31,9 +32,11 @@ class InventoryModule(BaseInventoryPlugin):
|
|||
inventory.add_group("netcup_offline")
|
||||
inventory.add_child("netcup", "netcup_online")
|
||||
inventory.add_child("netcup", "netcup_offline")
|
||||
additional = self.config.get("additional_info", dict())
|
||||
for hostname in self.service.getVServers(**self.args):
|
||||
serverinfo = self.service.getVServerInformation(vservername=hostname, **self.args)
|
||||
nickname = serverinfo["vServerNickname"] or serverinfo["vServerName"]
|
||||
ai = additional.get(nickname, dict())
|
||||
group = "netcup_online"
|
||||
if serverinfo["status"] != "online":
|
||||
group = "netcup_offline"
|
||||
|
@ -41,25 +44,33 @@ class InventoryModule(BaseInventoryPlugin):
|
|||
inventory.add_host(nickname, group)
|
||||
else:
|
||||
inventory.add_child(group, nickname)
|
||||
interfaces = []
|
||||
interfaces = dict()
|
||||
ai_interfaces = ai.pop("interfaces", dict())
|
||||
for interface in serverinfo["serverInterfaces"]:
|
||||
interfaces.append(
|
||||
dict(
|
||||
interfaces[interface["mac"]] = dict()
|
||||
interfaces[interface["mac"]].update(
|
||||
driver=interface["driver"],
|
||||
id=interface["id"],
|
||||
ipv4=interface["ipv4IP"],
|
||||
ipv6=interface["ipv6IP"],
|
||||
mac=interface["mac"],
|
||||
)
|
||||
)
|
||||
interfaces[interface["mac"]].update(ai_interfaces.pop(interface["mac"], dict()))
|
||||
if len(interface["ipv4IP"]) > 0:
|
||||
ansible_host = interface["ipv4IP"][0]
|
||||
inventory.set_variable(nickname, "interfaces", interfaces)
|
||||
inventory.set_variable(nickname, "memory", serverinfo["memory"])
|
||||
inventory.set_variable(nickname, "name", serverinfo["vServerName"])
|
||||
inventory.set_variable(nickname, "cores", serverinfo["cpuCores"])
|
||||
inventory.set_variable(nickname, "up", serverinfo["status"] == "online")
|
||||
if ai.get("ansible_host", False):
|
||||
ansible_host = ai.pop("ansible_host")
|
||||
elif self.config.get("nickname_is_hostname", False):
|
||||
ansible_host = nickname
|
||||
inventory.set_variable(nickname, "ansible_host", ansible_host)
|
||||
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
DOCUMENTATION = """
|
||||
name: sebastian.netcup.scp
|
||||
plugin_type: inventory
|
||||
short_description: Returns Ansible inventory from netcup SCP
|
||||
|
@ -78,4 +89,16 @@ DOCUMENTATION = r'''
|
|||
- API password to authenticate againt the api.
|
||||
- This is different from you SCP password and must be set indipendently from the SCP password
|
||||
required: true
|
||||
'''
|
||||
nickname_is_hostname:
|
||||
version_added: 0.1.1
|
||||
description: use the nickname as hostname
|
||||
type: bool
|
||||
required: false
|
||||
default: false
|
||||
additional_info:
|
||||
version_added: 0.1.2
|
||||
description:
|
||||
required: false
|
||||
default: {}
|
||||
type: dict
|
||||
"""
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
ansible-module>=0.1.3
|
||||
zeep
|
||||
|
|
6
upload.sh
Ausführbare Datei
6
upload.sh
Ausführbare Datei
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
user=$(yq -r .namespace galaxy.yml)
|
||||
package=$(yq -r .name galaxy.yml)
|
||||
version=$(yq -r .version galaxy.yml)
|
||||
printf "Namespace: %s\nPackage: %s\nVersion: %s\nfile name: %s\n" $user $package $version "$user-$package-$version.tar.gz"
|
||||
curl -u sebastian --upload-file "${user}-${package}-${version}.tar.gz" "https://gitea.sebastian-tobie.de/api/packages/ansible/generic/${package}/${version}/${user}-${package}-${version}.tar.gz"
|
Laden …
Tabelle hinzufügen
In neuem Issue referenzieren