mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-07-25 00:44:42 +00:00
ipavault: Allow execution of plugin in client host.
Update vault README file and add tests for executing plugin with
`ipaapi_context` set to `client`.
A new test playbook can be found at:
tests/vault/test_vault_client_context.yml
As `ipavault` only works in client context, an error is raised if it
is explicitly executed in a server context.
This commit is contained in:
@@ -217,6 +217,7 @@ Variable | Description | Required
|
|||||||
-------- | ----------- | --------
|
-------- | ----------- | --------
|
||||||
`ipaadmin_principal` | The admin principal is a string and defaults to `admin` | no
|
`ipaadmin_principal` | The admin principal is a string and defaults to `admin` | no
|
||||||
`ipaadmin_password` | The admin password is a string and is required if there is no admin ticket available on the node | no
|
`ipaadmin_password` | The admin password is a string and is required if there is no admin ticket available on the node | no
|
||||||
|
`ipaapi_context` | The context in which the module will execute. Currently only `client` is supported by this module, and use of `server` will raise a failure. | no
|
||||||
`name` \| `cn` | The list of vault name strings. | yes
|
`name` \| `cn` | The list of vault name strings. | yes
|
||||||
`description` | The vault description string. | no
|
`description` | The vault description string. | no
|
||||||
`password` \| `vault_password` \| `ipavaultpassword` \| `old_password`| Vault password. | no
|
`password` \| `vault_password` \| `ipavaultpassword` \| `old_password`| Vault password. | no
|
||||||
|
|||||||
@@ -443,6 +443,11 @@ def check_parameters( # pylint: disable=unused-argument
|
|||||||
password, password_file, public_key, public_key_file, private_key,
|
password, password_file, public_key, public_key_file, private_key,
|
||||||
private_key_file, vault_data, datafile_in, datafile_out, new_password,
|
private_key_file, vault_data, datafile_in, datafile_out, new_password,
|
||||||
new_password_file):
|
new_password_file):
|
||||||
|
if module.params_get("ipaapi_context") == "server":
|
||||||
|
module.fail_json(
|
||||||
|
msg="Context 'server' for ipavault not yet supported."
|
||||||
|
)
|
||||||
|
|
||||||
invalid = []
|
invalid = []
|
||||||
if state == "present":
|
if state == "present":
|
||||||
invalid = ['datafile_out']
|
invalid = ['datafile_out']
|
||||||
@@ -718,7 +723,7 @@ def main():
|
|||||||
changed = False
|
changed = False
|
||||||
exit_args = {}
|
exit_args = {}
|
||||||
|
|
||||||
with ansible_module.ipa_connect(context='ansible-freeipa') as ccache_name:
|
with ansible_module.ipa_connect(context="client") as ccache_name:
|
||||||
if ccache_name is not None:
|
if ccache_name is not None:
|
||||||
os.environ["KRB5CCNAME"] = ccache_name
|
os.environ["KRB5CCNAME"] = ccache_name
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
- name: Ensure test users do not exist.
|
- name: Ensure test users do not exist.
|
||||||
ipauser:
|
ipauser:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
name:
|
name:
|
||||||
- user01
|
- user01
|
||||||
- user02
|
- user02
|
||||||
@@ -35,6 +36,7 @@
|
|||||||
- name: Ensure test groups do not exist.
|
- name: Ensure test groups do not exist.
|
||||||
ipagroup:
|
ipagroup:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
name: vaultgroup
|
name: vaultgroup
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
|
|||||||
@@ -35,11 +35,13 @@
|
|||||||
- name: Ensure vaultgroup exists.
|
- name: Ensure vaultgroup exists.
|
||||||
ipagroup:
|
ipagroup:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
name: vaultgroup
|
name: vaultgroup
|
||||||
|
|
||||||
- name: Ensure testing users exist.
|
- name: Ensure testing users exist.
|
||||||
ipauser:
|
ipauser:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
users:
|
users:
|
||||||
- name: user01
|
- name: user01
|
||||||
first: First
|
first: First
|
||||||
|
|||||||
25
tests/vault/test_vault_client_context.yml
Normal file
25
tests/vault/test_vault_client_context.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- name: Test vault
|
||||||
|
hosts: ipaserver
|
||||||
|
become: no
|
||||||
|
# Need to gather facts for ansible_env.
|
||||||
|
gather_facts: yes
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Setup testing environment.
|
||||||
|
import_tasks: env_setup.yml
|
||||||
|
|
||||||
|
# vault requires 'ipaapi_context: client', and uses this
|
||||||
|
# context by defoult, so we test only for the case where
|
||||||
|
# 'ipaapi_context: server' is explicitly set.
|
||||||
|
- name: Execute with server context.
|
||||||
|
ipavault:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: server
|
||||||
|
name: ThisShouldNotWork
|
||||||
|
vault_type: standard
|
||||||
|
register: result
|
||||||
|
failed_when: not (result.failed and result.msg is regex("Context 'server' for ipavault not yet supported."))
|
||||||
|
|
||||||
|
- name: Cleanup testing environment.
|
||||||
|
import_tasks: env_cleanup.yml
|
||||||
Reference in New Issue
Block a user