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
|
# ---> Ansible
|
||||||
*.retry
|
*.retry
|
||||||
|
*.tar.gz
|
||||||
|
|
|
@ -5,6 +5,35 @@ stop50.ansible-netcup Release Notes
|
||||||
.. contents:: Topics
|
.. 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
|
v0.1.0
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -6,7 +6,10 @@ changelog:
|
||||||
antsibull-changelog generate
|
antsibull-changelog generate
|
||||||
|
|
||||||
docs: format
|
docs: format
|
||||||
./update_doc
|
update-doc
|
||||||
|
|
||||||
release: changelog docs
|
release: changelog docs
|
||||||
ansible-galaxy collection build
|
ansible-galaxy collection build
|
||||||
|
|
||||||
|
upload: release
|
||||||
|
./upload.sh
|
||||||
|
|
|
@ -20,4 +20,4 @@ plugins:
|
||||||
strategy: {}
|
strategy: {}
|
||||||
test: {}
|
test: {}
|
||||||
vars: {}
|
vars: {}
|
||||||
version: 0.1.0
|
version: 0.1.3
|
||||||
|
|
|
@ -11,3 +11,25 @@ releases:
|
||||||
name: scp
|
name: scp
|
||||||
namespace: null
|
namespace: null
|
||||||
release_date: '2023-11-26'
|
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
|
namespace: sebastian
|
||||||
name: netcup
|
name: netcup
|
||||||
version: 0.1.0
|
version: 0.1.5
|
||||||
readme: README.md
|
readme: README.md
|
||||||
authors:
|
authors:
|
||||||
- Sebastian Tobie
|
- Sebastian Tobie
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
plugin: sebastian.netcup.scp
|
plugin: ansible.netcup.scp
|
||||||
userid:
|
userid:
|
||||||
password:
|
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.inventory.data import InventoryData
|
||||||
from ansible.parsing.dataloader import DataLoader
|
from ansible.parsing.dataloader import DataLoader
|
||||||
from xmlrpc.client import ServerProxy
|
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||||
from zeep import Client, Settings
|
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
|
from zeep import Client, Settings
|
||||||
|
|
||||||
display = Display()
|
display = Display()
|
||||||
|
|
||||||
|
|
||||||
class InventoryModule(BaseInventoryPlugin):
|
class InventoryModule(BaseInventoryPlugin):
|
||||||
NAME = "sebastian.netcup.scp"
|
NAME = "sebastian.netcup.scp"
|
||||||
loader: DataLoader
|
loader: DataLoader
|
||||||
|
@ -31,9 +32,11 @@ class InventoryModule(BaseInventoryPlugin):
|
||||||
inventory.add_group("netcup_offline")
|
inventory.add_group("netcup_offline")
|
||||||
inventory.add_child("netcup", "netcup_online")
|
inventory.add_child("netcup", "netcup_online")
|
||||||
inventory.add_child("netcup", "netcup_offline")
|
inventory.add_child("netcup", "netcup_offline")
|
||||||
|
additional = self.config.get("additional_info", dict())
|
||||||
for hostname in self.service.getVServers(**self.args):
|
for hostname in self.service.getVServers(**self.args):
|
||||||
serverinfo = self.service.getVServerInformation(vservername=hostname, **self.args)
|
serverinfo = self.service.getVServerInformation(vservername=hostname, **self.args)
|
||||||
nickname = serverinfo["vServerNickname"] or serverinfo["vServerName"]
|
nickname = serverinfo["vServerNickname"] or serverinfo["vServerName"]
|
||||||
|
ai = additional.get(nickname, dict())
|
||||||
group = "netcup_online"
|
group = "netcup_online"
|
||||||
if serverinfo["status"] != "online":
|
if serverinfo["status"] != "online":
|
||||||
group = "netcup_offline"
|
group = "netcup_offline"
|
||||||
|
@ -41,25 +44,33 @@ class InventoryModule(BaseInventoryPlugin):
|
||||||
inventory.add_host(nickname, group)
|
inventory.add_host(nickname, group)
|
||||||
else:
|
else:
|
||||||
inventory.add_child(group, nickname)
|
inventory.add_child(group, nickname)
|
||||||
interfaces = []
|
interfaces = dict()
|
||||||
|
ai_interfaces = ai.pop("interfaces", dict())
|
||||||
for interface in serverinfo["serverInterfaces"]:
|
for interface in serverinfo["serverInterfaces"]:
|
||||||
interfaces.append(
|
interfaces[interface["mac"]] = dict()
|
||||||
dict(
|
interfaces[interface["mac"]].update(
|
||||||
driver=interface["driver"],
|
driver=interface["driver"],
|
||||||
id=interface["id"],
|
id=interface["id"],
|
||||||
ipv4=interface["ipv4IP"],
|
ipv4=interface["ipv4IP"],
|
||||||
ipv6=interface["ipv6IP"],
|
ipv6=interface["ipv6IP"],
|
||||||
mac=interface["mac"],
|
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, "interfaces", interfaces)
|
||||||
inventory.set_variable(nickname, "memory", serverinfo["memory"])
|
inventory.set_variable(nickname, "memory", serverinfo["memory"])
|
||||||
inventory.set_variable(nickname, "name", serverinfo["vServerName"])
|
inventory.set_variable(nickname, "name", serverinfo["vServerName"])
|
||||||
inventory.set_variable(nickname, "cores", serverinfo["cpuCores"])
|
inventory.set_variable(nickname, "cores", serverinfo["cpuCores"])
|
||||||
inventory.set_variable(nickname, "up", serverinfo["status"] == "online")
|
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
|
name: sebastian.netcup.scp
|
||||||
plugin_type: inventory
|
plugin_type: inventory
|
||||||
short_description: Returns Ansible inventory from netcup SCP
|
short_description: Returns Ansible inventory from netcup SCP
|
||||||
|
@ -78,4 +89,16 @@ DOCUMENTATION = r'''
|
||||||
- API password to authenticate againt the api.
|
- API password to authenticate againt the api.
|
||||||
- This is different from you SCP password and must be set indipendently from the SCP password
|
- This is different from you SCP password and must be set indipendently from the SCP password
|
||||||
required: true
|
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
|
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