#amazon-ec2 #ansible #aws-ssm
Вопрос:
Кто-нибудь может получить ansible: ansible_connection: aws_ssm
работает?
AFAICT это должно быть заменой ssh: https://docs.ansible.com/ansible/latest/collections/community/aws/aws_ssm_connection.html
Мой учебник работает с ssh, но не с ssm:
---
- name: Test command
gather_facts: false
hosts: all
vars:
ansible_connection: ssh
# ansible_connection: aws_ssm <--- this one no worky
ansible_aws_ssm_region: eu-central-1
tasks:
- name: test
command:
cmd: ls -l
Запуск с использованием:
ansible-playbook -i inventory_aws_ec2.yml --limit nghc-sbox2-bastion test.yml -vvvv
Я что-то упускаю в конфигурации SSM ansible. Ошибка: (из /var/log/amazon/ssm/amazon-ssm-agent.log)
2021-08-10 23:48:51 ИНФОРМАЦИЯ [ssm-сессионный работник] [bruce.edge@xxx.com-04d88576fd5ec3ae7] [База данных] [Имя подключаемого модуля=стандартный поток] Инициирование рукопожатия 2021-08-10 23:48:54 ОШИБКА [ssm-сессионный работник] [bruce.edge@xxx.com-04d88576fd5ec3ae7] [DataBackend] [Имя подключаемого модуля=Standard_Stream] Ошибка при извлечении ключа данных: Не удалось извлечь ключ данных, Ошибка при расшифровке ключа данных AccessDeniedException: Зашифрованный текст ссылается на главный ключ клиента, который не существует, не существует в этом регионе или вам не разрешен доступ.
Вывод ansible больше не полезен:
<i-0c208bc6d31fa6bf1> EXEC stdout line:
<i-0c208bc6d31fa6bf1> EXEC stdout line: Starting session with SessionId: bruce.edge@xxx.com-0f7b6c9323afa74bc
<i-0c208bc6d31fa6bf1> EXEC remaining: 60
<i-0c208bc6d31fa6bf1> EXEC remaining: 59
<i-0c208bc6d31fa6bf1> EXEC stdout line:
<i-0c208bc6d31fa6bf1> EXEC stdout line:
<i-0c208bc6d31fa6bf1> EXEC stdout line: SessionId: bruce.edge@xxx.com-0f7b6c9323afa74bc :
<i-0c208bc6d31fa6bf1> EXEC stdout line: ----------ERROR-------
<i-0c208bc6d31fa6bf1> EXEC stdout line: Encountered error while initiating handshake. Fetching data key failed: Unable to retrieve data key, Error when decrypting data key AccessDeniedException: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.
<i-0c208bc6d31fa6bf1> EXEC stdout line: status code: 400, request id: 53549e47-03a1-4a1f-8f30-8f0c27482cc5
<i-0c208bc6d31fa6bf1> EXEC stdout line:
<i-0c208bc6d31fa6bf1> EXEC stdout line:
<i-0c208bc6d31fa6bf1> ssm_retry: attempt: 0, caught exception(local variable 'returncode' referenced before assignment) from cmd (echo ~...), pausing for 0 seconds
<i-0c208bc6d31fa6bf1> CLOSING SSM CONNECTION TO: i-0c208bc6d31fa6bf1
<i-0c208bc6d31fa6bf1> TERMINATE SSM SESSION: bruce.edge@xxx.com-0f7b6c9323afa74bc
<i-0c208bc6d31fa6bf1> ESTABLISH SSM CONNECTION TO: i-0c208bc6d31fa6bf1
<i-0c208bc6d31fa6bf1> SSM COMMAND: ['/usr/local/bin/session-manager-plugin', '{"SessionId": "bruce.edge@xxx.com-0d95f1030d63fa155", "TokenValue": "......Gsoj8bEu3d9s=", "StreamUrl": "wss://ssmmessages.eu-central-1.amazonaws.com/v1/data-channel/bruce.edge@xxx.com-0d95f1030d63fa155?role=publish_subscribe", "ResponseMetadata": {"RequestId": "8d20fbe9-d3d2-44e7-a832-a1d4d86861a9", "HTTPStatusCode": 200, "HTTPHeaders": {"server": "Server", "date": "Wed, 11 Aug 2021 00:43:13 GMT", "content-type": "application/x-amz-json-1.1", "content-length": "651", "connection": "keep-alive", "x-amzn-requestid": "8d20fbe9-d3d2-44e7-a832-a1d4d86861a9"}, "RetryAttempts": 0}}', 'eu-central-1', 'StartSession', '', '{"Target": "i-0c208bc6d31fa6bf1"}', 'https://ssm.eu-central-1.amazonaws.com']
<i-0c208bc6d31fa6bf1> SSM CONNECTION ID: bruce.edge@xxx.com-0d95f1030d63fa155
<i-0c208bc6d31fa6bf1> EXEC echo ~
<i-0c208bc6d31fa6bf1> _wrap_command: 'echo QTPJHrIizAXitS...
Моя SSM правильно настроена для других функций.
Я могу использовать ssh через ssm и запускать удаленные игровые книги через ssm, просто не используя:
ansible_connection: aws_ssm
механизм подключения.
Комментарии:
1. Возможно github.com/ansible-collections/community.aws/issues/113
Ответ №1:
Отключение шифрования KMS в конфигурации SSM устраняет эту проблему:
(Консоль AWS -> системный менеджер ->> менеджер сеансов ->>> вкладка «Настройки»)
- Добавление ре: км может быть оправдано и отсутствие соответствующих сообщений об ошибках, просто супер-сообщают см. На странице AWS Docs на этот: https://aws.amazon.com/premiumsupport/knowledge-center/ssm-session-manager-failures/ то есть: должны работать с KMS включен, просто требует ключ доступа для пользователей anisble и цели(ей), что очевидно, когда вы думаете об этом. Просто супер-неочевидно из-за ошибки. Не проверяли
И… нужно перенастроить dash, чтобы он НЕ был по умолчанию:
sudo dpkg-reconfigure dash
или для вентиляторов ansible:
# See "/var/cache/debconf/config.dat" for name of config item after changing manually
- name: aws-ssm ansible plugin fails if dash is the default shell
ansible.builtin.debconf:
name: dash/sh
question: dash/sh
value: false
vtype: boolean