Locally Tested

This commit is contained in:
SirishaGopigiri 2020-06-05 22:04:07 +05:30
parent c48c943455
commit a5e24400ce
5 changed files with 76 additions and 12 deletions

View File

@ -0,0 +1,5 @@
[defaults]
roles_path = /opt/ansible/roles
library = /usr/share/ansible/openshift
remote_tmp = /tmp/ansible
host_key_checking = False

View File

@ -1,10 +1,19 @@
FROM quay.io/operator-framework/ansible-operator:v0.17.0
RUN mkdir ${HOME}/.ssh
COPY build/id_rsa ${HOME}/.ssh/
USER root
RUN dnf install openssh-clients -y
RUN chown ansible-operator:root ${HOME}/.ssh/id_rsa
USER ansible-operator
COPY requirements.yml ${HOME}/requirements.yml
RUN ansible-galaxy collection install -r ${HOME}/requirements.yml \
&& chmod -R ug+rwx ${HOME}/.ansible
COPY watches.yaml ${HOME}/watches.yaml
COPY ansible.cfg /etc/ansible/ansible.cfg
COPY roles/ ${HOME}/roles/
COPY playbook.yaml ${HOME}/

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA07lBYNQ41IEUF7hnxndAY0Xf6/Dfghqgqvrufc9RmuVg4+1e
Ab7KD5fQacBn5jI1e0muoONUKPOw2ig3vTrIAI4SeaiqIwGGDUPqE8HJWuoRCu9z
fC9EzbG8rxgohgjqLCWhKm0LJpaOcmrAecEas9Qq74VMECDPgMYTgtZ7VHzCjnBe
LSsivKcc9G+xR7kvSOhg1TOZUMhuzuZ+zFAcWtRzrqPLEns+kF3abpa+L/3NvsD6
UKpY+qJr6aRNsw/iwqtW4Xn2O2dbqJ3/ROhxdvl0nk2yyqVtJej5ZrbXDgSBnVWO
0TgByl/sgO0kFPQ/0eclB+j9KMd8Wl9BGb/NMwIDAQABAoIBAC0eV25ZC1tNvohn
hcXnd9Mv+s3+4MKLBh4pp1UsLwnBQ+qOlO/uRoUYJxPCKuIFZRxG0W37w92OQOvc
kjRDKIflvs4qQUeAdZ6yEFnxfAVhyAv6hzO5pwHmlH0Duu8FS1HpGvU9k5i/kM+V
LDtGCXi1CAlO8KynMVER5OqG5nVUVZ7Et1hAveoM4ayloG6RjQ9w+vpWuqsvpVwx
jePNSJ3qCbjtxtAHlJSrXIiKbgqgkoffK85G01wQvRWTk5FnDFLH8EsPeqKhvTn6
AreFSE5kN/HKigGCKlz4N09YJyX+m1uy6qXT8wZlQkyQwLAORxnqY414ShU+uCoP
ldxgSVECgYEA8XfL56wsEZBxwktYSNzFWmwRHrQBGVpJArahdkSz4ZuJAY8q/Ddi
H2KlYr4aQ5bkdrR7mDn+MpRomZh2GkOic/XdxZvxi5nXM2W7+B1wqqpl+Il1+6CJ
++2nyms75/ot8U+pUoGz3SIOfwAOc6VKwWsQYgpmqSrgck0EIXDieTcCgYEA4Hcz
LhTrc18dfkQ28+hCG77s1/k0wRwtzlkILOihBjo97LwFcTqEor+X9t3H6ls91STa
9rhexDTORn0Dp1/V4ixyAbDg/mhK6IOQ4rjmYmRgoWbOexO9vZALujoRyFyA78xd
xp3sBfdjtWXU84KPqeCiYjWQ2pS1fDLT2RbFGeUCgYA9Ed5JLptKqeyLhkDC1Ms5
DkHaMQ5iGhqDDCuT3NZdxdeFxG7LsToo0+seKRQ9aelIOGdV3bzzj+NQjWW5SMfK
ajF3q/QQKY1q210J6HA5SbVWgXWMeVLMm5OnNy3EgtqhwFMDofgagmWGKz58cx6Q
AoL3OMg0Grr/TYkw5/rvSwKBgCBndN8BLCBiqcpRpLE/ZVPGE0D2e/Qo0kAIwFJj
XuOcQtZLKmn3LbClAhYkXDjr5RhBEs8tPJkMmn64i299OU5GZkryMvjnK3E3lRH1
6WRo4z5JriM8bVbRVbATs/99wytbEGqc37bYyO8l/UEOJxk6EZcl7nxvnWeJmuWr
ENc1AoGBAKxdXkratZYAElMdmJu243VxGNbpE0ABWEEtGMoWDa4G9Z3GZPZK27aL
wTlh0EBn6JxLdruT4nhfpo4/soWOirMEh6Sh1hH4keOuss/Jd/1EYUHY5az7Eiy+
umjY6NBiDNBE4Od0csJYsUeI3wYIp8ijT58C3JCjlXeGprVCS/fE
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTuUFg1DjUgRQXuGfGd0BjRd/r8N+CGqCq+u59z1Ga5WDj7V4BvsoPl9BpwGfmMjV7Sa6g41Qo87DaKDe9OsgAjhJ5qKojAYYNQ+oTwcla6hEK73N8L0TNsbyvGCiGCOosJaEqbQsmlo5yasB5wRqz1CrvhUwQIM+AxhOC1ntUfMKOcF4tKyK8pxz0b7FHuS9I6GDVM5lQyG7O5n7MUBxa1HOuo8sSez6QXdpulr4v/c2+wPpQqlj6omvppE2zD+LCq1bhefY7Z1uonf9E6HF2+XSeTbLKpW0l6PlmttcOBIGdVY7ROAHKX+yA7SQU9D/R5yUH6P0ox3xaX0EZv80z sirisha@dumbledore

