Can't configure `outgoing_mail` password with special characters
My outgoing_mail
password contained a "
and Ansible failed because it could not understand the yaml formatting anymore. I don't think we can expect people to properly escape passwords with special characters in them (At least I'm already unclear on how I should properly escape it in this case).
Suggested solution: read the password from a file in the secrets folder Alternative solution: base64 encode the password
Failing ansible output:
...
TASK [apps : Create Kubernetes secret with nextcloud settings] ********************************************************************************************************************************************
task path: /datadisk/maarten/projects/openappstack/openappstack/ansible/roles/apps/tasks/nextcloud.yml:2
Tuesday 28 July 2020 14:30:43 +0200 (0:00:00.215) 0:00:13.991 **********
[task 25207] 14:30:43.341716 D ansible_mitogen.affinity: CPU mask for WorkerProcess: 0x000010
included: /datadisk/maarten/projects/openappstack/openappstack/ansible/roles/apps/tasks/flux_secret.yml for oas.maartendewaard.nl
TASK [apps : Create Kubernetes secret with app settings] **************************************************************************************************************************************************
task path: /datadisk/maarten/projects/openappstack/openappstack/ansible/roles/apps/tasks/flux_secret.yml:2
Tuesday 28 July 2020 14:30:43 +0200 (0:00:00.020) 0:00:14.011 **********
[task 25209] 14:30:43.362697 D ansible_mitogen.affinity: CPU mask for WorkerProcess: 0x000020
The full traceback is:
Traceback (most recent call last):
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/executor/task_executor.py", line 146, in run
res = self._execute()
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/executor/task_executor.py", line 587, in _execute
self._task.post_validate(templar=templar)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/playbook/task.py", line 296, in post_validate
super(Task, self).post_validate(templar)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/playbook/base.py", line 431, in post_validate
value = templar.template(getattr(self, name))
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/template/__init__.py", line 622, in template
d[k] = self.template(
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/template/__init__.py", line 622, in template
d[k] = self.template(
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/template/__init__.py", line 622, in template
d[k] = self.template(
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/template/__init__.py", line 576, in template
result = self.do_template(
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/template/__init__.py", line 841, in do_template
res = j2_concat(rf)
File "<template>", line 17, in root
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/ansible/plugins/filter/core.py", line 210, in from_yaml
return yaml.safe_load(data)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/__init__.py", line 162, in safe_load
return load(stream, SafeLoader)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/__init__.py", line 114, in load
return loader.get_single_data()
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/constructor.py", line 49, in get_single_data
node = self.get_single_node()
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 36, in get_single_node
document = self.compose_document()
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 55, in compose_document
node = self.compose_node(None, None)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/composer.py", line 127, in compose_mapping_node
while not self.check_event(MappingEndEvent):
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/parser.py", line 98, in check_event
self.current_event = self.state()
File "/datadisk/maarten/projects/openappstack/openappstack/env/lib/python3.8/site-packages/yaml/parser.py", line 438, in parse_block_mapping_key
raise ParserError("while parsing a block mapping", self.marks[-1],
yaml.parser.ParserError: while parsing a block mapping
in "<unicode string>", line 10, column 9:
host: "example.com"
^
expected <block end>, but found '<scalar>'
in "<unicode string>", line 14, column 25:
password: "test"password"
^
fatal: [oas.maartendewaard.nl]: FAILED! =>
msg: Unexpected failure during module execution.
stdout: ''
PLAY RECAP ************************************************************************************************************************************************************************************************
oas.maartendewaard.nl : ok=38 changed=2 unreachable=0 failed=1 skipped=3 rescued=0 ignored=0