Решаем задачи devops-инженера с Chat GPD

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Что такое ChatGPD

ChatGPT - это модель языка, которая используется для генерации текста и диалогов,  разработаная исследовательской организацией OpenAI. Использует глубокое обучение для предсказания следующего слова в последовательности текста. Она может быть использована для автоматизации задач, таких как генерация текста, диалоговые системы, поиск информации и даже для написания кода, с пояснениями что именно было написано и как он работает.

Задачи DevOps-инженера которые решаются с помощью ChatGPD

Чтобы получить правильный ответ, нужно задавать правильный вопрос.

Какие задачи будем решать:

  • контейнеризация и сборка приложения

  • Создания плейбука

  • Создание helm chart для kubernetes

Для начала представим , что неожиданно оказались в команде разработки, где срочно нужно доставить код написанный разработчиками (возможно тоже с использованием AI) на production. Первое что придется сделать - написать Dockerfile. Тут конечно лучше всего пойти и почитать официальную документацию, в которой все подробно описывается, или на основе опыта написать самостоятельно, но мы в 2023 году, поэтому можем пойти другим путем - отправимся в ChatGPD.

Просим: напиши Dockerfile для golang приложения  

Считаные секунды и у нас есть Dockerfile, причем с разъяснениями что он будет делать, куда копировать файлы и что в итоге запускать.

Ответ:

Для создания Dockerfile для golang приложения вам потребуется следующий код:

```Dockerfile
FROM golang:latest

WORKDIR /app

COPY . .

RUN go build -o main .

CMD ["./main"]
```

Этот Dockerfile будет создавать докер-образ из последней версии golang, копировать все файлы из текущей директории в директорию /app, собирать приложение и запускать его при запуске докер-контейнера.

Dockerfile написан, теперь можно приступить к написанию CI. Допустим есть Jenkins, создаем джобу и идем просить ChatGPD написать pipeline.

Спрашиваем (теперь по-английский): Write Jenkins pipeline for build docker image with golang app

Ответ:

```groovy
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'go build -o main .'
            }
        }
        stage('Docker Build') {
            steps {
                sh 'docker build -t my-golang-app .'
            }
        }
        stage('Docker Push') {
            steps {
                sh 'docker push my-golang-app'
            }
        }
    }
}
```

А может нам лучше запускать сборку в gitlab ci. Только вот снова придется писать там еще один пайплайн. Попробуем  попросить конвертировать Jenkins pipeline в gitlab ci, и через пару секунд у нас есть gitlab pipeline.

Ответ:

Для конвертации Jenkins pipeline в gitlab ci pipeline вы можете использовать следующий код:

```yaml
stages:
  - build
  - docker_build
  - docker_push

build:
  stage: build
  script:
    - go build -o main .

docker_build:
  stage: docker_build
  script:
    - docker build -t my-golang-app .

docker_push:
  stage: docker_push
  script:
    - docker push my-golang-app
```

И наконец попросим написать helm chart для деплоя в kubernetes.

Ответ:

Для создания helm-чарта для golang приложения вы можете использовать следующий код:

```yaml
apiVersion: v1
kind: Chart
metadata:
  name: my-golang-app
  version: 0.1.0
  description: A Helm chart for my golang application

# Specify the chart's dependencies
dependencies:
  - name: my-golang-app
    version: 0.1.0
    repository: "https://example.com/my-golang-app"

# Specify the values for the chart
values:
  image:
    repository: my-golang-app
    tag: 0.1.0
  service:
    type: ClusterIP
    port: 8080

# Specify the templates for the chart
templates:
  - deployment.yaml
  - service.yaml
```

Вы также можете использовать шаблоны для деплоя и сервиса, как показано ниже:

```yaml
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-golang-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-golang-app
  template:
    metadata:
      labels:
        app: my-golang-app
    spec:
      containers:
        - name: my-golang-app
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          ports:
            - containerPort: 8080

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-golang-app
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: 8080
  selector:
    app: my-golang-app
```

Немного про образование

В классической системе образования основная задача состоит в получении знаний путем запоминания (заучивания). В современном мире это не так эффективно, получить необходимую информацию теперь можно очень быстро. Основная современная задача уметь анализировать и выбирать правильную информацию. Для этого развивайте творческое, логическое, креативное мышление. А все остальное, что можно автоматизировать, немедленн автоматизируйте!

Вместо заключения

ChatGPT может использоваться для автоматизации некоторых задач, которые обычно выполняют DevOps-инженеры. Это позволит сэкономить время и ресурсы, которые иначе были бы потрачены на выполнение этих задач руками.

Это не замена инженеров, а инструмент чтобы быть продуктивнее. Пока что это точно не попытка уменьшить количество инженеров, просто инженеры теперь будут более эффективнее работать - смогут делать быстрее типовые задачи, а освободившиеся время использовать для по настоящему сложных и интересные задач.

Внимание: статья написана с использованием AI

Источник: https://habr.com/ru/post/714952/


Интересные статьи

Интересные статьи

Привет, Хабр!Это одна из трех статей, в которых я (автор канала Зайцем по ХаХатонам) рассказываю о задачах Всеросийского чемпионата Цифрового Прорыва, объясняю базовые решения (baseline) и д...
С 2014 года в России реализуется программа импортозамещения, которая распространяется в том числе на программное обеспечение и системы управления базами данных, поднимая вопросы оптимальной миграции. ...
Декабрь — время предвкушения Рождества. На западе эти 24 дня даже имеют специальное название — адвент. Обычные люди в этот период покупают адвент-календари и скрашивают о...
Один из ключевых сценариев работы в CRM это общение с клиентом в удобном для него канале. По почте, по телефону, по SMS или в мессенджере. Особенно выделяется WhatsApp — интеграцию с ...
Но если для интернет-магазина, разработанного 3–4 года назад «современные» ошибки вполне простительны потому что перед разработчиками «в те далекие времена» не стояло таких задач, то в магазинах, сдел...