View File

@ -10,14 +10,17 @@ import yaml
import json
interested_labels_annotations = ["beta.kubernetes.io/arch", "beta.kubernetes.io/os", "kubernetes.io/arch", "kubernetes.io/hostname", "kubernetes.io/os", "kubernetes.io/role", "topology.kubernetes.io/region", "topology.kubernetes.io/zone", "projectcalico.org/IPv4Address", "projectcalico.org/IPv4IPIPTunnelAddr", "Kernel Version", "OS Image", "Operating System", "Container Runtime Version", "Kubelet Version", "Operating System"]
class KubeInventory(object):
def __init__(self):
self.inventory = {}
self.read_cli_args()
self.api_instance = kubernetes.client.CoreV1Api(kubernetes.config.load_incluster_config())
if self.args.list:
self.inventory = self.kube_inventory()
# self.inventory = self.kube_inventory()
self.kube_inventory()
elif self.args.host:
# Not implemented, since we return _meta info `--list`.
self.inventory = self.empty_inventory()
@ -30,22 +33,28 @@ class KubeInventory(object):
# Kube driven inventory
def kube_inventory(self):
self.inventory = {"group": {"hosts": [], "vars": {}}, "_meta": {"hostvars": {}}}
self.inventory["group"]["vars"]["ansible_ssh_user"] = "deployer"
self.inventory["group"]["vars"]["ansible_ssh_user"] = "sirisha"
self.inventory["group"]["vars"][
"ansible_ssh_private_key_file"
] = "~/.ssh/id_rsa.pem"
] = "~/.ssh/id_rsa"
api_instance = kubernetes.client.CoreV1Api(kubernetes.config.load_incluster_config())
#api_instance = kubernetes.client.CoreV1Api(kubernetes.config.load_kube_config())
#TODO: read from env var
#label_selector = "kubernetes.io/hostname=kind-control-plane"
label_selector = "node-role.kubernetes.io/master="
self.get_nodes()
return
def get_nodes(self):
#label_selector = "kubernetes.io/role="+role
try:
nodes = api_instance.list_node(label_selector=label_selector).to_dict()[
nodes = self.api_instance.list_node().to_dict()[
"items"
]
#nodes = self.api_instance.list_node(label_selector=label_selector).to_dict()[
# "items"
#]
except ApiException as e:
print("Exception when calling CoreV1Api->list_node: %s\n" % e)
@ -58,17 +67,30 @@ class KubeInventory(object):
else:
node_internalip = None
self.inventory["group"]["hosts"].append(node_internalip)
self.inventory["_meta"]["hostvars"][node_internalip] = {}
for key, value in node["metadata"]["annotations"].items():
self.inventory["_meta"]["hostvars"][node_internalip][key] = value
for key, value in node["metadata"]["labels"].items():
self.inventory["_meta"]["hostvars"][node_internalip][key] = value
if key in interested_labels_annotations:
if value not in self.inventory.keys():
self.inventory[value] = {"hosts": [], "vars": {}}
if node_internalip not in self.inventory[value]["hosts"]:
self.inventory[value]["hosts"].append(node_internalip)
for key, value in node['status']['node_info'].items():
self.inventory["_meta"]["hostvars"][node_internalip][key] = value
if key in interested_labels_annotations:
if value not in self.inventory.keys():
self.inventory[value] = {"hosts": [], "vars": {}}
if node_internalip not in self.inventory[value]["hosts"]:
self.inventory[value]["hosts"].append(node_internalip)
self.inventory["_meta"]["hostvars"][node_internalip][
"kube_node_name"
] = node["metadata"]["name"]
self.inventory["_meta"]["hostvars"][node_internalip]["architecture"] = node['status']['node_info']['architecture']
self.inventory["_meta"]["hostvars"][node_internalip]["kernel_version"] = node['status']['node_info']['kernel_version']
return
# return self.inventory
return self.inventory
# Empty inventory.
def empty_inventory(self):
return {"_meta": {"hostvars": {}}}