From 7f90530e816d5c47d41373dc9ea16ea6e21f4217 Mon Sep 17 00:00:00 2001 From: Tobias Trabelsi Date: Sat, 30 Jan 2021 19:50:13 +0100 Subject: [PATCH] init --- .drone.yml | 104 ++++++++++++++++++++++++++++++++++++++++ README.md | 18 +++++++ defaults/main.yml | 1 + files/main.yml | 0 handlers/main.yml | 0 meta/main.yml | 20 ++++++++ tasks/main.yml | 18 +++++++ tasks/update-Arch.yml | 19 ++++++++ tasks/update-Debian.yml | 46 ++++++++++++++++++ tasks/update-RedHat.yml | 9 ++++ tests/inventory | 8 ++++ tests/test-playbook.yml | 7 +++ vars/Archlinux.yml | 1 + vars/CentOS.yml | 1 + vars/Debian.yml | 5 ++ vars/Ubuntu.yml | 5 ++ vars/main.yml | 1 + 17 files changed, 263 insertions(+) create mode 100644 .drone.yml create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 files/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 tasks/update-Arch.yml create mode 100644 tasks/update-Debian.yml create mode 100644 tasks/update-RedHat.yml create mode 100644 tests/inventory create mode 100644 tests/test-playbook.yml create mode 100644 vars/Archlinux.yml create mode 100644 vars/CentOS.yml create mode 100644 vars/Debian.yml create mode 100644 vars/Ubuntu.yml create mode 100644 vars/main.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..6223b74 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,104 @@ +--- +kind: pipeline +name: ansible-test + +platform: + os: linux + arch: amd64 + +concurrency: + limit: 9 + +steps: + + - name: prepare_workspace + image: alpine + commands: + - mkdir -p /drone/src/tests/update-system + - mv defaults /drone/src/tests/update-system/ + - mv files /drone/src/tests/update-system/ + - mv handlers /drone/src/tests/update-system/ + - mv meta /drone/src/tests/update-system/ + - mv tasks /drone/src/tests/update-system/ + - mv templates /drone/src/tests/update-system/ + - mv vars /drone/src/tests/update-system/ + when: + event: + - push + - pull_request + + - name: test-debian7 + image: lerentis/ansible:debian-7 + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: test-debian8 + image: lerentis/ansible:debian-8 + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: test-ubuntu14 + image: lerentis/ansible:ubuntu-14.04 + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: test-ubuntu16 + image: lerentis/ansible:ubuntu-16.04 + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: test-ubuntu18 + image: lerentis/ansible:ubuntu-18.04 + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: test-arch + image: lerentis/ansible:arch + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: test-centos7 + image: lerentis/ansible:centos-7 + commands: + - ansible-playbook -i tests/inventory tests/test-playbook.yml --syntax-check + - ansible-playbook -i tests/inventory tests/test-playbook.yml + depends_on: + - prepare_workspace + + - name: notify + image: appleboy/drone-telegram + settings: + message: "Commit {{ commit.link }} ran with build {{ build.number }} and finished with status {{ build.status }}." + to: 14852963 + token: 335668211:AAF-YgId7iI6ANBuZVy4uVOYYqA4R4uAaqY + when: + status: + - failure + - success + depends_on: + - prepare_workspace + - test-debian7 + - test-debian8 + - test-ubuntu14 + - test-ubuntu16 + - test-ubuntu18 + - test-arch + - test-centos7 diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e1fe7d --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +update-debian +========= + +This Role will update a Linux based system and check if a reboot is required + +Example Playbook +---------------- + +```yml + - hosts: servers + roles: + - { role: update-system } +``` + +License +------- + +MIT diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1 @@ +--- diff --git a/files/main.yml b/files/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..163fbf9 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,20 @@ +galaxy_info: + author: Tobias Trabelsi + description: Update certain Linux Systems + + license: MIT + + min_ansible_version: 2.4 + + platforms: + - name: CentOS + versions: + - 7 + - 8 + - name: Debian + versions: + - 10 + - name: Ubuntu + version: + - 18.04 + - 20.04 \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..d2e901a --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,18 @@ +- name: Load OS Specific Vars + include_vars: "{{ lookup('first_found', possible_files) }}" + vars: + possible_files: + - "../vars/{{ ansible_distribution }}.yml" + tags: [ 'install', 'prepare' ] + +- include_tasks: update-RedHat.yml + when: + - ansible_os_family == 'RedHat' + +- include_tasks: update-Debian.yml + when: + - ansible_os_family == 'Debian' + +- include_tasks: update-Arch.yml + when: + - ansible_os_family == 'Archlinux' \ No newline at end of file diff --git a/tasks/update-Arch.yml b/tasks/update-Arch.yml new file mode 100644 index 0000000..3d52ebc --- /dev/null +++ b/tasks/update-Arch.yml @@ -0,0 +1,19 @@ +--- +- name: Update + become: yes + become_method: sudo + pacman: + update_cache: yes + upgrade: yes + when: ansible_os_family == "Archlinux" + +- name: Check if a reboot is required + register: reboot_required_file + stat: + path: /var/run/reboot-required get_md5=no + +- name: Needs Reboot + debug: + msg: "Restart Required!!" + ignore_errors: true + when: reboot_required_file.stat.exists == true \ No newline at end of file diff --git a/tasks/update-Debian.yml b/tasks/update-Debian.yml new file mode 100644 index 0000000..f206d31 --- /dev/null +++ b/tasks/update-Debian.yml @@ -0,0 +1,46 @@ +--- + +- name: Update apt keys + become: yes + command: apt-key update + when: ansible_os_family == "Debian" or ansible_os_family == "OSMC" + +- name: Upgrade all packages to the latest version + become: yes + apt: + upgrade: dist + update_cache: yes + cache_valid_time: 3600 + environment: + PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin" + when: ansible_os_family == "Debian" or ansible_os_family == "OSMC" + +- name: Remove useless packages from the cache + become: yes + become_method: sudo + ignore_errors: true + command: > + apt-get autoremove -y + environment: + PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin" + when: ansible_os_family == "Debian" or ansible_os_family == "OSMC" + +- name: install packages + become: yes + apt: + name: "{{ item }}" + state: present + with_items: + - "{{ package_list }}" + when: install and ansible_os_family == "Debian" + +- name: Check if a reboot is required + register: reboot_required_file + stat: + path: /var/run/reboot-required get_md5=no + +- name: Needs Reboot + debug: + msg: "Restart Required!!" + ignore_errors: true + when: reboot_required_file.stat.exists == true \ No newline at end of file diff --git a/tasks/update-RedHat.yml b/tasks/update-RedHat.yml new file mode 100644 index 0000000..cd60ad2 --- /dev/null +++ b/tasks/update-RedHat.yml @@ -0,0 +1,9 @@ +--- + +- name: install updates + become: yes + yum: + update_cache: yes + name: '*' + state: latest + when: ansible_os_family == "RedHat" \ No newline at end of file diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..2c4f8f6 --- /dev/null +++ b/tests/inventory @@ -0,0 +1,8 @@ +[debian] +localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python2 + +[arch] +localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python2 + +[centos] +localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python2 \ No newline at end of file diff --git a/tests/test-playbook.yml b/tests/test-playbook.yml new file mode 100644 index 0000000..d291079 --- /dev/null +++ b/tests/test-playbook.yml @@ -0,0 +1,7 @@ +--- + +- name: test playbook + hosts: all + gather_facts: True + roles: + - update-debian diff --git a/vars/Archlinux.yml b/vars/Archlinux.yml new file mode 100644 index 0000000..73b314f --- /dev/null +++ b/vars/Archlinux.yml @@ -0,0 +1 @@ +--- \ No newline at end of file diff --git a/vars/CentOS.yml b/vars/CentOS.yml new file mode 100644 index 0000000..73b314f --- /dev/null +++ b/vars/CentOS.yml @@ -0,0 +1 @@ +--- \ No newline at end of file diff --git a/vars/Debian.yml b/vars/Debian.yml new file mode 100644 index 0000000..649897f --- /dev/null +++ b/vars/Debian.yml @@ -0,0 +1,5 @@ +--- + +install: false +package_list: + - "apt" diff --git a/vars/Ubuntu.yml b/vars/Ubuntu.yml new file mode 100644 index 0000000..649897f --- /dev/null +++ b/vars/Ubuntu.yml @@ -0,0 +1,5 @@ +--- + +install: false +package_list: + - "apt" diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/vars/main.yml @@ -0,0 +1 @@ +---