From ad7b82666245a7a06a1bcfa9108cd292ee1fc987 Mon Sep 17 00:00:00 2001 From: Thomas Constans Date: Thu, 17 Nov 2022 16:29:35 +0100 Subject: [PATCH] solution --- setup.yml | 44 +--------------- tco.setup/README.md | 38 ++++++++++++++ tco.setup/defaults/main.yml | 3 ++ tco.setup/handlers/main.yml | 2 + tco.setup/meta/main.yml | 52 +++++++++++++++++++ tco.setup/tasks/main.yml | 42 +++++++++++++++ .../templates/sudoers_ansible | 0 tco.setup/tests/inventory | 2 + tco.setup/tests/test.yml | 5 ++ tco.setup/vars/main.yml | 2 + 10 files changed, 148 insertions(+), 42 deletions(-) create mode 100644 tco.setup/README.md create mode 100644 tco.setup/defaults/main.yml create mode 100644 tco.setup/handlers/main.yml create mode 100644 tco.setup/meta/main.yml create mode 100644 tco.setup/tasks/main.yml rename sudoers_ansible => tco.setup/templates/sudoers_ansible (100%) create mode 100644 tco.setup/tests/inventory create mode 100644 tco.setup/tests/test.yml create mode 100644 tco.setup/vars/main.yml diff --git a/setup.yml b/setup.yml index 98f2a3d..7fcdd18 100644 --- a/setup.yml +++ b/setup.yml @@ -1,45 +1,5 @@ --- - name: setup target to be managed by ansible hosts: cibles - tasks: - - name: warn people - lineinfile: - path: /etc/motd - create: yes - line: "Host is managed by ansible, manual interaction not recommended" - state: present - - - name: history - lineinfile: - path: /etc/history - line: "{{ '%Y-%m-%d' | strftime }} - {{ ansible_play_name }}" - state: present - create: true - - - name: generate ssh keys - openssh_keypair: - path: "~/.ssh/id_rsa" - size: 2048 - delegate_to: localhost - become: false - - - name: create account - user: - name: "{{ ansible_user }}" - password: "{{ '123Soleil%' | password_hash('sha512',65534|random(seed=inventory_hostname) | string) }}" - create_home: yes - home: "/home/{{ ansible_user }}" - - - name: configure sudo - template: - src: sudoers_ansible - dest: /etc/sudoers.d/ansible - validate: "/usr/sbin/visudo -cf %s" - - - name: deploy ssh key - authorized_key: - user: "{{ ansible_user }}" - key: "{{ item }}" - loop: - - "{{ lookup( 'file', '~/.ssh/id_rsa.pub' ) }}" - - "https://infra.opendoor.fr/id_rsa.pub" \ No newline at end of file + roles: + - tco.setup \ No newline at end of file diff --git a/tco.setup/README.md b/tco.setup/README.md new file mode 100644 index 0000000..7b2e505 --- /dev/null +++ b/tco.setup/README.md @@ -0,0 +1,38 @@ +Role Name +========= + +Configure host for ansible operations + +Requirements +------------ + +none + +Role Variables +-------------- + +ansible_user - default _ansible_ + +Dependencies +------------ + +None + +Example Playbook +---------------- + + + + - hosts: cibles + roles: + - tco.setup + +License +------- + +BSD + +Author Information +------------------ + +Thomas C diff --git a/tco.setup/defaults/main.yml b/tco.setup/defaults/main.yml new file mode 100644 index 0000000..a94fb25 --- /dev/null +++ b/tco.setup/defaults/main.yml @@ -0,0 +1,3 @@ +--- +# defaults file for tco.setup +ansible_user: ansible diff --git a/tco.setup/handlers/main.yml b/tco.setup/handlers/main.yml new file mode 100644 index 0000000..c39e2a3 --- /dev/null +++ b/tco.setup/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for tco.setup diff --git a/tco.setup/meta/main.yml b/tco.setup/meta/main.yml new file mode 100644 index 0000000..c572acc --- /dev/null +++ b/tco.setup/meta/main.yml @@ -0,0 +1,52 @@ +galaxy_info: + author: your name + description: your role 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.1 + + # 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. diff --git a/tco.setup/tasks/main.yml b/tco.setup/tasks/main.yml new file mode 100644 index 0000000..df6eec6 --- /dev/null +++ b/tco.setup/tasks/main.yml @@ -0,0 +1,42 @@ +--- + - name: warn people + lineinfile: + path: /etc/motd + create: yes + line: "Host is managed by ansible, manual interaction not recommended" + state: present + + - name: history + lineinfile: + path: /etc/history + line: "{{ '%Y-%m-%d' | strftime }} - {{ ansible_play_name }}" + state: present + create: true + + - name: generate ssh keys + openssh_keypair: + path: "~/.ssh/id_rsa" + size: 2048 + delegate_to: localhost + become: false + + - name: create account + user: + name: "{{ ansible_user }}" + password: "{{ '123Soleil%' | password_hash('sha512',65534|random(seed=inventory_hostname) | string) }}" + create_home: yes + home: "/home/{{ ansible_user }}" + + - name: configure sudo + template: + src: sudoers_ansible + dest: /etc/sudoers.d/ansible + validate: "/usr/sbin/visudo -cf %s" + + - name: deploy ssh key + authorized_key: + user: "{{ ansible_user }}" + key: "{{ item }}" + loop: + - "{{ lookup( 'file', '~/.ssh/id_rsa.pub' ) }}" + - "https://infra.opendoor.fr/id_rsa.pub" tasks file for tco.setup diff --git a/sudoers_ansible b/tco.setup/templates/sudoers_ansible similarity index 100% rename from sudoers_ansible rename to tco.setup/templates/sudoers_ansible diff --git a/tco.setup/tests/inventory b/tco.setup/tests/inventory new file mode 100644 index 0000000..878877b --- /dev/null +++ b/tco.setup/tests/inventory @@ -0,0 +1,2 @@ +localhost + diff --git a/tco.setup/tests/test.yml b/tco.setup/tests/test.yml new file mode 100644 index 0000000..c002497 --- /dev/null +++ b/tco.setup/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - tco.setup diff --git a/tco.setup/vars/main.yml b/tco.setup/vars/main.yml new file mode 100644 index 0000000..9efe12b --- /dev/null +++ b/tco.setup/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for tco.setup