Initial commit
This commit is contained in:
commit
630827e058
208
LICENSE
Normal file
208
LICENSE
Normal file
@ -0,0 +1,208 @@
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
|
||||
AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution
|
||||
as defined by Sections 1 through 9 of this document.
|
||||
|
||||
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that entity.
|
||||
For the purposes of this definition, "control" means (i) the power, direct
|
||||
or indirect, to cause the direction or management of such entity, whether
|
||||
by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
|
||||
of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
|
||||
granted by this License.
|
||||
|
||||
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and configuration
|
||||
files.
|
||||
|
||||
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation
|
||||
or translation of a Source form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that
|
||||
is included in or attached to the work (an example is provided in the Appendix
|
||||
below).
|
||||
|
||||
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form,
|
||||
that is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative
|
||||
Works shall not include works that remain separable from, or merely link (or
|
||||
bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version
|
||||
of the Work and any modifications or additions to that Work or Derivative
|
||||
Works thereof, that is intentionally submitted to Licensor for inclusion in
|
||||
the Work by the copyright owner or by an individual or Legal Entity authorized
|
||||
to submit on behalf of the copyright owner. For the purposes of this definition,
|
||||
"submitted" means any form of electronic, verbal, or written communication
|
||||
sent to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems, and
|
||||
issue tracking systems that are managed by, or on behalf of, the Licensor
|
||||
for the purpose of discussing and improving the Work, but excluding communication
|
||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
||||
owner as "Not a Contribution."
|
||||
|
||||
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently incorporated
|
||||
within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
|
||||
Derivative Works of, publicly display, publicly perform, sublicense, and distribute
|
||||
the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License,
|
||||
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and otherwise
|
||||
transfer the Work, where such license applies only to those patent claims
|
||||
licensable by such Contributor that are necessarily infringed by their Contribution(s)
|
||||
alone or by combination of their Contribution(s) with the Work to which such
|
||||
Contribution(s) was submitted. If You institute patent litigation against
|
||||
any entity (including a cross-claim or counterclaim in a lawsuit) alleging
|
||||
that the Work or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses granted to You
|
||||
under this License for that Work shall terminate as of the date such litigation
|
||||
is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications, and
|
||||
in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or Derivative Works a copy
|
||||
of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices stating that
|
||||
You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works that You distribute,
|
||||
all copyright, patent, trademark, and attribution notices from the Source
|
||||
form of the Work, excluding those notices that do not pertain to any part
|
||||
of the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its distribution,
|
||||
then any Derivative Works that You distribute must include a readable copy
|
||||
of the attribution notices contained within such NOTICE file, excluding those
|
||||
notices that do not pertain to any part of the Derivative Works, in at least
|
||||
one of the following places: within a NOTICE text file distributed as part
|
||||
of the Derivative Works; within the Source form or documentation, if provided
|
||||
along with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and do not modify the
|
||||
License. You may add Your own attribution notices within Derivative Works
|
||||
that You distribute, alongside or as an addendum to the NOTICE text from the
|
||||
Work, provided that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction,
|
||||
or distribution of Your modifications, or for any such Derivative Works as
|
||||
a whole, provided Your use, reproduction, and distribution of the Work otherwise
|
||||
complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any
|
||||
Contribution intentionally submitted for inclusion in the Work by You to the
|
||||
Licensor shall be under the terms and conditions of this License, without
|
||||
any additional terms or conditions. Notwithstanding the above, nothing herein
|
||||
shall supersede or modify the terms of any separate license agreement you
|
||||
may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names,
|
||||
trademarks, service marks, or product names of the Licensor, except as required
|
||||
for reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to
|
||||
in writing, Licensor provides the Work (and each Contributor provides its
|
||||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
|
||||
of using or redistributing the Work and assume any risks associated with Your
|
||||
exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether
|
||||
in tort (including negligence), contract, or otherwise, unless required by
|
||||
applicable law (such as deliberate and grossly negligent acts) or agreed to
|
||||
in writing, shall any Contributor be liable to You for damages, including
|
||||
any direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of the use or inability
|
||||
to use the Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all other commercial
|
||||
damages or losses), even if such Contributor has been advised of the possibility
|
||||
of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work
|
||||
or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||
acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such obligations,
|
||||
You may act only on Your own behalf and on Your sole responsibility, not on
|
||||
behalf of any other Contributor, and only if You agree to indemnify, defend,
|
||||
and hold each Contributor harmless for any liability incurred by, or claims
|
||||
asserted against, such Contributor by reason of your accepting any such warranty
|
||||
or additional liability. END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following boilerplate
|
||||
notice, with the fields enclosed by brackets "[]" replaced with your own identifying
|
||||
information. (Don't include the brackets!) The text should be enclosed in
|
||||
the appropriate comment syntax for the file format. We also recommend that
|
||||
a file or class name and description of purpose be included on the same "printed
|
||||
page" as the copyright notice for easier identification within third-party
|
||||
archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
See the License for the specific language governing permissions and
|
||||
|
||||
limitations under the License.
|
9
README.md
Normal file
9
README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# putinvault
|
||||
|
||||
Ansible module to write in Ansible vault files
|
||||
|
||||
Installation :
|
||||
Si le module doit être utilisé dans un seul projet, copier putinvault.py dans un répertoire library/ dans l'environnement.
|
||||
S'il doit être utilisé dans plusieurs projets, copier le module dans ~/.ansible/plugins/modules/
|
||||
|
||||
|
304
modules/putinvault.py
Normal file
304
modules/putinvault.py
Normal file
@ -0,0 +1,304 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright: (c) 2020, Yo <yo@nosd.in>
|
||||
# Use ansible-vault python library from Tomohiro Nakamura <quickness.net@gmail.com> (Prefer v2)
|
||||
# Vastly inspired by the lineinfile module
|
||||
#
|
||||
# v.0.5 19/05/2020
|
||||
#
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
---
|
||||
module: putinvault
|
||||
short_description: Manage Ansible vault file
|
||||
description:
|
||||
- Manages passwords in Ansible Vault files
|
||||
version_added: "0.1"
|
||||
options:
|
||||
path:
|
||||
description:
|
||||
- Ansible vault File path
|
||||
type: path
|
||||
required: true
|
||||
aliases: [ name, vault ]
|
||||
password:
|
||||
description:
|
||||
- The password to access the vault.
|
||||
- Required for C(state=present).
|
||||
type: str
|
||||
required: true
|
||||
aliases: [ vault_pass ]
|
||||
key:
|
||||
description:
|
||||
- The password name to insert/replace into the vault file.
|
||||
- Required for C(state=present).
|
||||
type: str
|
||||
required: true
|
||||
value:
|
||||
description:
|
||||
- The password value to insert/replace into the vault file.
|
||||
- Required for C(state=present).
|
||||
type: str
|
||||
state:
|
||||
description:
|
||||
- Whether the password should be there or not.
|
||||
type: str
|
||||
choices: [ absent, present ]
|
||||
default: present
|
||||
replace:
|
||||
description:
|
||||
- Used with C(state=present).
|
||||
- If specified and the password already exist in vault file, it will be overwritten with value.
|
||||
- By default it will fail if password exist in vault.
|
||||
type: bool
|
||||
default: no
|
||||
aliases: [ overwrite ]
|
||||
strict:
|
||||
description:
|
||||
- Used with C(state=absent).
|
||||
- If specified to no, remove password whatever value is.
|
||||
- By default it will remove password only when key and value match specified.
|
||||
type: bool
|
||||
default: yes
|
||||
create:
|
||||
description:
|
||||
- Used with C(state=present).
|
||||
- If specified, the vault file will be created if it does not already exist.
|
||||
- By default it will fail if the vault file is missing.
|
||||
type: bool
|
||||
default: no
|
||||
backup:
|
||||
description:
|
||||
- Create a backup file including the timestamp information so you can
|
||||
get the original file back if you somehow clobbered it incorrectly.
|
||||
type: bool
|
||||
default: no
|
||||
author:
|
||||
- Johan Vaucourt (johan.vaucourt@gmail.com)
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: Add a new password to a vault if the file does not exist
|
||||
putinvault:
|
||||
path: /tmp/vault.yml
|
||||
key: 'vaulted_ldap_admin_password'
|
||||
value: 'admin123'
|
||||
create: yes
|
||||
|
||||
- name: Add a password to an existing vault. If the file does not exist or key already exists, it will trig an error
|
||||
putinvault:
|
||||
path: vault.yml
|
||||
password: 'vault123'
|
||||
key: 'vaulted_ldap_reader_password'
|
||||
value: 'read123'
|
||||
|
||||
- name: Overwrite LDAP admin password
|
||||
putinvault:
|
||||
path: vault.yml
|
||||
key: 'vaulted_ldap_admin_password'
|
||||
value: 'newadmin123'
|
||||
replace: yes
|
||||
'''
|
||||
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
from ansible_vault import Vault
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils._text import to_bytes, to_native
|
||||
|
||||
def check_file_attrs(module, changed, message, diff):
|
||||
|
||||
file_args = module.load_file_common_arguments(module.params)
|
||||
if module.set_fs_attributes_if_different(file_args, False, diff=diff):
|
||||
|
||||
if changed:
|
||||
message += " and "
|
||||
changed = True
|
||||
message += "ownership, perms or SE linux context changed"
|
||||
|
||||
return message, changed
|
||||
|
||||
|
||||
def present(module, dest, password, key, value, replace, create, backup):
|
||||
|
||||
diff = {'before': '',
|
||||
'after': '',
|
||||
'before_header': '%s (content)' % dest,
|
||||
'after_header': '%s (content)' % dest}
|
||||
|
||||
b_dest = to_bytes(dest, errors='surrogate_or_strict')
|
||||
if not os.path.exists(b_dest):
|
||||
if not create:
|
||||
module.fail_json(rc=257, msg='Destination %s does not exist !' % dest)
|
||||
b_destpath = os.path.dirname(b_dest)
|
||||
if b_destpath and not os.path.exists(b_destpath) and not module.check_mode:
|
||||
try:
|
||||
os.makedirs(b_destpath)
|
||||
except Exception as e:
|
||||
module.fail_json(msg='Error creating %s Error code: %s Error description: %s' % (b_destpath, e[0], e[1]))
|
||||
|
||||
vault = Vault(password)
|
||||
v_data = {}
|
||||
else:
|
||||
# TODO : Manage erroneous password
|
||||
vault = Vault(password)
|
||||
with open(b_dest, 'rb') as f:
|
||||
v_data = vault.load(f.read())
|
||||
|
||||
if module._diff:
|
||||
diff['before'] = to_native(v_data)
|
||||
|
||||
msg =''
|
||||
changed = False
|
||||
|
||||
if key in v_data:
|
||||
if replace == False:
|
||||
module.warn(
|
||||
"The password already exist in vault. If you want to replace it disregarding it current value, set replace to True.")
|
||||
pass
|
||||
else:
|
||||
v_data[key] = value
|
||||
msg = 'line replaced'
|
||||
changed = True
|
||||
else:
|
||||
v_data[key] = value
|
||||
msg = 'line added'
|
||||
changed = True
|
||||
|
||||
if module._diff:
|
||||
diff['after'] = to_native(v_data)
|
||||
|
||||
backupdest = ""
|
||||
if changed and not module.check_mode:
|
||||
if backup and os.path.exists(b_dest):
|
||||
backupdest = module.backup_local(dest)
|
||||
vault.dump(v_data, open(b_dest, 'w'))
|
||||
|
||||
if module.check_mode and not os.path.exists(b_dest):
|
||||
module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=diff)
|
||||
|
||||
attr_diff = {}
|
||||
msg, changed = check_file_attrs(module, changed, msg, attr_diff)
|
||||
|
||||
attr_diff['before_header'] = '%s (file attributes)' % dest
|
||||
attr_diff['after_header'] = '%s (file attributes)' % dest
|
||||
|
||||
difflist = [diff, attr_diff]
|
||||
module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist)
|
||||
|
||||
|
||||
def absent(module, dest, password, key, value, strict, backup):
|
||||
|
||||
b_dest = to_bytes(dest, errors='surrogate_or_strict')
|
||||
if not os.path.exists(b_dest):
|
||||
module.exit_json(changed=False, msg="file not present")
|
||||
|
||||
msg = ''
|
||||
changed = False
|
||||
|
||||
diff = {'before': '',
|
||||
'after': '',
|
||||
'before_header': '%s (content)' % dest,
|
||||
'after_header': '%s (content)' % dest}
|
||||
|
||||
# TODO : Manage erroneous password
|
||||
vault = Vault(password)
|
||||
with open(b_dest, 'rb') as f:
|
||||
v_data = vault.load(f.read())
|
||||
|
||||
if module._diff:
|
||||
diff['before'] = to_native(v_data)
|
||||
|
||||
if key in v_data:
|
||||
if strict == True:
|
||||
if v_data[key] == value:
|
||||
del v_data[key]
|
||||
changed = True
|
||||
else:
|
||||
module.fail_json(msg='value should match what is in vault with strict=true')
|
||||
else:
|
||||
del v_data[key]
|
||||
changed = True
|
||||
|
||||
if module._diff:
|
||||
diff['after'] = to_native(v_data)
|
||||
|
||||
backupdest = ""
|
||||
if changed and not module.check_mode:
|
||||
if backup:
|
||||
backupdest = module.backup_local(dest)
|
||||
vault.dump(v_data, open(b_dest, 'w'))
|
||||
|
||||
if changed:
|
||||
msg = "Password removed"
|
||||
|
||||
attr_diff = {}
|
||||
msg, changed = check_file_attrs(module, changed, msg, attr_diff)
|
||||
|
||||
attr_diff['before_header'] = '%s (file attributes)' % dest
|
||||
attr_diff['after_header'] = '%s (file attributes)' % dest
|
||||
|
||||
difflist = [diff, attr_diff]
|
||||
|
||||
module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist)
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec=dict(
|
||||
path=dict(type='path', required=True, aliases=['dest', 'destfile', 'name']),
|
||||
password=dict(type='str', required=True, aliases=['vault_pass']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present']),
|
||||
key=dict(type='str', required=True),
|
||||
value=dict(type='str'),
|
||||
replace=dict(type='bool', aliases=['overwrite'], default=False),
|
||||
strict=dict(type='bool', default=True),
|
||||
create=dict(type='bool', default=False),
|
||||
backup=dict(type='bool', default=False),
|
||||
),
|
||||
add_file_common_args=True,
|
||||
supports_check_mode=True,
|
||||
)
|
||||
|
||||
params = module.params
|
||||
path = params['path']
|
||||
password = params['password']
|
||||
state = params['state']
|
||||
key = params['key']
|
||||
value = params['value']
|
||||
replace = params['replace']
|
||||
strict = params['strict']
|
||||
create = params['create']
|
||||
backup = params['backup']
|
||||
|
||||
b_path = to_bytes(path, errors='surrogate_or_strict')
|
||||
if os.path.isdir(b_path):
|
||||
module.fail_json(rc=256, msg='Path %s is a directory !' % path)
|
||||
|
||||
if params['state'] == 'present':
|
||||
if key is None or value is None:
|
||||
module.fail_json(msg='key and value are required with state=present')
|
||||
|
||||
present(module, path, password, key, value, replace, create, backup)
|
||||
else:
|
||||
if value is None and strict is True:
|
||||
module.fail_json(msg='value is required with strict=True')
|
||||
|
||||
absent(module, path, password, key, value, strict, backup)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
96
test/99_test_putinvault.yml
Normal file
96
test/99_test_putinvault.yml
Normal file
@ -0,0 +1,96 @@
|
||||
---
|
||||
# Test du module putinvault, a valider avec fiche de test excel
|
||||
# Utiliser les tags pour tester les cas
|
||||
# Un vault 'temp/vault_test.yml' doit exister au prealable
|
||||
|
||||
- name: Test module putinvault
|
||||
hosts: localhost
|
||||
gather_facts: no
|
||||
|
||||
tasks:
|
||||
|
||||
- name: "A1 : Ajout d'un nouveau mdp dans un vault existant : mdp ajoute et 'changed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: jinitialise_mon_mot_de_passe_A1
|
||||
tags: A1
|
||||
|
||||
- name: "A2 : Modif d'un mdp existant sans specifier replace : WARNING et pas de remplacement"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: je_change_mon_mot_de_passe_A2
|
||||
tags: A2
|
||||
|
||||
- name: "A3 : Modif d'un mdp existant avec replace=true : mdp remplace et 'changed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: je_change_mon_mot_de_passe_A3
|
||||
replace: True
|
||||
tags: A3
|
||||
|
||||
- name: "A4 : Ajout d'un nouveau mdp dans un vault inexistant sans create : vault pas cree et 'failed'"
|
||||
putinvault:
|
||||
path: temp/nouveau_vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: jinitialise_mon_mot_de_passe_A4
|
||||
tags: A4
|
||||
|
||||
- name: "A5 : Ajout d'un nouveau mdp dans un vault inexistant avec create=true : vault cree et 'changed'"
|
||||
putinvault:
|
||||
path: temp/nouveau_vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: jinitialise_mon_mot_de_passe_A5
|
||||
create: True
|
||||
tags: A5
|
||||
|
||||
- name: "S1 : Suppression d'un mdp sans value : mdp non supprime et 'failed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
state: absent
|
||||
tags: S1
|
||||
|
||||
- name: "S2 : Suppression d'un mdp sans value avec strict=false : mdp supprime et 'changed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
state: absent
|
||||
strict: False
|
||||
tags: S2
|
||||
|
||||
- name: "S3 : Ajout d'un nouveau mdp dans un vault existant : mdp ajoute et 'changed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: jinitialise_mon_mot_de_passe_S3
|
||||
tags: S3
|
||||
|
||||
- name: "S4 : Suppression d'un mdp avec value erronnee : mdp non supprime et 'failed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: ceci_nest_pas_le_bon_mot_de_passe_S4
|
||||
state: absent
|
||||
tags: S4
|
||||
|
||||
- name: "S5 : Suppression d'un mdp avec value correctement renseignee : mdp supprime et 'changed'"
|
||||
putinvault:
|
||||
path: temp/vault_test.yml
|
||||
password: 'azerty'
|
||||
key: vaulted_nouveau_mot_de_passe
|
||||
value: jinitialise_mon_mot_de_passe_S3
|
||||
state: absent
|
||||
tags: S5
|
||||
|
Loading…
Reference in New Issue
Block a user