Ansible به عنوان ابزار تامین: ایجاد VPC

معرفی
Ansible یک نرم افزار نرم افزار اتوماسیون فناوری اطلاعات خط فرمان منبع باز است که توسط RedHat حمایت می شود.
این بیشتر به عنوان یک ابزار مدیریت پیکربندی سرور، ابزار اتوماسیون شبکه استفاده می شود و همچنین می تواند برای ارائه استفاده شود.
چندین سرویس مانند kubernetes، nginx و خدمات در چندین پلت فرم ابری. برای مشاهده لیست خدمات پشتیبانی شده، اسناد رسمی را بررسی کنید.
در این مقاله نحوه ساخت یک AWS VPC بدون نیاز به استفاده از کنسول AWS با استفاده از Ansible توضیح داده شده است. VPC شامل یک زیرشبکه خصوصی و عمومی، دروازه اینترنت برای زیرشبکه عمومی، یک دروازه Nat برای زیرشبکه خصوصی و جداول مسیر است.
پیش نیازها
- یک حساب AWS
- یک کاربر AWS با نقش IAM که دارای مجوزهای لازم برای ایجاد منابع، عمدتاً یک نقش مدیر است.
- باید ansible نصب شده باشد. برای راهنمای نصب اینجا را کلیک کنید
راه اندازی دایرکتوری پروژه
یک دایرکتوری ایجاد کنید که در آن می خواهید پروژه خود را راه اندازی کنید. در پوشه کاری، یک فایل network.yml و یک پوشه vars با یک فایل main.yml در آن ایجاد کنید. پوشه vars حاوی متغیرهای محیطی خواهد بود. ساختار دایرکتوری شما باید به شکل زیر باشد:
├── network.yml
└── vars
└── main.yml
متغیرها
استفاده از متغیرها برای اطمینان از انعطاف پذیری در کتاب اصلی در صورت تکرار مقادیر است و می توانید به راحتی مقادیر را بدون تغییر فایل اصلی تغییر دهید.
این را کپی کرده و در فایل main.yml در پوشه vars قرار دهید. مطمئن شوید که “aws_secret_key” و “aws_access_key” را با شما جایگزین کنید. اگرچه توصیه نمیشود کلیدهای مخفی کد سخت را در فایلهای متغیر قرار دهید، اسناد مربوط به نحوه استفاده از بهترین روشها برای ذخیره اعتبارنامهها را بررسی کنید.
aws_secret_key: ""
aws_access_key: ""
region: us-east-1
vpc_cidr: 10.1.0.0/16
public_subnet_cidr: 10.1.1.0/24
private_subnet_cidr: 10.1.2.0/24
ایجاد VPC
این کد را کپی کرده و در فایل network.yml قرار دهید
- name: Create VPC and Subnets
hosts: localhost
# This is to make sure the playbook references the variables in the vars folder
vars_files:
- vars/main.yml
module_defaults:
group/aws:
aws_secret_key: "{{ aws_secret_key }}"
aws_access_key: "{{ aws_access_key }}"
tasks:
- name: Create a VPC
amazon.aws.ec2_vpc_net:
name: test
state: present
cidr_block: "{{ vpc_cidr }}"
region: "{{ region }}"
dns_hostnames: true
dns_support: true
tags:
key: name
value: dev
# the 'register' keyword here is to register the module returned data in the 'vpc_name' variable
register: vpc_name
- name: Create Public Subnet
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: "{{ vpc_name.vpc.id }}"
region: "{{ region }}"
cidr: "{{ public_subnet_cidr }}"
map_public: true
register: public_sub
- name: Create Private Subnet
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: "{{ vpc_name.vpc.id }}"
region: "{{ region }}"
cidr: "{{ private_subnet_cidr }}"
map_public: true
register: private_subnet
- name: Create Internet Gateway
amazon.aws.ec2_vpc_igw:
vpc_id: "{{ vpc_name.vpc.id }}"
region: "{{ region }}"
state: present
register: igw
- name: Public Subnet Route Table
amazon.aws.ec2_vpc_route_table:
vpc_id: "{{ vpc_name.vpc.id }}"
region: "{{ region }}"
subnets:
- "{{ public_sub.subnet.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: "{{ igw.gateway_id }}"
register: public_route_table
- name: Elastic IP for Nat gateway
amazon.aws.ec2_eip:
region: "{{ region }}"
state: present
register: eip
- name: Network gateway
amazon.aws.ec2_vpc_nat_gateway:
state: present
subnet_id: "{{ private_subnet.subnet.id }}"
eip_address: "{{ eip.public_ip }}"
region: "{{ region }}"
wait: true
register: nat
- name: Private subnet route table
amazon.aws.ec2_vpc_route_table:
vpc_id: "{{ vpc_name.vpc.id }}"
region: "{{ region }}"
subnets:
- "{{ private_subnet.subnet.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: "{{ nat.nat_gateway_id }}"
playbook را اجرا کنید
ترمینال را در پوشه کاری باز کنید و دستور را اجرا کنید
ansible-playbook network.yml
خروجی باید به این شکل باشد
PLAY [Create VPC and Subnets] **************************************
TASK [Gathering Facts] *********************************************
ok: [localhost]
TASK [Create a VPC] ************************************************
changed: [localhost]
TASK [Create Public Subnet] ****************************************
changed: [localhost]
TASK [Create Private Subnet] ***************************************
changed: [localhost]
TASK [Create Internet Gateway] *************************************
changed: [localhost]
TASK [Public Route Table] ******************************************
changed: [localhost]
TASK [Elastic IP for Nat gateway] **********************************
changed: [localhost]
TASK [Network gateway] *********************************************
changed: [localhost]
TASK [Private subnet route table] **********************************
changed: [localhost]
PLAY RECAP *********************************************************
localhost : ok=9 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
می توانید وارد کنسول AWS شوید و مطمئن شوید که با موفقیت ایجاد شده است
نتیجه
این در مورد نحوه استفاده از Ansible برای ایجاد VPC است. در مقاله بعدی، نحوه حذف منابع ایجاد شده با استفاده از Ansible را نشان خواهم داد.