Ansible
Jump to navigation
Jump to search
Ansible — yet another система управления конфигурациями.
Установка
epmi ansible ansible-shell
Настройка
Включить копирование файлов
Без этой опции возникали ошибки при копировании файлов. Указанная настройка полезна в целях совместимости с различными системами.
cd /etc/ansible diff ansible.cfg ansible.cfg.rpmnew 209c209 < scp_if_ssh = True --- > #scp_if_ssh = True
Указать список машин
Видимо, в /etc/ansible/hosts
[servers] server1 server2 server3 [clients] user1 user2 [test] testcpu
Запуск
- Посмотреть доступную память
ansible servers -m shell -a 'sudo dmidecode --type memory | egrep "(Size:*|Type: DDR*)" | egrep -v "(Installed S |Enabled|Not I)" | sort | uniq -c'
- Альтернативный вариант, используя модуль setup:
ansible -m setup -a 'filter=ansible_memtotal_mb' all:
- Установить nano
ansible test -m shell -a 'sudo epmu; sudo epmi nano'
Пример вывода
Вывод "цветастый": зеленый в случае успеха (exit 0), красный - в других случаях.
ansible pc -m shell -a 'sudo dmidecode --type memory | egrep "(Size:*|Type: DDR*)" | egrep -v "(Installed S |Enabled|Not I)" | sort | atlant | success | rc=0 >> 2 Installed Size: 512 MB (Double-bank Connection) 1 Maximum Memory Module Size: 1024 MB 1 Maximum Total Memory Size: 2048 MB 2 Size: 512 MB buh | FAILED => SSH Error: ssh: connect to host buh port 22: No route to host while connecting to 192.168.0.49:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
Задача установки пакетов
В нашем случае использование epm предпочтительно:
# ansible test -m shell -a 'epm Install vim'
В Ansible 2.0+ есть простой модуль package (позволяет поставить пакет и выбрать систему AUTO/apt/yum/...), но в AltLinux p7 версия 1.9.2 - тут такой модуль отсутствует.
Задача внесения правки в какой-либо конфиг
Используется модуль lineinfile, целевой файл задается параметром dest:
ansible testgroup -m lineinfile -a "dest=/tmp/testfile regexp='^PARAM=' line='PARAM=hohoho' "
Особенности применения команды:
- файл должен существовать, иначе - ошибка, иначе следует добавить, например, 'create=yes owner=anton group=users mode=0600';
- каталог с dest-файлом должен быть доступен на запись даже, если бекап не делается (по умолчанию, он не делается);
- бекапный файл имеет вид: testfile.2016-02-16@16:55:14~
- если строка в конфиге именно такая, какую мы хотим вписать, то результат операции - success, но изменений файла нет (указывается в выводе-отчете) и его бекап не делается;
- исправление вносится только в последнее вхождение regexp, а в случае его отсутствия или незадания - добавляется в конец файла.