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

от автора

Что такое 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


ссылка на оригинал статьи https://habr.com/ru/articles/714952/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *