Заметки об использовании Ansible
Где он хорош
- Многократное развёртывание одноразовых виртуалок, когда нужно тестировать само развёртывание.
- Поддержание мелких настроек, таких как конфиг sshd,
.vimrc
,.bashrc
, gitlab_token, установка timezone на куче долгоживущих виртуалок в единообразном состоянии. - Обновление пакетов на куче виртуалок.
- Поддержание специфичных настроек ГРУПП виртуалок.
- “Инвентаризация” может и звучит глупо, но иногда inventory-файл облегчает поиск IP нужной виртуалки.
Почему он хорош
- Модульность на нескольких уровнях. Группы хостов, задачи, конкретные хосты.
- Никакого кода, только конфиги.
- Многое доступно из коробки.
- Большая часть модулей поддерживает “ленивый режим”, не меняет ничего, если не надо.
- Понравилась абстракция для service (enabled/restarted), не надо думать про конкретную систему управления сервисами
- Формат вывода отчётов о запуске:
PLAY RECAP *********************************************************************
xxx.yyy.14.200 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.180 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.111 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.131 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.144 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.145 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.155 : ok=14 changed=1 unreachable=0 failed=0
xxx.yyy.140.156 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.184 : ok=14 changed=8 unreachable=0 failed=0
xxx.yyy.140.199 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.210 : ok=14 changed=2 unreachable=0 failed=0
xxx.yyy.140.222 : ok=14 changed=2 unreachable=0 failed=0
xxx.yyy.140.223 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.224 : ok=0 changed=0 unreachable=1 failed=0
xxx.yyy.140.228 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.229 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.230 : ok=14 changed=1 unreachable=0 failed=0
xxx.yyy.140.240 : ok=14 changed=1 unreachable=0 failed=0
xxx.yyy.140.247 : ok=14 changed=8 unreachable=0 failed=0
xxx.yyy.140.248 : ok=14 changed=8 unreachable=0 failed=0
xxx.yyy.140.43 : ok=0 changed=0 unreachable=1 failed=0
xxx.yyy.140.50 : ok=0 changed=0 unreachable=1 failed=0
xxx.yyy.140.63 : ok=14 changed=1 unreachable=0 failed=0
xxx.yyy.140.78 : ok=0 changed=0 unreachable=1 failed=0
xxx.yyy.140.82 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.84 : ok=0 changed=0 unreachable=1 failed=0
xxx.yyy.140.85 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.140.99 : ok=14 changed=0 unreachable=0 failed=0
xxx.yyy.144.230 : ok=14 changed=8 unreachable=0 failed=0
xxx.yyy.90.10 : ok=0 changed=0 unreachable=1 failed=0
xxx.yyy.xxx.yyy. : ok=14 changed=8 unreachable=0 failed=0
xxx.yyy.1.140 : ok=0 changed=0 unreachable=1 failed=0
Где он плох
copy: src=xx dest=yyy
Часто опечатываюсь и пишу dst по аналогии с src, а не dest.
Пример базовой task для виртуальных машин на CentOS
- hosts: [centos]
tasks:
- yum: name=libselinux-python state=present
- copy: src=../templates/resolv.conf.j2 dest=/etc/resolv.conf
- copy: src=../templates/sshd_config.j2 dest=/etc/ssh/sshd_config
- copy: src=../templates/vimrc dest=/root/.vimrc
- template: src=../templates/bashrc dest=/root/.bashrc
- file: src=/usr/share/zoneinfo/Asia/Yekaterinburg dest=/etc/localtime state=link force=yes
- yum: name=vim state=present
- yum: name=epel-release state=present
- copy: src=../templates/epel.repo dest=/etc/yum.repos.d/epel.repo
- copy: src=../templates/venv dest=/usr/local/bin/venv
- yum: name=bash-completion state=present
- yum: name=ntp state=present
- yum: name=ntpdate state=present