Подключение community.aws.aws_ssm – подключение к экземплярам EC2 через AWS Systems Manager
Примечание
Этот плагин подключения входит в коллекцию community.aws (версия 8.0.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить её установку, выполните ansible-galaxy collection list.
Для её установки используйте: ansible-galaxy collection install community.aws. Для использования этого плагина подключения необходимы дополнительные требования. Подробности см. в разделе Требования.
Для использования в playbook укажите: community.aws.aws_ssm.
Обзор
- Этот плагин подключения позволяет Ansible выполнять задачи на экземпляре EC2 через сеанс AWS SSM.
Требования
Ниже перечислены требования к локальному узлу управления, на котором выполняется это подключение.
- Удаленный экземпляр EC2 должен запускать агент AWS Systems Manager (SSM Agent). https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html
- Узел управления должен иметь установленный плагин AWS сеанса менеджера. https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
- Удаленный экземпляр EC2 Linux должен иметь установленный curl.
- У удаленного экземпляра EC2 Linux и узла управления должна быть сетевая доступность к S3.
- Удаленный экземпляр не требует учетных данных IAM для S3. Этот модуль сгенерирует предварительно подписанную URL-адрес для S3 с узла управления и затем передаст этот URL-адрес целевому экземпляру через SSM, сказав целевому экземпляру загружать/загружать из S3 с помощью
curl. - Узел управления требует разрешений IAM для загрузки, загрузки и удаления файлов из указанного ведра S3. Это включает `s3:GetObject`, `s3:PutObject`, `s3:ListBucket`, `s3:DeleteObject` и `s3:GetBucketLocation`.
Параметры
Параметр | Комментарии |
|---|---|
access_key_id строка добавлено в community.aws 1.3.0 | Ключ доступа STS для подключения через session-manager. Настройка:
|
bucket_endpoint_url строка добавлено в community.aws 5.3.0 | URL конечной точки S3 для ведра, используемого для передачи файлов. Настройка:
|
bucket_name строка | Имя ведра S3, используемого для передачи файлов. Настройка:
|
bucket_sse_kms_key_id строка добавлено в community.aws 2.2.0 | Идентификатор ключа KMS, используемый при шифровании объектов с помощью Настройка:
|
bucket_sse_mode строка добавлено в community.aws 2.2.0 | Режим шифрования на стороне сервера для загрузки в ведро S3, используемое для передачи файлов. Варианты:
Настройка:
|
instance_id строка | Идентификатор экземпляра EC2. Настройка:
|
plugin строка | Определяет расположение двоичного файла session-manager-plugin. По умолчанию: Настройка:
|
profile строка добавлено в community.aws 1.5.0 | Устанавливает профиль AWS для использования. Настройка:
|
reconnection_retries целое число | Количество попыток подключения. По умолчанию: Настройка:
|
region строка | Регион, в котором находится экземпляр EC2. По умолчанию: Настройка:
|
s3_addressing_style строка добавлено в community.aws 5.2.0 | Стиль адресации, используемый при использовании URL S3. Если ведро S3 не находится в том же регионе, что и экземпляр, явно установление стиля адресации на «virtual» может потребоваться https://repost.aws/knowledge-center/s3-http-307-response, так как это принудительно использует определенную конечную точку. Варианты:
Настройка:
|
secret_access_key строка добавлено в community.aws 1.3.0 | Секретный ключ STS для подключения через session-manager. Настройка:
|
session_token строка добавлено в community.aws 1.3.0 | Токен сессии STS для подключения через session-manager. Настройка:
|
ssm_document строка добавлено в community.aws 5.2.0 | Документ сессии SSM для использования при подключении. Для настройки remote_user (когда Настройка:
|
ssm_timeout integer | Время ожидания подключения (в секундах). По умолчанию: Настройка:
|
Примечания
Примечание
- Подключающий плагин
community.aws.aws_ssmне поддерживает использование переменных ``remote_user`` и ``ansible_user`` для настройки удаленного пользователя. Для настройки пользователя, от имени которого будут выполняться команды, следует использовать параметр ``become_user``. Удаленные команды часто по умолчанию выполняются от имени пользователя ``ssm-agent``, однако это также зависит от конфигурации SSM. - Данному плагину требуется S3-хранилище для отправки файлов на/с удаленный экземпляр. Это требуется даже для модулей, которые не явно отправляют файлы (например, модули
shellилиcommand), поскольку Ansible отправляет через S3 файлы модуля. - Отправляемые через S3 файлы будут именоваться в S3 с префиксом идентификатора хоста EC2 (например,
i-123abc/). - Файлы в S3 будут удалены по завершении выполнения плейбука. Если плейбук завершится аварийно, файлы могут остаться в хранилище. Если в хранилище включена функция ведения истории версий, файлы останутся в истории версий. Если ваши задачи включают отправку секретов на/с удаленный экземпляр (например, в команде
shell, или пароль SQL в модулеcommunity.postgresql.postgresql_query), то эти пароли будут включены в открытом виде в этих файлах в S3 на неопределённый срок, доступны для всех, у кого есть доступ к хранилищу. Поэтому рекомендуется использовать хранилище с отключенной/приостановленной функцией ведения истории версий. - Файлы в S3 будут удалены, даже если параметр
keep_remote_filesимеет значениеtrue.
Примеры
---
# Wait for SSM Agent to be available on the Instance
- name: Wait for connection to be available
vars:
ansible_connection: aws_ssm
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-west-2
# When the S3 bucket isn't in the same region as the Instance
# Explicitly setting the addressing style to 'virtual' may be necessary
# https://repost.aws/knowledge-center/s3-http-307-response
ansible_aws_ssm_s3_addressing_style: virtual
tasks:
- name: Wait for connection
wait_for_connection:
# Stop Spooler Process on Windows Instances
- name: Stop Spooler Service on Windows Instances
vars:
ansible_connection: aws_ssm
ansible_shell_type: powershell
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-east-1
tasks:
- name: Stop spooler service
win_service:
name: spooler
state: stopped
# Install a Nginx Package on Linux Instance
- name: Install a Nginx Package
vars:
ansible_connection: aws_ssm
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-west-2
tasks:
- name: Install a Nginx Package
yum:
name: nginx
state: present
# Create a directory in Windows Instances
- name: Create a directory in Windows Instance
vars:
ansible_connection: aws_ssm
ansible_shell_type: powershell
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-east-1
tasks:
- name: Create a Directory
win_file:
path: C:\Windows\temp
state: directory
---
# Making use of Dynamic Inventory Plugin
# =======================================
# # aws_ec2.yml (Dynamic Inventory - Linux)
# plugin: aws_ec2
# regions:
# - us-east-1
# hostnames:
# - instance-id
# # This will return the Instances with the tag "SSMTag" set to "ssmlinux"
# filters:
# tag:SSMTag: ssmlinux
# -----------------------
- name: install aws-cli
hosts: all
gather_facts: false
vars:
ansible_connection: aws_ssm
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-east-1
tasks:
- name: aws-cli
raw: yum install -y awscli
tags: aws-cli
---
# Execution: ansible-playbook linux.yaml -i aws_ec2.yml
# =====================================================
# # aws_ec2.yml (Dynamic Inventory - Windows)
# plugin: aws_ec2
# regions:
# - us-east-1
# hostnames:
# - instance-id
# # This will return the Instances with the tag "SSMTag" set to "ssmwindows"
# filters:
# tag:SSMTag: ssmwindows
# -----------------------
- name: Create a dir.
hosts: all
gather_facts: false
vars:
ansible_connection: aws_ssm
ansible_shell_type: powershell
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-east-1
tasks:
- name: Create the directory
win_file:
path: C:\Temp\SSM_Testing5
state: directory
---
# Execution: ansible-playbook win_file.yaml -i aws_ec2.yml
# The playbook tasks will get executed on the instance ids returned from the dynamic inventory plugin using ssm connection.
# Install a Nginx Package on Linux Instance; with specific SSE CMK used for the file transfer
- name: Install a Nginx Package
vars:
ansible_connection: aws_ssm
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-west-2
ansible_aws_ssm_bucket_sse_mode: 'aws:kms'
ansible_aws_ssm_bucket_sse_kms_key_id: alias/kms-key-alias
tasks:
- name: Install a Nginx Package
yum:
name: nginx
state: present
# Install a Nginx Package on Linux Instance; using the specified SSM document
- name: Install a Nginx Package
vars:
ansible_connection: aws_ssm
ansible_aws_ssm_bucket_name: nameofthebucket
ansible_aws_ssm_region: us-west-2
ansible_aws_ssm_document: nameofthecustomdocument
tasks:
- name: Install a Nginx Package
yum:
name: nginx
state: present
Ссылки на сборку
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/aws/aws_ssm_connection.html