→ 前提となる条件。
– >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
- 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 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
を実行します。