EC2のAnsibleをDynamic Inventoryで設定する🙂

Poojan Mehta
Poojan Mehta

フォロー
9/25, 2020 – 5 min read

→ 前提となる条件。

– >RedHat Ansibleをダウンロードし、ローカルシステムで設定します。

>Do check out my previous article for Ansible👇:

~Problem Statement:

♦️ Deploy Web Server on AWS through ANSIBLE!

🔹 Provision EC2 instance through ansible.Ansiible.Ansiible.Ansiible.Ansiable.Ansiable.Ansiible.Arc.

🔹 dynamic inventoryの概念を使ってインスタンスのIP Addressを取得する。

🔹 ansibleを通じてWebサーバーを設定する!

  • Ansibleはpythonの上に構築されているので、AWSサービスを設定できるPython Software Development Kit(SDK)が必要である。 パッケージはboto3というオブジェクト指向のAPIです。
pip3 install boto3 //assuming python3 is installed

→STEP-1)

  • 最初のステップでは、このプレイブックでec2インスタンスをプロビジョニングしています。
  • ここでは、RedHatシステム自身がAWS上の設定用APIを呼び出しており、この手順はローカルマシンで行われるため、ホストはlocalhostとする。
  • AWSアカウントへの認証には、ルートアカウントよりも低い権限を持つIAMユーザを1つ作成します。 AWS_ACCESS_KEYとAWS_SECRETキーは、secretというAnsible vaultを通して明示的に渡します。yml

Encrypted Vault🔒
- hosts: localhost
vars_files:
- secret.yml
tasks:
- name: Provision os in AWS
ec2:
key_name: "keytask" //keypair to be attached to the instance
instance_type: "t2.micro"
image: "ami-0ebc1ac48dfd14136" //amazon linux
count: 1
wait: yes
vpc_subnet_id: "subnet-e7780dab"
region: "ap-south-1" //asia-pecific-south region of AWS
state: present
assign_public_ip: yes
group_id: "sg-0512d293cfb4af6e4" //security group
aws_access_key: "{{ myuser }}"
aws_secret_key: "{{ mypass }}"
register: ec2 - debug:
var: ec2.instances.public_ip

ansible- (責任者)プレイブック ec2.py – ask-vault-pass🚀

Ansible register は、ユーザーが出力をキャプチャして変数として保存し、さまざまなシナリオで使用できるようにするものです。 変数にはタスクから返された値が含まれます。

レジスタ変数は、収集したAnsibleの事実からインスタンスのパブリックIPアドレスを出力します。

→STEP-2)

> インスタンスは起動しました!

このインスタンスのIPアドレスをインベントリファイルにダンプして、さらなる手順を行う必要があります!

単にホストファイルにIPを書き込めばいいのかな🤭? NAH ! 手動ではありません🤫

そしてこれが🔥DYNAMIC INVENTORY🔥が登場する場面になるのですが、これはどうなるのでしょうか?

→Ansible ダイナミック インベントリとは、外部 API として動作し、特定のプロバイダーの情報 (ファクト) を取得するスクリプトを含む概念です。

→収集されたファクトは、ホスト ファイルに動的にダンプされ、さらに、要件に応じてこれらのホストのグループを作成できます。

→ダイナミック インベントリを有効にするには、次のファイルをコントローラー ノードにコピーします。

https://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.pyhttps://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.ini

→いずれも実行形式である必要があります。

chmod +x ec2.py
chmod +x ec2.ini

→また、アカウント認証のために、AWS_ACCESS_KEY と AWS_SECRET_KEY を ec2.ini ファイルで渡します。

→ANSIBLE.CFG 設定ファイルの中の inventory ファイルも編集します。

→ さて、出力を見るために、./ec2.py - - list

を実行します。

コメントする