Рубрики
Uncategorized

Управление DotFiles с Anisible

Когда разработчики устали от настройки снова и снова наших машин, мы склонны создавать DotFiles R … Помечено с помощью Anbible, DevOps, Учебник, dotfiles.

Когда разработчики снова устают настройку снова и снова наших машин, мы склонны создавать хранилище дотфилов.

ДОТФИЛЬНЫЕ РЕПОЗИИ

Dotfiles обычно используются для хранения пользовательских настроек или сохранения состояния утилиты и часто создаются неявно, используя различные утилиты.

Все начинается с небольшого репозитория, содержащего файлы конфигурации для общих инструментов например .zshrc С .vimrc , и т.д. Однако каждый раз, когда мы настраиваем новую машину, нам нужно копировать эти файлы Под рукой Отказ

Мы гордимся нашей способностью автоматизировать любую задачу. Следовательно, следующий логический шаг для репозитория DotFiles состоит в том, чтобы создать «небольшой» скрипт оболочки для автоматизации установки инструмента и конфигурации машины.

Все сначала хорошо, но этот «маленький» скрипт в конечном итоге в конечном итоге сотни линий и трудно поддерживать.

Несправедливо для спасения

Anbible это инструмент управления конфигурацией. Он предоставляет свой собственный язык для описания конфигурации системы.

Это не новая идея, но это похоже на одну: настроить собственную машину так же, как вы настраиваете свои серверы … С неизбежным.

Примечание : Я использую Debian на протяжении всего этого учебника, хотя то же самое можно достичь с любой архитектурой и оперативной системой, если это доступно для него Anisible.

Bootstrapa Anisible

Для установки и настройки вещей с помощью Anisible нам нужно сначала установить Anbible. Мы можем использовать небольшой сценарий Shell для достижения этого. Некоторые из переменных, таких как $ Хосты и $ Playbook будет иметь смысл в следующих разделах:

#!/usr/bin/env bash

set -e

# Dotfiles' project root directory
ROOTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Host file location
HOSTS="$ROOTDIR/hosts"
# Main playbook
PLAYBOOK="$ROOTDIR/dotfiles.yml"

# Installs ansible
apt-get update && apt-get install -y ansible

# Runs Ansible playbook using our user.
ansible-playbook -i "$HOSTS" "$PLAYBOOK" --ask-become-pass

exit 0

Запуск предыдущего скрипта, так как наш пользователь Sudoer эффективно устанавливает Anbible и запустить наш главный Playbook со всеми нашими роли Отказ

Playbook : Файл, который определяет несколько задач для выполнения в целевой машине. Роль : Организует множественные, связанные с ними задачи с данными, необходимыми для запуска этих задач (переменные, файлы, шаблоны).

Базовая структура папки

После того, как мы имеем сценарий насыта на месте, мы можем начать писать ошибку файлов конфигурации.

В наших хранилище Dotfiles наша цель — наша собственная машина. Это очень легко определить в нашем хозяева Файл (с локальным подключением, так что он не требует ключа SSH):

# file: hosts
[local]
localhost

[local:vars]
ansible_connection=local

Примечание : В нашем Bootstrap.sh Сценарий, этот файл найден в переменной $ Hosts Отказ

Тогда нам нужен Playbook Это перечислены каждый роль Мы хотим развернуть и настроить на нашей машине.

# file: dotfiles.yml
- name: Set up local workstation
  hosts: local
  roles:
    - role: zsh
      tags:
        - zsh

В нашем примере мы установим ZSH роль.

Примечание : В нашем Bootstrap.sh Сценарий, эти файлы находятся в переменной $ Playbook. .

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

└ dotfiles
  - bootstrap.sh
  - dotfiles.yml
  - hosts
  └ roles
    └ zsh
      └ files
        - zshrc.link
      └ tasks
        - main.yml

Роль ZSH

Следующее будет наше ZSH Роль задач для:

  • Установка ZSH Отказ
  • Установка его как наша оболочка по умолчанию.
  • Установка OH-My-ZSH.
  • Связывание нашего .zshrc Файл конфигурации в нашу домашнюю папку.
--------
# file: roles/zsh/tasks/main.yml

- name: Installs zsh | apt
  become: yes
  become_user: root
  apt:
    name: zsh
    state: present

- name: Installs curl | apt
  become: yes
  become_user: root
  apt:
    name: curl
    state: present

- name: Sets zsh as default shell for my user | command
  become: yes
  become_user: root
  command: chsh -s /bin/zsh {{ lookup('env' 'USER') }}
  register: zsh_for_user
  failed_when: zsh_for_user.rc >= 1
  changed_when: zsh_for_user.rc == 0

- name: Checks for oh-my-zsh installation | stat
  stat:
    path: "{{ lookup('env', 'HOME') }}/.oh-my-zsh"
  register: oh_my_zsh_stat

- name: Installs oh-my-zsh | raw
  raw: 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"'
  when: not oh_my_zsh_stat.stat.exists

- name: Links .zshrc file | file
  file:
    src: "{{ lookup('env', 'ROOTDIR') }}/roles/zsh/files/zshrc.link"
    dest: "{{ lookup('env', 'HOME') }}/.zshrc"
    state: link
    force: yes

Запуск нашего сценария Bootstrap

Наконец, мы можем запустить наш скрипт:

~/dotfiles $ chmod +x bootstrap.sh
~/dotfiles $ sudo bootstrap.sh

Этот скрипт будет:

  • Установите Anbible.
  • Запустите наш PLAYBOOK, что означает установку и настройку ZSH Отказ

Вывод

Существует более крутые функции, которые вы можете использовать для настройки вашей системы с помощью Anbible. Вы можете проверить мою dotfiles Репозиторий Если вы хотите увидеть полностью рабочий пример.

Кроме того, если вы хотите узнать больше о Anisible, вы можете проверить Это удивительное учебное пособие Отказ

Я надеюсь, что вы найдете это полезно:)

Счастливое кодирование!

Покрытие изображения Джош Римеран

Оригинал: «https://dev.to/alexdesousa/managing-dotfiles-with-ansible-3kbg»