From d44e023cf7bb768e036619ea60783bb65015d08b 2020-10-01 22:17:16 From: Branko Majic Date: 2020-10-01 22:17:16 Subject: [PATCH] MAR-155: Make the preseed_directory parameter in the preseed role mandatory: - Updated the preseed role. - Removed default value for the parameter. - Updated tests. - Updated role reference documentation. - Updated release notes. --- diff --git a/docs/releasenotes.rst b/docs/releasenotes.rst index 3a3e30dcf3c03073846ed9553147d39ebce6e6d5..a41cb243943aea6b0f7376a72518e8e17078c75e 100644 --- a/docs/releasenotes.rst +++ b/docs/releasenotes.rst @@ -47,6 +47,10 @@ Breaking changes: dropped. This could introduce incompatibility with older clients trying to connect to the IMAP/SMTP server. +* ``preseed`` role + + * Parameter ``preseed_directory`` is now mandatory. + * ``web_server`` role * Use 2048-bit Diffie-Hellman parameters for relevant TLS diff --git a/docs/rolereference.rst b/docs/rolereference.rst index 126249ff367afc8180d4e40340b9c0227ee474a6..e3ab8e0fdbcb0e79bc50bd237ac76afe27f7afce 100644 --- a/docs/rolereference.rst +++ b/docs/rolereference.rst @@ -49,7 +49,7 @@ Parameters **preseed_country** (string, optional, ``SE``) Country. -**preseed_directory** (string, optional, ``../preseed_files/``) +**preseed_directory** (string, mandatory) Destination directory where the preseed files should be stored. .. warning:: diff --git a/roles/preseed/defaults/main.yml b/roles/preseed/defaults/main.yml index c48e6145ad407ac1024aa7a657ab17c4dd09c288..62fa47b01563a8066b15e518c0d829f8a64165e8 100644 --- a/roles/preseed/defaults/main.yml +++ b/roles/preseed/defaults/main.yml @@ -2,7 +2,6 @@ ansible_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}" preseed_country: SE -preseed_directory: "{{ inventory_dir }}/preseed_files" preseed_keymap: us preseed_language: en preseed_locale: en_US.UTF-8 diff --git a/roles/preseed/molecule/default/group_vars/parameters-mandatory.yml b/roles/preseed/molecule/default/group_vars/parameters-mandatory.yml index ed97d539c095cf1413af30cc23dea272095b97dd..9cf8309dfb12d2cadfc91b6d2d128b047ef2d6d1 100644 --- a/roles/preseed/molecule/default/group_vars/parameters-mandatory.yml +++ b/roles/preseed/molecule/default/group_vars/parameters-mandatory.yml @@ -1 +1,3 @@ --- + +preseed_directory: "/tmp/preseed_files/" diff --git a/roles/preseed/molecule/default/group_vars/parameters-optional-with-overrides.yml b/roles/preseed/molecule/default/group_vars/parameters-optional-with-overrides.yml index 48cec1171ee5cc068e95a7c7b62337c868cf69bc..aff362bddc440a1cfcf813c9296bb29b923a5556 100644 --- a/roles/preseed/molecule/default/group_vars/parameters-optional-with-overrides.yml +++ b/roles/preseed/molecule/default/group_vars/parameters-optional-with-overrides.yml @@ -1,7 +1,7 @@ --- -preseed_directory: /tmp/custom_preseed_files_location ansible_key: CUSTOMKEY +preseed_directory: "/tmp/preseed_files/" preseed_server_overrides: parameters-optional-with-overrides-stretch64: country: RS diff --git a/roles/preseed/molecule/default/group_vars/parameters-optional.yml b/roles/preseed/molecule/default/group_vars/parameters-optional.yml index 476d5be7d0d83b463fee1250e9978b8599ed9957..ea2bb6a345f0140be873439971cbfeb07f9f8c41 100644 --- a/roles/preseed/molecule/default/group_vars/parameters-optional.yml +++ b/roles/preseed/molecule/default/group_vars/parameters-optional.yml @@ -2,7 +2,7 @@ ansible_key: CUSTOMKEY preseed_country: RS -preseed_directory: /tmp/custom_preseed_files_location +preseed_directory: "/tmp/preseed_files/" preseed_dns: 1.1.1.1 preseed_domain: example.com preseed_gateway: 2.2.2.2 diff --git a/roles/preseed/molecule/default/prepare.yml b/roles/preseed/molecule/default/prepare.yml index 63c17ebc5020146c4e81eb768f2260edeed18f3b..058ffa32bc51b8303ffe67c7dad6ff72ec09d41e 100644 --- a/roles/preseed/molecule/default/prepare.yml +++ b/roles/preseed/molecule/default/prepare.yml @@ -8,17 +8,3 @@ raw: test -e /usr/bin/python3 || (apt -y update && apt install -y python3-minimal) become: true changed_when: false - -- hosts: parameters-mandatory - become: true - tasks: - - # @TODO: This is a hack because inventory_dir used for - # preseed_directory comes from _host_. - - name: Set-up inventory directory matching location where molecule is running itself - file: - path: "{{ inventory_dir }}" - state: directory - owner: vagrant - group: vagrant - mode: 0700 diff --git a/roles/preseed/molecule/default/tests/test_parameters_mandatory.py b/roles/preseed/molecule/default/tests/test_parameters_mandatory.py index 5330e6e06233a3fd8f2f543defced66dbbce85b3..e60c34cdb9ae17cbf6eea5087b053f2d94ddaeaf 100644 --- a/roles/preseed/molecule/default/tests/test_parameters_mandatory.py +++ b/roles/preseed/molecule/default/tests/test_parameters_mandatory.py @@ -1,5 +1,4 @@ import os -import pwd import testinfra.utils.ansible_runner @@ -15,12 +14,7 @@ def test_preseed_directory(host): with host.sudo(): - # Preseed directory created at same level as inventory. - # @TODO: At this point, this path is getting uglier and - # uglier. It might be actually better to make the - # preseed_directory a mandatory parameter instead. Same - # goes for the ansible_key role parameter as well. - preseed_directory_path = "%s/.cache/molecule/preseed/default/inventory/preseed_files" % pwd.getpwuid(os.getuid()).pw_dir + preseed_directory_path = "/tmp/preseed_files" preseed_directory = host.file(preseed_directory_path) assert preseed_directory.is_directory @@ -34,8 +28,7 @@ def test_preseed_configuration_files(host): with host.sudo(): - # Preseed directory created at same level as inventory. - preseed_directory_path = "%s/.cache/molecule/preseed/default/inventory/preseed_files" % pwd.getpwuid(os.getuid()).pw_dir + preseed_directory_path = "/tmp/preseed_files" # Verify that preseed configuration files are created for all hosts. for testinfra_host in testinfra_hosts: @@ -54,7 +47,7 @@ def test_preseed_configuration_file_content(host): hostname = host.run('hostname').stdout.strip() with host.sudo(): - preseed_directory_path = "%s/.cache/molecule/preseed/default/inventory/preseed_files" % pwd.getpwuid(os.getuid()).pw_dir + preseed_directory_path = "/tmp/preseed_files" preseed_file = host.file(os.path.join(preseed_directory_path, "%s.cfg" % hostname)) preseed_file_content = preseed_file.content_string ssh_public_key = open(os.path.join(os.path.expanduser("~"), ".ssh", "id_rsa.pub")).read().strip() diff --git a/roles/preseed/molecule/default/tests/test_parameters_optional.py b/roles/preseed/molecule/default/tests/test_parameters_optional.py index 0506f6387f6728b0ea5f8375217f1b1719969ce6..54d185f6cda324da765bfa76c60ca8c09f2357df 100644 --- a/roles/preseed/molecule/default/tests/test_parameters_optional.py +++ b/roles/preseed/molecule/default/tests/test_parameters_optional.py @@ -7,7 +7,7 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-optional') -PRESEED_DIRECTORY = '/tmp/custom_preseed_files_location' +PRESEED_DIRECTORY = '/tmp/preseed_files' def test_preseed_directory(host): diff --git a/roles/preseed/molecule/default/tests/test_parameters_optional_with_overrides.py b/roles/preseed/molecule/default/tests/test_parameters_optional_with_overrides.py index c8ceb22951ac474063ee726892c395c883b2ccdf..a248b5ba18ad9a9dee7ae63409c7e5b052fa0ad3 100644 --- a/roles/preseed/molecule/default/tests/test_parameters_optional_with_overrides.py +++ b/roles/preseed/molecule/default/tests/test_parameters_optional_with_overrides.py @@ -7,7 +7,7 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-optional-with-overrides') -PRESEED_DIRECTORY = '/tmp/custom_preseed_files_location' +PRESEED_DIRECTORY = '/tmp/preseed_files' def test_preseed_directory(host):