Что такое ChatGPT

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

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

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

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

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

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

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

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

Просим: напиши 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, создаем джобу и идем просить ChatGPT написать 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

Комментарии (4)


  1. Dynasaur
    05.02.2023 18:37
    +6

    Заглянул под кат только чтобы узнать что вы называте ChatGPD. Так и не понял. Как и не понял зачем весь остальной текст. Пренебрежение к читателям у авторов Хабра прогрессирует, что не может не расстраивать.


    1. uszer
      06.02.2023 02:00
      +2

      Статья написана самим ChatGPT, а опечатка сделана специально, чтоб отвести подозрения.


  1. kaasnake
    05.02.2023 20:37
    +1

    Я перестал просить этого индуса что-то написать после того как он выкатил мне модуль терраформа с использованием провайдера в который переданы совершенно другие параметры, чем описаны в документации ( и естественно он не работал)


  1. Bedrosova
    07.02.2023 21:55
    +1

    Кстати, я пробовала ChatGPT, настраивая CI/CD на реальном проекте - он пишет наполовину бред. Если не знаешь, как этот бред отфильтровать - ничего не получится.