diff --git a/inventories/linode_inventory.yml b/inventories/linode_inventory.yml deleted file mode 100644 index 9091f70..0000000 --- a/inventories/linode_inventory.yml +++ /dev/null @@ -1,2 +0,0 @@ -plugin: community.general.linode -access_token: 07839c2e36bc7663b2fd2c5084f8d42679b9164d59aa7aa1a4f7230d493e1c44 diff --git a/roles/infrastructure/arch_update/meta/main.yml b/roles/infrastructure/arch_update/meta/main.yml new file mode 100644 index 0000000..acc79b0 --- /dev/null +++ b/roles/infrastructure/arch_update/meta/main.yml @@ -0,0 +1,11 @@ +--- +galaxy_info: + author: Kevin M. Thompson (phlux) + description: Update all packages on Arch systems + license: MIT + min_ansible_version: 2.9 + platforms: + - name: Arch + versions: + - all +dependencies: [] diff --git a/roles/infrastructure/arch_update/tasks/main.yml b/roles/infrastructure/arch_update/tasks/main.yml new file mode 100644 index 0000000..a14ec74 --- /dev/null +++ b/roles/infrastructure/arch_update/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- name: Update package database + ansible.builtin.command: pacman -Sy --noconfirm + become: yes + +- name: Update all packages + ansible.builtin.command: pacman -Su --noconfirm + become: yes diff --git a/roles/inventory/linode_inventory/files/linode_inventory.py b/roles/inventory/linode_inventory/files/linode_inventory.py deleted file mode 100755 index 53273fa..0000000 --- a/roles/inventory/linode_inventory/files/linode_inventory.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 - -import os -import sys -import requests -import json - -def main(): - linode_token = os.getenv("LINODE_API_TOKEN") or os.getenv("ANSIBLE_PASSWORD") - if not linode_token: - print("Error: LINODE_API_TOKEN or ANSIBLE_PASSWORD environment variable not set.", file=sys.stderr) - sys.exit(1) - - headers = {"Authorization": f"Bearer {linode_token}"} - response = requests.get("https://api.linode.com/v4/linode/instances", headers=headers) - - if response.status_code != 200: - print(f"Error fetching Linode instances: {response.status_code}", file=sys.stderr) - sys.exit(1) - - linodes = response.json()["data"] - - inventory = { - "all": { - "hosts": [], - "vars": {} - }, - "_meta": { - "hostvars": {} - } - } - - for linode in linodes: - hostname = linode["label"] - ipv4 = linode["ipv4"] - - if hostname and ipv4: - public_ip = ipv4[0] - inventory["all"]["hosts"].append(hostname) - inventory["_meta"]["hostvars"][hostname] = { - "ansible_host": public_ip - } - - print(json.dumps(inventory, indent=2)) - -if __name__ == "__main__": - main() diff --git a/roles/inventory/linode_inventory/tasks/main.yml b/roles/inventory/linode_inventory/tasks/main.yml deleted file mode 100644 index 5a28b80..0000000 --- a/roles/inventory/linode_inventory/tasks/main.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- name: Run Linode dynamic inventory script - ansible.builtin.script: "{{ playbook_dir }}/roles/inventory/linode_inventory/files/linode_inventory.py" - register: linode_inventory_raw - changed_when: false - -- name: Show raw script output - ansible.builtin.debug: - var: linode_inventory_raw.stdout - -- name: Parse JSON inventory output - ansible.builtin.set_fact: - linode_inventory: "{{ linode_inventory_raw.stdout | from_json }}" - -- name: Add Linode hosts dynamically - ansible.builtin.add_host: - name: "{{ item.key }}" - ansible_host: "{{ item.value.ansible_host }}" - groups: all - loop: "{{ linode_inventory['_meta']['hostvars'] | dict2items }}" -