Spec-Zone.ru › Ansible

Подключение 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.

Настройка:

  • Переменная окружения: AWS_ACCESS_KEY_ID
  • Переменная: ansible_aws_ssm_access_key_id

bucket_endpoint_url

строка

добавлено в community.aws 5.3.0

URL конечной точки S3 для ведра, используемого для передачи файлов.

Настройка:

  • Переменная: ansible_aws_ssm_bucket_endpoint_url

bucket_name

строка

Имя ведра S3, используемого для передачи файлов.

Настройка:

  • Переменная: ansible_aws_ssm_bucket_name

bucket_sse_kms_key_id

строка

добавлено в community.aws 2.2.0

Идентификатор ключа KMS, используемый при шифровании объектов с помощью bucket_sse_mode=aws:kms. Игнорируется в противном случае.

Настройка:

  • Переменная: ansible_aws_ssm_bucket_sse_kms_key_id

bucket_sse_mode

строка

добавлено в community.aws 2.2.0

Режим шифрования на стороне сервера для загрузки в ведро S3, используемое для передачи файлов.

Варианты:

  • "AES256"
  • "aws:kms"

Настройка:

  • Переменная: ansible_aws_ssm_bucket_sse_mode

instance_id

строка

Идентификатор экземпляра EC2.

Настройка:

  • Переменная: ansible_aws_ssm_instance_id

plugin

строка

Определяет расположение двоичного файла session-manager-plugin.

По умолчанию: "/usr/local/bin/session-manager-plugin"

Настройка:

  • Переменная: ansible_aws_ssm_plugin

profile

строка

добавлено в community.aws 1.5.0

Устанавливает профиль AWS для использования.

Настройка:

  • Переменная окружения: AWS_PROFILE
  • Переменная: ansible_aws_ssm_profile

reconnection_retries

целое число

Количество попыток подключения.

По умолчанию: 3

Настройка:

  • Переменная: ansible_aws_ssm_retries

region

строка

Регион, в котором находится экземпляр EC2.

По умолчанию: "us-east-1"

Настройка:

  • Переменная окружения: AWS_REGION
  • Переменная окружения: AWS_DEFAULT_REGION
  • Переменная: ansible_aws_ssm_region

s3_addressing_style

строка

добавлено в community.aws 5.2.0

Стиль адресации, используемый при использовании URL S3.

Если ведро S3 не находится в том же регионе, что и экземпляр, явно установление стиля адресации на «virtual» может потребоваться https://repost.aws/knowledge-center/s3-http-307-response, так как это принудительно использует определенную конечную точку.

Варианты:

  • "path"
  • "virtual"
  • "auto" ← (по умолчанию)

Настройка:

  • Переменная: ansible_aws_ssm_s3_addressing_style

secret_access_key

строка

добавлено в community.aws 1.3.0

Секретный ключ STS для подключения через session-manager.

Настройка:

  • Переменная окружения: AWS_SECRET_ACCESS_KEY
  • Переменная: ansible_aws_ssm_secret_access_key

session_token

строка

добавлено в community.aws 1.3.0

Токен сессии STS для подключения через session-manager.

Настройка:

  • Переменная окружения: AWS_SESSION_TOKEN
  • Переменная: ansible_aws_ssm_session_token

ssm_document

строка

добавлено в community.aws 5.2.0

Документ сессии SSM для использования при подключении.

Для настройки remote_user (когда become=False, можно использовать документ сессии SSM и определить параметры runAsEnabled и runAsDefaultUser. См. также https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-schema.html

Настройка:

  • Переменная: ansible_aws_ssm_document
END_OF_DOCUMENT_MARKER

ssm_timeout

integer

Время ожидания подключения (в секундах).

По умолчанию: 60

Настройка:

  • Переменная: ansible_aws_ssm_timeout

Примечания

Примечание

  • Подключающий плагин 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

Авторы

  • Pat Sharkey (@psharkey)
  • HanumanthaRao MVL (@hanumantharaomvl)
  • Gaurav Ashtikar (@gau1991)

Подсказка

Записи конфигурации для каждого типа имеют порядок приоритета снизу вверх. Например, переменная, расположенная ниже в списке, переопределит переменную, расположенную выше.

Ссылки на сборку

  • Отслеживание проблем
  • Репозиторий (Источники)
  • Общение

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API