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