Дипломная работа: Автоматизация доставки программного обеспечения при помощи DevOps практик и инструментов в облаке AWS в компании ООО "Команда Лабс"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
136
password = "${var.password}"
port = "${var.port}"
iam_database_authentication_enabled = "${var.iam_database_authentication_enabled}"
replicate_source_db = "${var.replicate_source_db}"
snapshot_identifier = "${var.snapshot_identifier}"
vpc_security_group_ids = ["${var.vpc_security_group_ids}"]
db_subnet_group_name = "${local.db_subnet_group_name}"
parameter_group_name = "${local.parameter_group_name}"
option_group_name = "${local.option_group_name}"
availability_zone = "${var.availability_zone}"
multi_az = "${var.multi_az}"
iops = "${var.iops}"
publicly_accessible = "${var.publicly_accessible}"
allow_major_version_upgrade = "${var.allow_major_version_upgrade}"
auto_minor_version_upgrade = "${var.auto_minor_version_upgrade}"
apply_immediately = "${var.apply_immediately}"
maintenance_window = "${var.maintenance_window}"
skip_final_snapshot = "${var.skip_final_snapshot}"
copy_tags_to_snapshot = "${var.copy_tags_to_snapshot}"
final_snapshot_identifier = "${var.final_snapshot_identifier}"
backup_retention_period = "${var.backup_retention_period}"
backup_window = "${var.backup_window}"
monitoring_interval = "${var.monitoring_interval}"
monitoring_role_arn = "${var.monitoring_role_arn}"
monitoring_role_name = "${var.monitoring_role_name}"
create_monitoring_role = "${var.create_monitoring_role}"
timezone = "${var.timezone}"
character_set_name = "${var.character_set_name}"
enabled_cloudwatch_logs_exports = "${var.enabled_cloudwatch_logs_exports}"
timeouts = "${var.timeouts}"
deletion_protection = "${var.deletion_protection}"
tags = "${var.tags}"
}
Создание серверов для инфраструктуры
resource "aws_instance" "instance" {
count = "${var.count}"
instance_type = "${var.instance_type}"
ami = "${lookup(var.aws_amis, var.aws_region)}"
key_name = "${var.key_pair_id}"
vpc_security_group_ids = ["${var.security_group_id}"]
137
subnet_id = "${var.subnet_id}"
root_block_device {
volume_size = "${var.disk_size}"
}
tags {
Name = "${format("%s%02d", var.group_name, count.index + 1)}" # -> "backend02"
Group = "${var.group_name}"
}
lifecycle {
create_before_destroy = true
}
# Provisioning
connection {
user = "ec2-user"
private_key = "${file(var.private_key_path)}"
agent = false
}
provisioner "remote-exec" {
inline = [
"sudo yum -y update",
]
}
}
Управление конфигурацией Nginx сервера с помощью Ansible
---
# tasks file for nginx.hapi
- name: Update and upgrade apt packages
become: true
apt:
upgrade: yes
update_cache: yes
cache_valid_time: 86400
- name: Ensure group "nginx" exists
group:
name: nginx
state: present
- name: Add user "nginx"
user:
name: nginx
groups: nginx
shell: /sbin/nologin
append: yes
comment: "Nginx nologin User"
state: present
become: true
138
- name: Clean artifact path
file:
state: absent
path: /etc/nginx/
become: yes
- name: copy the nginx config files
copy:
src: ../../../nginx/config/{{ nginx.env }}/nginx/
dest: /etc/nginx
force: True
become: yes
- name: Check NGINX configs
shell: "/usr/sbin/nginx -t"
register: nginx_config_status
- name: NGINX test full status
debug:
msg: "{{ nginx_config_status }}"
- name: NGINX test status RC
debug:
msg: "{{ nginx_config_status.rc }}"
- name: Service NGINX restart and enable on boot
systemd:
name: nginx
state: restarted
enabled: yes
daemon_reload: yes
when: nginx_config_status.rc == 0
- name: Creates directory aws-es-proxy
file:
path: /opt/aws-es-proxy/
state: directory
owner: ubuntu
group: ubuntu
mode: 0775
- name: download sources
get_url:
url: https://github.com/abutaha/aws-es-proxy/releases/download/v0.9/aws-es-proxy-
0.9-linux-amd64
dest: /opt/aws-es-proxy/aws-es-proxy-0.9-linux-amd64
owner: ubuntu
mode: a+x
- name: Create AWS ES proxy configuration.
template:
src: "{{ item }}.j2"
dest: "/opt/aws-es-proxy/{{ item }}"
owner: ubuntu
139
group: ubuntu
mode: a+x
with_items:
- proxy-service.sh
- name: Creates directory for logs AWS ES proxy
file:
path: /var/log/aws-es-proxy/
state: directory
owner: ubuntu
group: ubuntu
mode: 0775
notify: restart awsproxy
- name: Install Monit.
apt:
name: monit
state: present
- name: Create Monit configuration.
template:
src: "{{ item }}.j2"
dest: "/etc/monit/conf.d/awsproxy"
owner: ubuntu
group: ubuntu
mode: a+x
with_items:
- awsproxy
notify: restart monit
- name: Create Logrotate configuration.
template:
src: "{{ item }}.j2"
dest: "/etc/logrotate.d/nginx"
owner: root
group: root
mode: 0644
with_items:
- nginx
notify: restart logrotate
Конфигурирование Logstash сервера для пересылки и обработки
логов
---
- name: HTTPS APT transport for Elasticsearch repository.
apt:
name: apt-transport-https
state: present
- name: Add Elasticsearch apt key.
apt_key:
url: https://artifacts.elastic.co/GPG-KEY-elasticsearch
140
state: present
- name: Add Logstash repository.
apt_repository:
repo: 'deb https://artifacts.elastic.co/packages/{{ logstash_version }}/apt stable main'
state: present
- name: Check if Logstash is already installed.
stat: path=/etc/init.d/logstash
register: logstash_installed
- name: Update apt cache if repository just added.
apt: update_cache=yes
when: logstash_installed.stat.exists == false
- name: Install Logstash.
apt:
name: logstash
state: present
- name: Add Logstash user to adm group (Debian).
user:
name: logstash
group: logstash
groups: adm
notify: restart logstash
- name: Add Logstash user to adm group (Debian).
user:
name: logstash
group: logstash
groups: admin
notify: restart logstash
---
- name: Creates directory aws_filebeat
file:
path: /etc/logstash/aws_filebeat/
state: directory
owner: logstash
group: logstash
mode: 0775
- name: Creates directory aws_logstash
file:
path: /etc/logstash/aws_logstash/
state: directory
owner: logstash
group: logstash
mode: 0775
- name: Creates directory aws_opsgenie
Источник: https://baza.diplomsite.ru/previewfile/1758