[Ansible] 세션 관리자를 통해 SSH 연결

7351 단어 AWSAnsibleEC2tech
EC2 인스턴스가 개인 서브넷에 있고 로컬 환경에서 SSH를 직접 연결할 수 없는 경우 세션 관리자를 사용하여 SSH를 연결할 수 있습니다.세션 관리자를 통한 SSH 연결의 장점은 다음과 같은 블로그가 매우 참고 가치가 있다는 것이다.
세션 매니저를 통해 SSH를 방문하면 어떤 기쁨이 생길까

계정 EC2 인스턴스 설정


SSM 관리자를 설치해야 합니다.Amazon Linux2의 AMI를 시작할 때 이미 설치되었으니 다음 단계로 넘어가십시오.
설치 방법은 문서를 참조하십시오.
Manually install SSM Agent on EC2 instances for Linux - AWS Systems Manager

연결 소스 설정(로컬 환경)


세션 관리자 플러그인을 설치해야 합니다.설치 방법은 다음 문서를 참조하십시오.
(Optional) Install the Session Manager plugin for the AWS CLI - AWS Systems Manager

정적 재고 시


EC2 인스턴스가 인벤토리 파일에 기재된 경우 다음과 같습니다.
4
; static_ec2.ini
[instance]
instance1 ansible_host=i-xxxxxxxxxxxx

[all:vars]
ansible_ssh_common_args=-o StrictHostKeyChecking=no -o ProxyCommand="sh -c \"aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'\""
ansible_user='ec2-user'
ansible_become=true
ansible_ssh_private_key_file='~/.ssh/<KEY_PAIR>.pem'
다음 명령을 사용하여 재생본을 실행할 수 있습니다.
$ ansible-playbook -i static_ec2.ini <プレイブックファイル>

동적 재고 시


동적 EC2 인스턴스를 가져오고 관리할 때 동적 인벤토리를 사용합니다.동적 재고에 관해서는 아래의 문장을 참고하시오.
[Ansible] 인벤토리 플러그인을 사용하여 EC2 인스턴스 정보를 동적으로 가져오기
재고 서류는 아래와 같다.
3
# aws_ec2.yml
plugin: aws_ec2
regions:
  - ap-northeast-1

# フィルタの設定
# 起動しているEC2インスタンスのみを対象とする
filters:
  instance-state-name: running

# グルーピングの設定
# タグ毎にEC2インスタンスのグループをまとめる
keyed_groups:
  - key: tags.Application
    prefix: tag_Name_
    separator: ""

# inventory_hostnameの設定項目の優先順位
# 上から優先され、取得できなければ下にいく
hostnames:
  - tag:Name
  - private-ip-address

compose:
  # SSM Session Managerでホストに接続するためansible_hostをEC2インスタンスIDにする
  ansible_host: instance_id
게임북은 다음과 같다vars에 연결 정보를 기재합니다.
4
# example.yml
---
- name: Example dynamic inventory
  hosts: "{{ target_hosts }}"

  vars:
    ansible_ssh_common_args: "-o StrictHostKeyChecking=no -o ProxyCommand='aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p''"
    ansible_user: ec2-user
    ansible_ssh_private_key_file: ~/.ssh/<KEY PAIR>.pem

  tasks:
    - name: Print Name tag
      debug:
        msg: "{{ tags.Name }}"
다음 명령을 사용하여 재생본을 실행할 수 있습니다.
$ ansible-playbook -i aws_ec2.yml example.yml

참고 자료

  • AWS Systems Manager 세션 관리자에서 SSH 및 SCP를 사용할 수 있습니다.
  • 개인 서브넷의 EC2에서 직접 Ansible 업무 수행
  • 좋은 웹페이지 즐겨찾기