From 549ca9b641e2ee8620329118d3cd9def7f28a790 Mon Sep 17 00:00:00 2001 From: Jan Beilicke Date: Tue, 24 Mar 2020 00:55:53 +0100 Subject: [PATCH] Initial commit --- README.md | 39 +++++++++++++++++++++++++++++ defaults/main.yml | 10 ++++++++ handlers/main.yml | 2 ++ meta/main.yml | 53 ++++++++++++++++++++++++++++++++++++++++ tasks/ansible-debian.yml | 4 +++ tasks/locales-debian.yml | 22 +++++++++++++++++ tasks/main.yml | 26 ++++++++++++++++++++ tasks/python-debian.yml | 8 ++++++ tasks/users.yml | 49 +++++++++++++++++++++++++++++++++++++ tests/inventory | 2 ++ tests/test.yml | 5 ++++ vars/main.yml | 2 ++ 12 files changed, 222 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/ansible-debian.yml create mode 100644 tasks/locales-debian.yml create mode 100644 tasks/main.yml create mode 100644 tasks/python-debian.yml create mode 100644 tasks/users.yml create mode 100644 tests/inventory create mode 100644 tests/test.yml create mode 100644 vars/main.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f420bf --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +Common tasks +============ + +Provides common tasks like creating required users, configuring locales or even bootstrapping python. + +Requirements +------------ + +Role Variables +-------------- + +Defaults: + +``` +locales_gen: + - en_US.UTF-8 + - de_DE.UTF-8 +locales_default: de_DE.UTF-8 +users: + - vagrant +sudoers: + - vagrant +``` + +Dependencies +------------ + +Example Playbook +---------------- + +License +------- + +MIT + +Author Information +------------------ + +This role was created in 2020 by [Jan Beilicke](https://jotbe.io). diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..704fcab --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,10 @@ +--- +# defaults file for common +locales_gen: + - en_US.UTF-8 + - de_DE.UTF-8 +locales_default: de_DE.UTF-8 +users: + - vagrant +sudoers: + - vagrant \ No newline at end of file diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..c6a8f0c --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for common \ No newline at end of file diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..3a212a9 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,53 @@ +galaxy_info: + author: your name + description: your description + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.4 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + # platforms: + # - name: Fedora + # versions: + # - all + # - 25 + # - name: SomePlatform + # versions: + # - all + # - 1.0 + # - 7 + # - 99.99 + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. + \ No newline at end of file diff --git a/tasks/ansible-debian.yml b/tasks/ansible-debian.yml new file mode 100644 index 0000000..22344ff --- /dev/null +++ b/tasks/ansible-debian.yml @@ -0,0 +1,4 @@ +--- +- name: Install Ansible + raw: test -e /usr/local/bin/ansible || pip3 install ansible + changed_when: false diff --git a/tasks/locales-debian.yml b/tasks/locales-debian.yml new file mode 100644 index 0000000..923a4eb --- /dev/null +++ b/tasks/locales-debian.yml @@ -0,0 +1,22 @@ +--- +- name: Generate locals + locale_gen: + name: "{{ item }}" + state: present + loop: "{{ locales_gen }}" + +- name: Get current locale + command: localectl status + register: locale_status + changed_when: false + +- name: Extract LANG from current locale configuration + set_fact: + locale_lang: "{{ locale_status.stdout | regex_search('LANG=([^\n]+)', '\\1') | first }}" + +- debug: + msg: "{{ locale_lang }}" + +- name: Set default locale + command: localectl set-locale LANG={{ locales_default }} + when: locale_lang != locales_default \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..e303d96 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,26 @@ +--- +# tasks file for common + +- include: locales-debian.yml + become: true + when: ansible_facts['os_family'] == 'Debian' +- include: users.yml + become: true +- include: python-debian.yml + become: true + when: ansible_facts['os_family'] == 'Debian' +- include: ansible-debian.yml + become: true + +- name: Install basic packages + apt: + name: "{{ packages }}" + state: present + #update_cache: yes + vars: + packages: + - htop + - tmux + become: yes +- name: Copy tmux config + copy: src=files/tmux.conf dest=/home/{{ ansible_user }}/.tmux.conf mode=0644 \ No newline at end of file diff --git a/tasks/python-debian.yml b/tasks/python-debian.yml new file mode 100644 index 0000000..b6898ad --- /dev/null +++ b/tasks/python-debian.yml @@ -0,0 +1,8 @@ +--- +- name: Install Python3 + raw: test -e /usr/bin/python3 || (apt update && apt install -y --force-yes python3) + changed_when: false + +- name: Install pip3 + raw: test -e /usr/bin/pip3 || (apt update && apt install -y --force-yes python3-pip) + changed_when: false \ No newline at end of file diff --git a/tasks/users.yml b/tasks/users.yml new file mode 100644 index 0000000..3241e75 --- /dev/null +++ b/tasks/users.yml @@ -0,0 +1,49 @@ +--- +- name: 'Install required packages' + pkgng: name={{item}} state=present + with_items: + - sudo + when: ansible_facts['os_family'] == 'FreeBSD' + +- name: 'Allow wheel group to do passwordless sudo' + lineinfile: + dest: /usr/local/etc/sudoers + state: present + regexp: '^%wheel' + line: '%wheel ALL=(ALL) NOPASSWD:ALL' + validate: visudo -cf %s + when: ansible_facts['os_family'] == 'FreeBSD' + +- name: 'Allow wheel group to do passwordless sudo' + lineinfile: + dest: /etc/sudoers + state: present + regexp: '^%wheel' + line: '%wheel ALL=(ALL) NOPASSWD:ALL' + validate: visudo -cf %s + when: ansible_facts['os_family'] == 'Debian' + +- name: 'Create users with corresponding groups' + user: + name: "{{ item }}" + groups: users + with_items: "{{ users }}" + +- name: 'Add corresponding authorized_keys to each user' + authorized_key: + user: "{{ item }}" + state: present + key: "{{ lookup('file', 'public_keys/id_{{ item }}.pub') }}" + with_items: "{{ users }}" + +- name: 'Ensure that wheel group is existing' + group: + name: wheel + state: present + +- name: 'Add sudoers user to wheel group' + user: + name: "{{ item }}" + groups: wheel + append: yes + with_items: "{{ sudoers }}" \ No newline at end of file diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..878877b --- /dev/null +++ b/tests/inventory @@ -0,0 +1,2 @@ +localhost + diff --git a/tests/test.yml b/tests/test.yml new file mode 100644 index 0000000..8d24282 --- /dev/null +++ b/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - common \ No newline at end of file diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..fed6035 --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for common