You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitogen/tests/ansible/integration/connection_delegation/stack_construction.yml

418 lines
14 KiB
YAML

# https://github.com/dw/mitogen/issues/251
# ansible_mitogen.connection internally reinterprets Ansible state into a
# 'connection stack' -- this is just a list of dictionaries specifying a
# sequence of proxied Router connection methods and their kwargs used to
# establish the connection. That list is passed to ContextService, which loops
# over the stack specifying via=(null or previous entry) for each connection
# method.
# mitogen_get_stack is a magic action that returns the stack, so we can test
# all kinds of scenarios without actually needing a real environmnt.
# Updating this file? Install 'pprintpp' and hack lib/callbacks/nice_stdout.py
# to use it instead of the built-in function, then simply s/'/'/ to get the
# cutpasteable formatted dicts below. WARNING: remove the trailing comma from
# the result list element, it seems to cause assert to silently succeed!
- name: integration/connection_delegation/stack_construction.yml
hosts: cd-normal
tasks:
- include_tasks: ../_mitogen_only.yml
# used later for local_action test.
- local_action: custom_python_detect_environment
register: local_env
tags:
- stack_construction
- hosts: cd-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- mitogen_get_stack:
register: out
- assert_equal:
left: out.result
right: [
{
"kwargs": {
"connect_timeout": 30,
"doas_path": null,
"password": null,
"python_path": ["python3000"],
'remote_name': null,
"username": "normal-user",
},
"method": "doas",
}
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- include_tasks: ../_expected_ssh_port.yml
- mitogen_get_stack:
delegate_to: cd-alias
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'alias-host',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': '{{ expected_ssh_port }}',
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'alias-user',
},
'method': 'ssh',
},
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-alias
tasks:
- include_tasks: ../_mitogen_only.yml
- include_tasks: ../_expected_ssh_port.yml
- mitogen_get_stack:
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'alias-host',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': '{{ expected_ssh_port }}',
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'alias-user',
},
'method': 'ssh',
},
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-normal-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- include_tasks: ../_expected_ssh_port.yml
- mitogen_get_stack:
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'connect_timeout': 30,
'doas_path': null,
'password': null,
"python_path": ["python3000"],
'remote_name': null,
'username': 'normal-user',
},
'method': 'doas',
},
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'cd-normal-normal',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': '{{ expected_ssh_port }}',
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'ansible-cfg-remote-user',
},
'method': 'ssh',
},
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-normal-alias
tasks:
- include_tasks: ../_mitogen_only.yml
- include_tasks: ../_expected_ssh_port.yml
- mitogen_get_stack:
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'alias-host',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': null,
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'alias-user',
},
'method': 'ssh',
},
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'cd-normal-alias',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': '{{ expected_ssh_port }}',
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'ansible-cfg-remote-user',
},
'method': 'ssh',
},
]
tags:
- stack_construction
- hosts: cd-newuser-normal-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- include_tasks: ../_expected_ssh_port.yml
- mitogen_get_stack:
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'connect_timeout': 30,
'doas_path': null,
'password': null,
"python_path": ["python3000"],
'remote_name': null,
'username': 'normal-user',
},
'method': 'doas',
},
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'cd-newuser-normal-normal',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': '{{ expected_ssh_port }}',
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'newuser-normal-normal-user',
},
'method': 'ssh',
},
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-newuser-normal-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- include_tasks: ../_expected_ssh_port.yml
- mitogen_get_stack:
delegate_to: cd-alias
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'check_host_keys': 'ignore',
'compression': True,
'connect_timeout': 30,
'hostname': 'alias-host',
'identities_only': False,
'identity_file': null,
'keepalive_interval': 30,
'keepalive_count': 10,
'password': null,
'port': '{{ expected_ssh_port }}',
"python_path": ["python3000"],
'remote_name': null,
'ssh_args': [
-o, ControlMaster=auto,
-o, ControlPersist=60s,
-o, ForwardAgent=yes,
-o, HostKeyAlgorithms=+ssh-rsa,
-o, PubkeyAcceptedKeyTypes=+ssh-rsa,
-o, UserKnownHostsFile=/dev/null,
],
'ssh_debug_level': null,
'ssh_path': 'ssh',
'username': 'alias-user',
},
'method': 'ssh',
},
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-newuser-normal-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- local_action: mitogen_get_stack
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
"python_path": ["{{ansible_playbook_python}}"],
},
'method': 'local',
},
]
tags:
- mitogen_only
- stack_construction
- hosts: cd-newuser-doas-normal
tasks:
- include_tasks: ../_mitogen_only.yml
- mitogen_get_stack:
register: out
- assert_equal:
left: out.result
right: [
{
'kwargs': {
'connect_timeout': 30,
'doas_path': null,
'password': null,
'python_path': ["python3000"],
'remote_name': null,
'username': 'normal-user',
},
'method': 'doas',
},
{
'kwargs': {
'connect_timeout': 30,
'doas_path': null,
'password': null,
'python_path': ["python3000"],
'remote_name': null,
'username': 'newuser-doas-normal-user',
},
'method': 'doas',
},
]
tags:
- mitogen_only
- stack_construction