Files
gonfig/playbook.yml
2025-07-21 22:45:56 +07:00

68 lines
2.1 KiB
YAML

---
- name: Установка и настройка Golang
hosts: "{{ TARGET }}"
pre_tasks:
- name: Проверка, установлен ли Go
command: go version
register: go_check
failed_when: false
changed_when: false
- name: Извлечение версии Go из stdout
set_fact:
current_go_version: "{{ (go_check.stdout | regex_findall('go([0-9.]+)')) | first | default('') }}"
- name: Отладка — текущая версия Go
debug:
msg:
- "Требуется версия Go: {{ go_version }}"
- "Установленная версия Go: {{ current_go_version }}"
- "Принудительная установка Go: {{ force }}"
- name: Проверка, нужно ли обновлять Go
set_fact:
go_update_needed: "{{ force | bool or current_go_version != go_version }}"
tasks:
- block:
- name: Удаление старой установки Go
file:
path: "{{ go_install_path }}/go"
state: absent
- name: Загрузка архива Go
get_url:
url: "{{ go_url }}"
dest: "/tmp/{{ go_tar }}"
- name: Распаковка Go
unarchive:
src: "/tmp/{{ go_tar }}"
dest: "{{ go_install_path }}"
remote_src: yes
when: go_update_needed
post_tasks:
- name: Настройка переменных окружения для Go
copy:
dest: "{{ go_env_path }}"
content: |
export GOROOT={{ go_install_path }}/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
mode: '0644'
- name: Применение переменных окружения
listen: update-go-env
shell: source {{ go_env_path }}
args:
executable: /bin/bash
- name: Добавляем CLI утилиты
shell: env GOBIN=/usr/local/bin go install {{ item }}
args:
executable: /bin/bash
loop:
- github.com/pressly/goose/cmd/goose@latest